mirror of
https://github.com/PodeCaradox/GalaxyQuest-SteamFrame.git
synced 2026-10-20 23:01:33 +02:00
A native port built on the Petari decompilation (previous commit): an HLE platform layer (OS, DVD, GX, audio, input, NAND) under the game's own code, an OpenXR presentation (a diorama around the player, a giant screen, the HUD and settings as compositor layers, SpaceWarp, dynamic resolution), Touch Plus controls, the tools that convert your own game files (tools/cook, which also takes the few pieces of data the game's executable holds from your sys/main.dol), and the port's changes to the decompilation (`git diff petari-base -- decomp`). README.md explains installing and building, docs/TECHNICAL.md how it works. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
86 lines
2.4 KiB
C++
86 lines
2.4 KiB
C++
#pragma once
|
|
|
|
#include "Game/LiveActor/LiveActor.hpp"
|
|
#include "Game/LiveActor/ShadowVolumeDrawer.hpp"
|
|
|
|
class ElectricRailPoint : public LiveActor {
|
|
public:
|
|
ElectricRailPoint(const char* name = "\x93\x64\x8c\x82\x83\x8c\x81\x5b\x83\x8b\x93\x5f");
|
|
|
|
virtual ~ElectricRailPoint();
|
|
virtual void init(const JMapInfoIter&);
|
|
virtual void attackSensor(HitSensor*, HitSensor*);
|
|
|
|
/* 0x8C */ bool mHasShadow;
|
|
/* 0x8D */ bool mIsActive;
|
|
};
|
|
|
|
class ElectricRailSeparator {
|
|
public:
|
|
ElectricRailSeparator();
|
|
|
|
void setup(const TVec3f&, const TVec3f&, const TVec3f&);
|
|
|
|
/* 0x00 */ TVec3f _0;
|
|
/* 0x0C */ TVec3f mSide;
|
|
/* 0x18 */ TVec3f mUp;
|
|
/* 0x24 */ TVec3f mFront;
|
|
/* 0x30 */ TVec3f _30;
|
|
};
|
|
|
|
class ElectricRailShadowDrawer : public ShadowVolumeDrawer {
|
|
public:
|
|
ElectricRailShadowDrawer(const LiveActor*, ElectricRailSeparator*, s32);
|
|
|
|
virtual void loadModelDrawMtx() const;
|
|
virtual void drawShape() const;
|
|
virtual bool isDraw() const;
|
|
|
|
void drawShadowVolumeShape(ElectricRailSeparator*, s32) const;
|
|
|
|
/* 0x1C */ const LiveActor* mHost;
|
|
/* 0x20 */ void* mDisplayListBuffer;
|
|
/* 0x24 */ u32 mDisplayListBufferSize;
|
|
};
|
|
|
|
class ElectricRail : public LiveActor {
|
|
public:
|
|
ElectricRail(const char*);
|
|
|
|
virtual void init(const JMapInfoIter&);
|
|
virtual void initAfterPlacement();
|
|
virtual void draw() const;
|
|
virtual void makeActorAppeared();
|
|
virtual void makeActorDead();
|
|
virtual void attackSensor(HitSensor*, HitSensor*);
|
|
|
|
void disappear();
|
|
void initMapToolInfo(const JMapInfoIter&);
|
|
void initSensor();
|
|
void initPoints();
|
|
void initSeparators();
|
|
void initDisplayList();
|
|
void drawRailGX(f32) const;
|
|
void drawPlane(f32, f32, f32, f32) const;
|
|
void drawPlaneGX(f32, f32, f32, f32) const;
|
|
void initShadow(const JMapInfoIter&);
|
|
void updateHitSensorPos();
|
|
void calcGravity(TVec3f*, const TVec3f&) const;
|
|
|
|
void exeDisappear();
|
|
void exeWait();
|
|
void exeDisappeared();
|
|
|
|
/* 0x8C */ ElectricRailPoint* mPoints;
|
|
/* 0x90 */ s32 mPointCount;
|
|
/* 0x94 */ TVec3f* _94;
|
|
/* 0x98 */ ElectricRailSeparator* mSeparators;
|
|
/* 0x9C */ s32 mSeparatorCount;
|
|
/* 0xA0 */ void* mDisplayListBuffer;
|
|
/* 0xA4 */ u32 mDisplayListSize;
|
|
/* 0xA8 */ s32 mRailHeight; // Obj_arg0
|
|
/* 0xAC */ f32 mEaseIn;
|
|
/* 0xB0 */ ElectricRailShadowDrawer* mShadowDrawer;
|
|
/* 0xB4 */ bool mIsCalcGravity; // Obj_arg4
|
|
};
|