mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-08 17:44:54 +00:00
Cleanup TLockedToken, initial CScriptEffect
This commit is contained in:
@@ -2005,7 +2005,7 @@ GetModulationColor__17CParticleElectricFv = .text:0x8008ED10; // type:function s
|
||||
GetGlobalScale__17CParticleElectricFv = .text:0x8008ED18; // type:function size:0x8 scope:global
|
||||
GetGlobalScale__11CElementGenCFv = .text:0x8008ED20; // type:function size:0x8 scope:global
|
||||
Think__13CScriptEffectFfR13CStateManager = .text:0x8008ED28; // type:function size:0x418 scope:global
|
||||
__ct__13CScriptEffectF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC9CVector3fUiUibbbbbffff = .text:0x8008F140; // type:function size:0x770 scope:global
|
||||
__ct__13CScriptEffectF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC9CVector3fUiUibbbbbffffbfffbbbRC16CLightParametersb = .text:0x8008F140; // type:function size:0x770 scope:global
|
||||
__dt__43TObjOwnerDerivedFromIObj<15CGenDescription>Fv = .text:0x8008F8B0; // type:function size:0x90 scope:global
|
||||
GetNewDerivedObject__43TObjOwnerDerivedFromIObj<15CGenDescription>FP15CGenDescription = .text:0x8008F940; // type:function size:0x90 scope:global
|
||||
__dt__48TObjOwnerDerivedFromIObj<20CElectricDescription>Fv = .text:0x8008F9D0; // type:function size:0x90 scope:global
|
||||
|
||||
@@ -2005,7 +2005,7 @@ GetModulationColor__17CParticleElectricFv = .text:0x8008ED8C; // type:function s
|
||||
GetGlobalScale__17CParticleElectricFv = .text:0x8008ED94; // type:function size:0x8 scope:global
|
||||
GetGlobalScale__11CElementGenCFv = .text:0x8008ED9C; // type:function size:0x8 scope:global
|
||||
Think__13CScriptEffectFfR13CStateManager = .text:0x8008EDA4; // type:function size:0x418 scope:global
|
||||
__ct__13CScriptEffectF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC9CVector3fUiUibbbbbffff = .text:0x8008F1BC; // type:function size:0x770 scope:global
|
||||
__ct__13CScriptEffectF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC9CVector3fUiUibbbbbffffbfffbbbRC16CLightParametersb = .text:0x8008F1BC; // type:function size:0x770 scope:global
|
||||
__dt__43TObjOwnerDerivedFromIObj<15CGenDescription>Fv = .text:0x8008F92C; // type:function size:0x90 scope:global
|
||||
GetNewDerivedObject__43TObjOwnerDerivedFromIObj<15CGenDescription>FP15CGenDescription = .text:0x8008F9BC; // type:function size:0x90 scope:global
|
||||
__dt__48TObjOwnerDerivedFromIObj<20CElectricDescription>Fv = .text:0x8008FA4C; // type:function size:0x90 scope:global
|
||||
|
||||
@@ -67,27 +67,25 @@ private:
|
||||
};
|
||||
|
||||
template < typename T >
|
||||
class TLockedToken {
|
||||
class TLockedToken : public TToken< T > {
|
||||
public:
|
||||
TLockedToken() {}
|
||||
TLockedToken(const CToken& token) : x0_token(token), x8_item(*x0_token) {}
|
||||
TLockedToken(const TLockedToken< T >& token) : x0_token(token), x8_item(*token) {
|
||||
x0_token.Lock();
|
||||
TLockedToken(T* item) : TToken< T >(item), x8_item(item) { CToken::Lock(); }
|
||||
TLockedToken(const CToken& token) : TToken< T >(token), x8_item(TToken< T >::GetT()) {}
|
||||
TLockedToken(const TLockedToken< T >& token) : TToken< T >(token), x8_item(*token) {
|
||||
CToken::Lock();
|
||||
}
|
||||
|
||||
TLockedToken& operator=(const TLockedToken< T >& token) {
|
||||
x0_token = token;
|
||||
TToken< T >::operator=(token);
|
||||
x8_item = *token;
|
||||
return *this;
|
||||
}
|
||||
|
||||
operator const TToken< T >&() const { return x0_token; }
|
||||
T* operator*() const { return x8_item; }
|
||||
T* operator->() const { return x8_item; }
|
||||
bool IsLoaded() const { return x0_token.IsLoaded(); }
|
||||
|
||||
private:
|
||||
TToken< T > x0_token;
|
||||
T* x8_item;
|
||||
};
|
||||
|
||||
|
||||
57
include/MetroidPrime/ScriptObjects/CScriptEffect.hpp
Normal file
57
include/MetroidPrime/ScriptObjects/CScriptEffect.hpp
Normal file
@@ -0,0 +1,57 @@
|
||||
#ifndef _CSCRIPTEFFECT
|
||||
#define _CSCRIPTEFFECT
|
||||
|
||||
#include "MetroidPrime/CActor.hpp"
|
||||
|
||||
class CLightParameters;
|
||||
class CElectricDescription;
|
||||
class CParticleElectric;
|
||||
class CGenDescription;
|
||||
class CElementGen;
|
||||
class CScriptEffect : public CActor {
|
||||
public:
|
||||
CScriptEffect(const TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
|
||||
const CTransform4f& xf, const CVector3f& scale, const CAssetId partId,
|
||||
const CAssetId elscId, const bool hotInThermal,
|
||||
const bool noTimerUnlessAreaOccluded, bool rebuildSystemsOnActivate,
|
||||
const bool active, const bool useRateInverseCamDist, float rateInverseCamDist,
|
||||
const float rateInverseCamDistRate, const float duration,
|
||||
const float durationResetWhileVisible, const bool useRateCamDistRange,
|
||||
const float rateCamDistRangeMin, const float rateCamDistRangeMax,
|
||||
const float rateCamDistRangeFarRate, const bool combatVisorVisible,
|
||||
const bool thermalVisorVisible, const bool xrayVisorVisible,
|
||||
const CLightParameters& lParms, const bool dieWhenSystemsDone);
|
||||
|
||||
private:
|
||||
TLockedToken< CElectricDescription > xe8_electricToken;
|
||||
rstl::single_ptr< CParticleElectric > xf4_electric;
|
||||
TLockedToken< CGenDescription > xf8_particleSystemToken;
|
||||
rstl::single_ptr< CElementGen > x104_particleSystem;
|
||||
TUniqueId x108_lightId;
|
||||
CAssetId x10c_partId;
|
||||
bool x110_24_enable : 1;
|
||||
bool x110_25_noTimerUnlessAreaOccluded : 1;
|
||||
bool x110_26_rebuildSystemsOnActivate : 1;
|
||||
bool x110_27_useRateInverseCamDist : 1;
|
||||
bool x110_28_combatVisorVisible : 1;
|
||||
bool x110_29_thermalVisorVisible : 1;
|
||||
bool x110_30_xrayVisorVisible : 1;
|
||||
bool x110_31_anyVisorVisible : 1;
|
||||
bool x111_24_useRateCamDistRange : 1;
|
||||
bool x111_25_dieWhenSystemsDone : 1;
|
||||
bool x111_26_canRender : 1;
|
||||
float x114_rateInverseCamDist;
|
||||
float x118_rateInverseCamDistSq;
|
||||
float x11c_rateInverseCamDistRate;
|
||||
float x120_rateCamDistRangeMin;
|
||||
float x124_rateCamDistRangeMax;
|
||||
float x128_rateCamDistRangeFarRate;
|
||||
float x12c_remTime;
|
||||
float x130_duration;
|
||||
float x134_durationResetWhileVisible;
|
||||
rstl::single_ptr< CActorLights > x138_actorLights;
|
||||
TUniqueId x13c_triggerId;
|
||||
float x140_destroyDelayTimer;
|
||||
};
|
||||
|
||||
#endif // _CSCRIPTEFFECT
|
||||
49
src/MetroidPrime/ScriptObjects/CScriptEffect.cpp
Normal file
49
src/MetroidPrime/ScriptObjects/CScriptEffect.cpp
Normal file
@@ -0,0 +1,49 @@
|
||||
#include "MetroidPrime/ScriptObjects/CScriptEffect.hpp"
|
||||
#include "Collision/CMaterialList.hpp"
|
||||
#include "Kyoto/Particles/CElectricDescription.hpp"
|
||||
#include "Kyoto/Particles/CGenDescription.hpp"
|
||||
#include "Kyoto/SObjectTag.hpp"
|
||||
#include "MetroidPrime/CActorParameters.hpp"
|
||||
#include "MetroidPrime/TCastTo.hpp"
|
||||
|
||||
CScriptEffect::CScriptEffect(const TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
|
||||
const CTransform4f& xf, const CVector3f& scale, const CAssetId partId,
|
||||
const CAssetId elscId, const bool hotInThermal,
|
||||
const bool noTimerUnlessAreaOccluded, bool rebuildSystemsOnActivate,
|
||||
const bool active, const bool useRateInverseCamDist,
|
||||
float rateInverseCamDist, const float rateInverseCamDistRate,
|
||||
const float duration, const float durationResetWhileVisible,
|
||||
const bool useRateCamDistRange, const float rateCamDistRangeMin,
|
||||
const float rateCamDistRangeMax, const float rateCamDistRangeFarRate,
|
||||
const bool combatVisorVisible, const bool thermalVisorVisible,
|
||||
const bool xrayVisorVisible, const CLightParameters& lParms,
|
||||
const bool dieWhenSystemsDone)
|
||||
: CActor(uid, active, name, info, xf, CModelData::CModelDataNull(), CMaterialList(kMT_NoStepLogic),
|
||||
CActorParameters::None().HotInThermal(hotInThermal), kInvalidUniqueId)
|
||||
, xe8_electricToken(nullptr)
|
||||
, xf8_particleSystemToken(nullptr)
|
||||
, x108_lightId(kInvalidUniqueId)
|
||||
, x10c_partId(partId)
|
||||
, x110_24_enable(active)
|
||||
, x110_25_noTimerUnlessAreaOccluded(noTimerUnlessAreaOccluded)
|
||||
, x110_26_rebuildSystemsOnActivate(rebuildSystemsOnActivate)
|
||||
, x110_27_useRateInverseCamDist(useRateCamDistRange)
|
||||
, x110_28_combatVisorVisible(combatVisorVisible)
|
||||
, x110_29_thermalVisorVisible(thermalVisorVisible)
|
||||
, x110_30_xrayVisorVisible(xrayVisorVisible)
|
||||
, x110_31_anyVisorVisible(xrayVisorVisible && thermalVisorVisible && combatVisorVisible)
|
||||
, x111_24_useRateCamDistRange(useRateCamDistRange)
|
||||
, x111_25_dieWhenSystemsDone(dieWhenSystemsDone)
|
||||
, x111_26_canRender(false)
|
||||
, x114_rateInverseCamDist(rateInverseCamDist)
|
||||
, x118_rateInverseCamDistSq(rateInverseCamDist * rateInverseCamDist)
|
||||
, x11c_rateInverseCamDistRate(rateInverseCamDistRate)
|
||||
, x120_rateCamDistRangeMin(rateCamDistRangeMin)
|
||||
, x124_rateCamDistRangeMax(rateCamDistRangeMax)
|
||||
, x128_rateCamDistRangeFarRate(rateCamDistRangeFarRate)
|
||||
, x12c_remTime(duration)
|
||||
, x130_duration(duration)
|
||||
, x134_durationResetWhileVisible(durationResetWhileVisible)
|
||||
, x138_actorLights(lParms.MakeActorLights().release())
|
||||
, x13c_triggerId(kInvalidUniqueId)
|
||||
, x140_destroyDelayTimer(0.f) {}
|
||||
Reference in New Issue
Block a user