Compare commits

...

4 Commits

Author SHA1 Message Date
Tristan 'Natrist' Cormier
65b2f6d1a3
Merge 4a102c6ace into 817cec99fe 2026-02-21 19:26:33 -05:00
fallenoak
817cec99fe
feat(ui): add CGCamera::Target
Some checks are pending
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:cl compiler_name:MSVC cxx:cl os:windows-latest system_name:Windows test_path:WhoaTest]) (push) Waiting to run
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:clang compiler_name:Clang cxx:clang++ os:macos-latest system_name:macOS test_path:WhoaTest]) (push) Waiting to run
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:gcc compiler_name:GCC cxx:g++ os:ubuntu-latest system_name:Linux test_path:WhoaTest]) (push) Waiting to run
2026-02-21 14:11:22 -06:00
fallenoak
6675586a29
feat(ui): add CSimpleCamera::Position 2026-02-21 14:07:33 -06:00
Tristan Cormier
4a102c6ace feat(glue): implement Script_ContestAccepted 2026-01-11 17:01:24 -05:00
7 changed files with 20 additions and 1 deletions

View File

@ -47,6 +47,7 @@ float CGlueMgr::m_aspect;
bool CGlueMgr::m_authenticated;
const CharacterSelectionDisplay* CGlueMgr::m_characterInfo;
int32_t CGlueMgr::m_clientKickReason;
int32_t CGlueMgr::m_contestAccepted = 1; // TODO
char CGlueMgr::m_currentScreen[64];
EffectDeath* CGlueMgr::m_deathEffect;
int32_t CGlueMgr::m_disconnectPending;

View File

@ -41,6 +41,7 @@ class CGlueMgr {
static bool m_authenticated;
static const CharacterSelectionDisplay* m_characterInfo;
static int32_t m_clientKickReason;
static int32_t m_contestAccepted;
static char m_currentScreen[];
static EffectDeath* m_deathEffect;
static int32_t m_disconnectPending;

View File

@ -228,7 +228,14 @@ int32_t Script_ShowContestNotice(lua_State* L) {
}
int32_t Script_ContestAccepted(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
if (CGlueMgr::m_contestAccepted) {
lua_pushnumber(L, 1.0);
}
else {
lua_pushnil(L);
}
return 1;
}
int32_t Script_AcceptContest(lua_State* L) {

View File

@ -80,6 +80,10 @@ void CGCamera::SetupWorldProjection(const CRect& projRect) {
this->SetGxProjectionAndView(projRect);
}
C3Vector CGCamera::Target() const {
return this->m_position + this->Forward();
}
C3Vector CGCamera::Up() const {
if (this->m_relativeTo) {
return this->CSimpleCamera::Up() * this->ParentToWorld();

View File

@ -27,6 +27,7 @@ class CGCamera : public CSimpleCamera {
CGCamera();
C33Matrix ParentToWorld() const;
void SetupWorldProjection(const CRect& projRect);
C3Vector Target() const;
private:
// Private member variables

View File

@ -84,6 +84,10 @@ C3Vector CSimpleCamera::Right() const {
return { this->m_facing.b0, this->m_facing.b1, this->m_facing.b2 };
}
const C3Vector& CSimpleCamera::Position() const {
return this->m_position;
}
void CSimpleCamera::SetFacing(const C3Vector& forward) {
BuildBillboardMatrix(forward, this->m_facing);
}

View File

@ -18,6 +18,7 @@ class CSimpleCamera {
// Public member functions
CSimpleCamera(float nearZ, float farZ, float fov);
CM2Scene* GetScene();
const C3Vector& Position() const;
void SetFacing(const C3Vector& forward);
void SetFacing(const C3Vector& forward, const C3Vector& up);
void SetFacing(float yaw, float pitch, float roll);