Match & link CScriptDebugCameraWaypoint

This commit is contained in:
Luke Street 2022-09-13 22:25:08 -04:00
parent 0cfb3d0aff
commit 0eefeac3c6
8 changed files with 50 additions and 9 deletions

View File

@ -72,12 +72,16 @@ static EMaterialTypes SolidMaterial = kMT_Solid;
class CMaterialList {
public:
CMaterialList() : value(0) {}
CMaterialList(EMaterialTypes material) : value(u64(1) << material) {}
CMaterialList(const EMaterialTypes& material) : value(0) { value |= u64(1) << material; }
// TODO
CMaterialList(const EMaterialTypes& m1, const EMaterialTypes& m2);
CMaterialList(const EMaterialTypes& m1, const EMaterialTypes& m2, const EMaterialTypes& m3);
CMaterialList(const EMaterialTypes& m1, const EMaterialTypes& m2, const EMaterialTypes& m3, const EMaterialTypes& m4);
CMaterialList(const EMaterialTypes& m1, const EMaterialTypes& m2, const EMaterialTypes& m3, const EMaterialTypes& m4,
const EMaterialTypes& m5);
CMaterialList(u64 value) : value(value) {}
void Add(EMaterialTypes material) {
value |= u64(1) << material;
}
void Add(EMaterialTypes material) { value |= u64(1) << material; }
const CMaterialList& Union(const CMaterialList& other) {
value |= other.value;
return *this;

View File

@ -211,6 +211,9 @@ public:
const CMaterialList& list, const CActorParameters& params, TUniqueId nextDrawNode);
~CActor();
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
void SetActive(bool active) override;
virtual void PreRender(CStateManager&, const CFrustumPlanes&);
virtual void AddToRenderer(const CFrustumPlanes&, const CStateManager&) const;
virtual void Render(const CStateManager&) const;
@ -226,10 +229,10 @@ public:
virtual CVector3f GetHomingPosition(const CStateManager&, float) const;
virtual CVector3f GetScanObjectIndicatorPosition(const CStateManager&) const;
virtual EWeaponCollisionResponseTypes GetCollisionResponseType(const CVector3f&, const CVector3f&, const CWeaponMode&,
EProjectileAttrib) const;
int /*EProjectileAttrib?*/) const;
virtual void FluidFXThink(EFluidState, CScriptWater&, CStateManager&);
virtual void OnScanStateChanged(EScanState, CStateManager&);
virtual CAABox GetSortingBounds(const CStateManager&) const;
virtual void OnScanStateChange(EScanState, CStateManager&);
virtual CAABox GetSortingBounds(const CTransform4f&) const;
virtual void DoUserAnimEvent(CStateManager& mgr, const CInt32POINode& node, EUserEventType type, float dt);
SAdvancementDeltas UpdateAnimation(float dt, CStateManager& mgr, bool advTree);

View File

@ -113,6 +113,8 @@ public:
bool ForceRenderUnsorted() const { return x58_26_renderUnsorted; }
bool NoSortThermal() const { return x58_27_noSortThermal; }
static CActorParameters None();
private:
CLightParameters x0_lightParams;
CScannableParameters x40_scanParams;

View File

@ -70,6 +70,7 @@ public:
bool GetSortThermal() const { return x14_25_sortThermal; }
void SetSortThermal(bool b) { x14_25_sortThermal = b; }
static CModelData CModelDataNull();
static EWhichModel GetRenderingModel(const CStateManager& mgr);
private:

View File

@ -0,0 +1,19 @@
#ifndef _CSCRIPTDEBUGCAMERAWAYPOINT_HPP
#define _CSCRIPTDEBUGCAMERAWAYPOINT_HPP
#include "types.h"
#include "MetroidPrime/CActor.hpp"
class CScriptDebugCameraWaypoint : public CActor {
public:
CScriptDebugCameraWaypoint(TUniqueId uid, const rstl::string& name, const CEntityInfo& info, const CTransform4f& xf, uint value);
~CScriptDebugCameraWaypoint() override;
void Accept(IVisitor& visitor) override;
private:
uint xe8_value;
};
#endif

View File

@ -172,7 +172,7 @@ METROIDPRIME :=\
$(BUILD_DIR)/asm/MetroidPrime/Enemies/CPuddleSpore.o\
$(BUILD_DIR)/asm/MetroidPrime/BodyState/CBSTaunt.o\
$(BUILD_DIR)/asm/MetroidPrime/CSortedLists.o\
$(BUILD_DIR)/asm/MetroidPrime/ScriptObjects/CScriptDebugCameraWaypoint.o\
$(BUILD_DIR)/src/MetroidPrime/ScriptObjects/CScriptDebugCameraWaypoint.o\
$(BUILD_DIR)/asm/MetroidPrime/ScriptObjects/CScriptSpiderBallAttractionSurface.o\
$(BUILD_DIR)/asm/MetroidPrime/BodyState/CBSScripted.o\
$(BUILD_DIR)/asm/MetroidPrime/Enemies/CPuddleToadGamma.o\

View File

@ -40,7 +40,7 @@ CActor::CActor(TUniqueId uid, bool active, const rstl::string& name, const CEnti
, x34_transform(xf)
, x64_modelData(mData.IsNull() ? nullptr : new CModelData(mData))
, x68_material(MakeActorMaterialList(list, params))
, x70_materialFilter(CMaterialFilter::MakeIncludeExclude(CMaterialList().Union(SolidMaterial), CMaterialList(0)))
, x70_materialFilter(CMaterialFilter::MakeIncludeExclude(CMaterialList(SolidMaterial), CMaterialList()))
, x88_sfxId(InvalidSfxId)
, x8c_loopingSfxHandle(0)
, x90_actorLights(mData.IsNull() ? nullptr : params.GetLighting().MakeActorLights().release())

View File

@ -0,0 +1,12 @@
#include "MetroidPrime/ScriptObjects/CScriptDebugCameraWaypoint.hpp"
#include "MetroidPrime/CActorParameters.hpp"
CScriptDebugCameraWaypoint::CScriptDebugCameraWaypoint(TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
const CTransform4f& xf, uint value)
: CActor(uid, true, name, info, xf, CModelData::CModelDataNull(), CMaterialList(kMT_NoStepLogic), CActorParameters::None(),
kInvalidUniqueId)
, xe8_value(value) {}
void CScriptDebugCameraWaypoint::Accept(IVisitor& visitor) { visitor.Visit(*this); }
CScriptDebugCameraWaypoint::~CScriptDebugCameraWaypoint() {}