mirror of https://github.com/AxioDL/metaforce.git
TCastTo implementation
This commit is contained in:
parent
3544cbd278
commit
e2c671e9b4
|
@ -384,7 +384,11 @@ bool FRME::Extract(const SpecBase &dataSpec,
|
|||
{
|
||||
CAMRInfo::OrthographicProjection* proj = static_cast<CAMRInfo::OrthographicProjection*>(info->projection.get());
|
||||
os.format("cam.type = 'ORTHO'\n"
|
||||
"cam.ortho_scale = %f\n", std::fabs(proj->right - proj->left));
|
||||
"cam.ortho_scale = %f\n"
|
||||
"cam.clip_start = %f\n"
|
||||
"cam.clip_end = %f\n",
|
||||
std::fabs(proj->right - proj->left),
|
||||
proj->znear, proj->zfar);
|
||||
}
|
||||
else if (info->projectionType == CAMRInfo::ProjectionType::Perspective)
|
||||
{
|
||||
|
|
|
@ -4,6 +4,62 @@
|
|||
namespace urde
|
||||
{
|
||||
|
||||
struct SDSPStreamCacheEntry
|
||||
{
|
||||
std::string x0_fileName;
|
||||
u32 x10_;
|
||||
u32 x14_;
|
||||
float x18_;
|
||||
float x1c_;
|
||||
u32 x20_;
|
||||
float x24_;
|
||||
bool x28_;
|
||||
};
|
||||
|
||||
/* Standard DSPADPCM header */
|
||||
struct dspadpcm_header
|
||||
{
|
||||
uint32_t x0_num_samples;
|
||||
uint32_t x4_num_nibbles;
|
||||
uint32_t x8_sample_rate;
|
||||
uint16_t xc_loop_flag;
|
||||
uint16_t xe_format; /* 0 for ADPCM */
|
||||
uint32_t x10_loop_start_nibble;
|
||||
uint32_t x14_loop_end_nibble;
|
||||
uint32_t x18_ca;
|
||||
int16_t x1c_coef[16];
|
||||
int16_t x3c_gain;
|
||||
int16_t x3e_ps;
|
||||
int16_t x40_hist1;
|
||||
int16_t x42_hist2;
|
||||
int16_t x44_loop_ps;
|
||||
int16_t x46_loop_hist1;
|
||||
int16_t x48_loop_hist2;
|
||||
uint16_t x4a_pad[11];
|
||||
};
|
||||
|
||||
struct CDSPStreamManager
|
||||
{
|
||||
dspadpcm_header x0_header;
|
||||
std::string x60_fileName; // arg1
|
||||
union
|
||||
{
|
||||
u8 dummy = 0;
|
||||
struct
|
||||
{
|
||||
bool x70_24_claimed : 1;
|
||||
bool x70_25_ : 1;
|
||||
u8 x70_26_ : 2;
|
||||
};
|
||||
};
|
||||
u8 x71_ = -1;
|
||||
u8 x72_ = -1;
|
||||
u8 x73_arg3;
|
||||
u8 x74_arg4;
|
||||
u32 x78_handleId; // arg2
|
||||
//DVDFileInfo x80_dvdHandle;
|
||||
};
|
||||
|
||||
struct SDSPStreamInfo
|
||||
{
|
||||
const char* x0_fileName;
|
||||
|
@ -13,6 +69,7 @@ struct SDSPStreamInfo
|
|||
u32 x10_;
|
||||
u32 x14_;
|
||||
u32 x18_adpcmOffset;
|
||||
|
||||
u32 x1c_;
|
||||
u32 x20_;
|
||||
u32 x24_adpcmCur;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${BOO_INCLUDE_DIR} ${LIBJPEG_INCLUDE_DIR}
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
|
||||
${BOO_INCLUDE_DIR} ${LIBJPEG_INCLUDE_DIR}
|
||||
${ZLIB_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/DataSpec ${JBUS_INCLUDE_DIR})
|
||||
|
||||
macro(runtime_add_list rel_path a_list)
|
||||
|
@ -29,6 +30,11 @@ else()
|
|||
list(APPEND PLAT_SRCS CMemoryCardSysNix.cpp)
|
||||
endif()
|
||||
|
||||
add_custom_command(OUTPUT TCastTo.hpp TCastTo.cpp DEPENDS MkCastTo.py
|
||||
COMMAND python ARGS ${CMAKE_CURRENT_SOURCE_DIR}/MkCastTo.py
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Generating cast functions")
|
||||
|
||||
add_subdirectory(MP1)
|
||||
add_subdirectory(MP2)
|
||||
add_subdirectory(MP3)
|
||||
|
@ -97,5 +103,7 @@ add_library(RuntimeCommon
|
|||
CGameHintInfo.hpp CGameHintInfo.cpp
|
||||
rstl.hpp rstl.cpp
|
||||
GameGlobalObjects.hpp GameGlobalObjects.cpp
|
||||
MkCastTo.py
|
||||
TCastTo.hpp TCastTo.cpp
|
||||
GCNTypes.hpp
|
||||
${PLAT_SRCS})
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "AutoMapper/CMapWorldInfo.hpp"
|
||||
#include "Particle/CGenDescription.hpp"
|
||||
#include "CMemoryCardSys.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
|
@ -143,7 +144,7 @@ CStateManager::CStateManager(const std::weak_ptr<CRelayTracker>& relayTracker,
|
|||
x90c_loaderFuncs[int(EScriptObjectType::ColorModulate)] = ScriptLoader::LoadColorModulate;
|
||||
x90c_loaderFuncs[int(EScriptObjectType::ThardusRockProjectile)] = ScriptLoader::LoadThardusRockProjectile;
|
||||
x90c_loaderFuncs[int(EScriptObjectType::Midi)] = ScriptLoader::LoadMidi;
|
||||
x90c_loaderFuncs[int(EScriptObjectType::StreamedAudio)] = ScriptLoader::LoadStreamedAudio;
|
||||
x90c_loaderFuncs[int(EScriptObjectType::StreamedAudio)] = ScriptLoader::LoadStreamedMusic;
|
||||
x90c_loaderFuncs[int(EScriptObjectType::WorldTeleporterToo)] = ScriptLoader::LoadWorldTeleporter;
|
||||
x90c_loaderFuncs[int(EScriptObjectType::Repulsor)] = ScriptLoader::LoadRepulsor;
|
||||
x90c_loaderFuncs[int(EScriptObjectType::GunTurret)] = ScriptLoader::LoadGunTurret;
|
||||
|
@ -330,7 +331,7 @@ void CStateManager::TouchPlayerActor()
|
|||
return;
|
||||
|
||||
#if 0
|
||||
CScriptPlayerActor* spa = dynamic_cast<CScriptPlayerActor*>(GetObjectById(xf6c_playerActor));
|
||||
CScriptPlayerActor* spa = TCastToPtr<CScriptPlayerActor>(GetObjectById(xf6c_playerActor));
|
||||
if (spa)
|
||||
spa->TouchModels();
|
||||
#endif
|
||||
|
@ -528,12 +529,12 @@ bool CStateManager::ApplyLocalDamage(const zeus::CVector3f& vec1, const zeus::CV
|
|||
|
||||
float f30 = dt;
|
||||
|
||||
CPlayer* player = dynamic_cast<CPlayer*>(&actor);
|
||||
CAi* ai = dynamic_cast<CAi*>(&actor);
|
||||
CPlayer* player = TCastToPtr<CPlayer>(&actor);
|
||||
CAi* ai = TCastToPtr<CAi>(&actor);
|
||||
#if 0
|
||||
CDestroyableRock* dRock = nullptr;
|
||||
if (!ai)
|
||||
dynamic_cast<CDestroyableRock*>(&actor);
|
||||
TCastToPtr<CDestroyableRock>(&actor);
|
||||
#endif
|
||||
|
||||
if (player)
|
||||
|
@ -620,7 +621,7 @@ void CStateManager::InitializeState(ResId mlvlId, TAreaId aid, ResId mreaId)
|
|||
|
||||
for (CEntity* ent : *x80c_allObjs)
|
||||
{
|
||||
CScriptSpawnPoint* sp = dynamic_cast<CScriptSpawnPoint*>(ent);
|
||||
CScriptSpawnPoint* sp = TCastToPtr<CScriptSpawnPoint>(ent);
|
||||
if (sp && sp->x30_24_active && sp->FirstSpawn())
|
||||
{
|
||||
const zeus::CTransform& xf = sp->GetTransform();
|
||||
|
|
|
@ -22,6 +22,16 @@ public:
|
|||
{
|
||||
return CompareCaseInsensitive(a.c_str(), b.c_str());
|
||||
}
|
||||
|
||||
static int IndexOfSubstring(const std::string& haystack, const std::string& needle)
|
||||
{
|
||||
std::string str = haystack;
|
||||
std::transform(str.begin(), str.end(), str.begin(), tolower);
|
||||
std::string::size_type s = str.find(needle);
|
||||
if (s == std::string::npos)
|
||||
return -1;
|
||||
return s;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
#include "GameGlobalObjects.hpp"
|
||||
#include "Graphics/CGraphics.hpp"
|
||||
#include "CObjectList.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
float CCameraManager::sAspect = 1.42f;
|
||||
|
@ -115,7 +117,7 @@ void CCameraManager::Update(float dt, CStateManager& stateMgr)
|
|||
|
||||
if (x74_fluidCounter)
|
||||
{
|
||||
const CScriptWater* water = dynamic_cast<const CScriptWater*>(stateMgr.GetObjectById(x78_fluidId));
|
||||
const CScriptWater* water = TCastToConstPtr<CScriptWater>(stateMgr.GetObjectById(x78_fluidId));
|
||||
if (water)
|
||||
{
|
||||
// TODO: Finish
|
||||
|
@ -167,7 +169,7 @@ void CCameraManager::ThinkCameras(float dt, CStateManager& mgr)
|
|||
|
||||
for (CEntity* ent : gcList)
|
||||
{
|
||||
CGameCamera* gc = dynamic_cast<CGameCamera*>(ent);
|
||||
CGameCamera* gc = TCastToPtr<CGameCamera>(ent);
|
||||
if (gc)
|
||||
{
|
||||
gc->Think(dt, mgr);
|
||||
|
@ -179,7 +181,7 @@ void CCameraManager::ThinkCameras(float dt, CStateManager& mgr)
|
|||
return;
|
||||
|
||||
TUniqueId camId = GetLastCameraId();
|
||||
const CGameCamera* cam = dynamic_cast<const CGameCamera*>(mgr.GetObjectById(camId));
|
||||
const CGameCamera* cam = TCastToConstPtr<CGameCamera>(mgr.GetObjectById(camId));
|
||||
|
||||
if (cam)
|
||||
x3bc_curFov = cam->GetFov();
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "CCinematicCamera.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -10,6 +11,11 @@ CCinematicCamera::CCinematicCamera(TUniqueId uid, const std::string& name, const
|
|||
{
|
||||
}
|
||||
|
||||
void CCinematicCamera::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CCinematicCamera::ProcessInput(const CFinalInput&, CStateManager& mgr) {}
|
||||
|
||||
void CCinematicCamera::Reset(const zeus::CTransform&, CStateManager& mgr) {}
|
||||
|
|
|
@ -12,6 +12,7 @@ public:
|
|||
CCinematicCamera(TUniqueId, const std::string& name, const CEntityInfo& info,
|
||||
const zeus::CTransform& xf, bool, float, float, float, float, float, u32);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void ProcessInput(const CFinalInput&, CStateManager& mgr);
|
||||
void Reset(const zeus::CTransform&, CStateManager& mgr);
|
||||
};
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include "World/CPlayer.hpp"
|
||||
#include "World/CPlayerCameraBob.hpp"
|
||||
#include "World/CScriptGrapplePoint.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
#include <math.h>
|
||||
|
||||
namespace urde
|
||||
|
@ -97,7 +98,7 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
|
|||
|
||||
if (player->x304_ == 4 || player->x304_ == 1)
|
||||
{
|
||||
const CActor* act = dynamic_cast<const CActor*>(mgr.GetObjectById(player->x310_grapplePointId));
|
||||
const CActor* act = TCastToConstPtr<CActor>(mgr.GetObjectById(player->x310_grapplePointId));
|
||||
if (act && act->GetMaterialList().Intersection(CMaterialList(EMaterialTypes::Lava)) != 0)
|
||||
{
|
||||
zeus::CVector3f v = player->x318_ - eyePos;
|
||||
|
@ -162,7 +163,7 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
|
|||
qGun = zeus::CQuaternion::lookAt(rVec, gunFrontVec, scaledDt * clampedAngle);
|
||||
|
||||
const CScriptGrapplePoint* gPoint =
|
||||
dynamic_cast<const CScriptGrapplePoint*>(mgr.GetObjectById(player->x310_grapplePointId));
|
||||
TCastToConstPtr<CScriptGrapplePoint>(mgr.GetObjectById(player->x310_grapplePointId));
|
||||
if (gPoint && player->x29c_ > 0.f)
|
||||
{
|
||||
gunFrontVec = x190_gunFollowXf.frontVector();
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "World/CScriptAiJumpPoint.hpp"
|
||||
#include "World/CPatterned.hpp"
|
||||
#include "Camera/CGameCamera.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -15,7 +16,7 @@ CActorList::CActorList()
|
|||
|
||||
bool CActorList::IsQualified(const CEntity& ent)
|
||||
{
|
||||
return static_cast<const CActor*>(&ent) != nullptr;
|
||||
return TCastToConstPtr<CActor>(ent);
|
||||
}
|
||||
|
||||
CPhysicsActorList::CPhysicsActorList()
|
||||
|
@ -23,7 +24,7 @@ CPhysicsActorList::CPhysicsActorList()
|
|||
|
||||
bool CPhysicsActorList::IsQualified(const CEntity& ent)
|
||||
{
|
||||
return static_cast<const CPhysicsActor*>(&ent) != nullptr;
|
||||
return TCastToConstPtr<CPhysicsActor>(ent);
|
||||
}
|
||||
|
||||
CGameCameraList::CGameCameraList()
|
||||
|
@ -31,7 +32,7 @@ CGameCameraList::CGameCameraList()
|
|||
|
||||
bool CGameCameraList::IsQualified(const CEntity& ent)
|
||||
{
|
||||
return static_cast<const CGameCamera*>(&ent) != nullptr;
|
||||
return TCastToConstPtr<CGameCamera>(ent);
|
||||
}
|
||||
|
||||
CListeningAiList::CListeningAiList()
|
||||
|
@ -39,7 +40,7 @@ CListeningAiList::CListeningAiList()
|
|||
|
||||
bool CListeningAiList::IsQualified(const CEntity& ent)
|
||||
{
|
||||
return (static_cast<const CPatterned*>(&ent) != nullptr);
|
||||
return TCastToConstPtr<CPatterned>(ent);
|
||||
}
|
||||
|
||||
CAiWaypointList::CAiWaypointList()
|
||||
|
@ -47,8 +48,8 @@ CAiWaypointList::CAiWaypointList()
|
|||
|
||||
bool CAiWaypointList::IsQualified(const CEntity& ent)
|
||||
{
|
||||
return static_cast<const CScriptCoverPoint*>(&ent) != nullptr ||
|
||||
static_cast<const CScriptAiJumpPoint*>(&ent) != nullptr;
|
||||
return TCastToConstPtr<CScriptCoverPoint>(ent) ||
|
||||
TCastToConstPtr<CScriptAiJumpPoint>(ent);
|
||||
}
|
||||
|
||||
CPlatformAndDoorList::CPlatformAndDoorList()
|
||||
|
@ -61,12 +62,12 @@ bool CPlatformAndDoorList::IsQualified(const CEntity& ent)
|
|||
|
||||
bool CPlatformAndDoorList::IsDoor(const CEntity& ent)
|
||||
{
|
||||
return static_cast<const CScriptDoor*>(&ent) != nullptr;
|
||||
return TCastToConstPtr<CScriptDoor>(ent);
|
||||
}
|
||||
|
||||
bool CPlatformAndDoorList::IsPlatform(const CEntity& ent)
|
||||
{
|
||||
return static_cast<const CScriptPlatform*>(&ent) != nullptr;
|
||||
return TCastToConstPtr<CScriptPlatform>(ent);
|
||||
}
|
||||
|
||||
CGameLightList::CGameLightList()
|
||||
|
@ -74,7 +75,7 @@ CGameLightList::CGameLightList()
|
|||
|
||||
bool CGameLightList::IsQualified(const CEntity& lt)
|
||||
{
|
||||
return static_cast<const CGameLight*>(<) != nullptr;
|
||||
return TCastToConstPtr<CGameLight>(lt);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "CBeetle.hpp"
|
||||
#include "World/CDamageInfo.hpp"
|
||||
#include "Character/CCharLayoutInfo.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -17,5 +18,10 @@ CBeetle::CBeetle(TUniqueId uid, const std::string& name, const CEntityInfo& info
|
|||
|
||||
}
|
||||
|
||||
void CBeetle::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,8 @@ public:
|
|||
const CPatternedInfo&, CPatterned::EFlavorType,EEntranceType, const CDamageInfo &, const CDamageVulnerability&,
|
||||
const zeus::CVector3f&, float, float, float, const CDamageVulnerability&, const CActorParameters&,
|
||||
const rstl::optional_object<CStaticRes>);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "CNewIntroBoss.hpp"
|
||||
#include "Character/CCharLayoutInfo.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -15,5 +16,10 @@ CNewIntroBoss::CNewIntroBoss(TUniqueId uid, const std::string& name, const CEnti
|
|||
{
|
||||
}
|
||||
|
||||
void CNewIntroBoss::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,8 @@ public:
|
|||
const zeus::CTransform& xf, CModelData&& mData, const CPatternedInfo& pInfo,
|
||||
const CActorParameters& actParms, float, u32, const CDamageInfo& dInfo,
|
||||
u32, u32, u32, u32);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "CSpacePirate.hpp"
|
||||
#include "Character/CCharLayoutInfo.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -12,5 +13,11 @@ CSpacePirate::CSpacePirate(TUniqueId uid, const std::string& name, const CEntity
|
|||
EColliderType::One, EBodyType::One, aParams, true)
|
||||
{
|
||||
}
|
||||
|
||||
void CSpacePirate::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,8 @@ class CSpacePirate : public CPatterned
|
|||
public:
|
||||
CSpacePirate(TUniqueId, const std::string&, const CEntityInfo&, const zeus::CTransform&, CModelData&&,
|
||||
const CActorParameters&, const CPatternedInfo&, CInputStream&, u32);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "CWarWasp.hpp"
|
||||
#include "Character/CCharLayoutInfo.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -14,6 +15,12 @@ CWarWasp::CWarWasp(TUniqueId uid, const std::string& name, const CEntityInfo& in
|
|||
{
|
||||
|
||||
}
|
||||
|
||||
void CWarWasp::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@ public:
|
|||
const zeus::CTransform& xf, CModelData&& mData, const CPatternedInfo& pInfo,
|
||||
CPatterned::EFlavorType flavor, CPatterned::EColliderType, const CDamageInfo& dInfo1, const CActorParameters&,
|
||||
ResId weapon, const CDamageInfo& dInfo2, ResId particle, u32 w3);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,180 @@
|
|||
"Generates TCastTo source files for constexpr-enabled CEntity casts"
|
||||
|
||||
class Namespace:
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
|
||||
class EndNamespace:
|
||||
pass
|
||||
|
||||
CENTITY_TYPES = (
|
||||
('CActor', 'World/CActor.hpp'),
|
||||
('CPhysicsActor', 'World/CPhysicsActor.hpp'),
|
||||
('CGameCamera', 'Camera/CGameCamera.hpp'),
|
||||
('CPatterned', 'World/CPatterned.hpp'),
|
||||
('CGameLight', 'World/CGameLight.hpp'),
|
||||
('CAi', 'World/CAi.hpp'),
|
||||
('CCinematicCamera', 'Camera/CCinematicCamera.hpp'),
|
||||
('CScriptHUDMemo', 'World/CScriptHUDMemo.hpp'),
|
||||
('CScriptCameraHint', 'World/CScriptCameraHint.hpp'),
|
||||
('CScriptPickup', 'World/CScriptPickup.hpp'),
|
||||
('CScriptRandomRelay', 'World/CScriptRandomRelay.hpp'),
|
||||
('CScriptMemoryRelay', 'World/CScriptMemoryRelay.hpp'),
|
||||
('CScriptRelay', 'World/CScriptRelay.hpp'),
|
||||
('CScriptCameraWaypoint', 'World/CScriptCameraWaypoint.hpp'),
|
||||
('CScriptCoverPoint', 'World/CScriptCoverPoint.hpp'),
|
||||
('CScriptSpawnPoint', 'World/CScriptSpawnPoint.hpp'),
|
||||
('CRepulsor', 'World/CRepulsor.hpp'),
|
||||
('CScriptCameraHintTrigger', 'World/CScriptCameraHintTrigger.hpp'),
|
||||
('CScriptSwitch', 'World/CScriptSwitch.hpp'),
|
||||
('CScriptAiJumpPoint', 'World/CScriptAiJumpPoint.hpp'),
|
||||
('CScriptColorModulate', 'World/CScriptColorModulate.hpp'),
|
||||
('CScriptCameraPitchVolume', 'World/CScriptCameraPitchVolume.hpp'),
|
||||
('CPlayer', 'World/CPlayer.hpp'),
|
||||
('CScriptActor', 'World/CScriptActor.hpp'),
|
||||
('CScriptWaypoint', 'World/CScriptWaypoint.hpp'),
|
||||
('CScriptDoor', 'World/CScriptDoor.hpp'),
|
||||
('CScriptActorKeyframe', 'World/CScriptActorKeyframe.hpp'),
|
||||
('CScriptTrigger', 'World/CScriptTrigger.hpp'),
|
||||
('CScriptSound', 'World/CScriptSound.hpp'),
|
||||
('CPlasmaProjectile', 'Weapon/CPlasmaProjectile.hpp'),
|
||||
('CScriptCounter', 'World/CScriptCounter.hpp'),
|
||||
('CScriptBeam', 'World/CScriptBeam.hpp'),
|
||||
('CScriptStreamedMusic', 'World/CScriptStreamedMusic.hpp'),
|
||||
('CScriptTimer', 'World/CScriptTimer.hpp'),
|
||||
('CScriptEffect', 'World/CScriptEffect.hpp'),
|
||||
('CScriptPlatform', 'World/CScriptPlatform.hpp'),
|
||||
('CScriptGrapplePoint', 'World/CScriptGrapplePoint.hpp'),
|
||||
('CScriptGenerator', 'World/CScriptGenerator.hpp'),
|
||||
('CScriptShadowProjector', 'World/CScriptShadowProjector.hpp'),
|
||||
('CScriptDock', 'World/CScriptDock.hpp'),
|
||||
('CScriptAreaAttributes', 'World/CScriptAreaAttributes.hpp'),
|
||||
('CScriptPickupGenerator', 'World/CScriptPickupGenerator.hpp'),
|
||||
('CScriptPointOfInterest', 'World/CScriptPointOfInterest.hpp'),
|
||||
('CScriptCameraFilterKeyframe', 'World/CScriptCameraFilterKeyframe.hpp'),
|
||||
('CScriptCameraBlurKeyframe', 'World/CScriptCameraBlurKeyframe.hpp'),
|
||||
('CScriptActorRotate', 'World/CScriptActorRotate.hpp'),
|
||||
('CScriptDistanceFog', 'World/CScriptDistanceFog.hpp'),
|
||||
('CScriptDamageableTrigger', 'World/CScriptDamageableTrigger.hpp'),
|
||||
('CScriptDockAreaChange', 'World/CScriptDockAreaChange.hpp'),
|
||||
('CScriptSpecialFunction', 'World/CScriptSpecialFunction.hpp'),
|
||||
('CScriptDebris', 'World/CScriptDebris.hpp'),
|
||||
|
||||
Namespace('MP1'),
|
||||
('CBeetle', 'MP1/CBeetle.hpp', 'MP1'),
|
||||
('CWarWasp', 'MP1/CWarWasp.hpp', 'MP1'),
|
||||
('CSpacePirate', 'MP1/CSpacePirate.hpp', 'MP1'),
|
||||
('CNewIntroBoss', 'MP1/CNewIntroBoss.hpp', 'MP1'),
|
||||
EndNamespace(),
|
||||
)
|
||||
|
||||
def getqualified(tp):
|
||||
if len(tp) >= 3:
|
||||
return tp[2] + '::' + tp[0]
|
||||
else:
|
||||
return tp[0]
|
||||
|
||||
headerf = open('TCastTo.hpp', 'w')
|
||||
sourcef = open('TCastTo.cpp', 'w')
|
||||
|
||||
headerf.write('''#ifndef __TCASTTO_HPP__
|
||||
#define __TCASTTO_HPP__
|
||||
|
||||
namespace urde
|
||||
{
|
||||
class CEntity;
|
||||
''')
|
||||
|
||||
for tp in CENTITY_TYPES:
|
||||
if type(tp) == tuple:
|
||||
headerf.write('class %s;\n' % tp[0])
|
||||
elif isinstance(tp, Namespace):
|
||||
headerf.write('namespace %s\n{\n' % tp.name)
|
||||
elif isinstance(tp, EndNamespace):
|
||||
headerf.write('}\n')
|
||||
|
||||
headerf.write('\nclass IVisitor\n{\npublic:\n')
|
||||
|
||||
for tp in CENTITY_TYPES:
|
||||
if type(tp) == tuple:
|
||||
headerf.write(' virtual void Visit(%s* p)=0;\n' % getqualified(tp))
|
||||
|
||||
headerf.write('''};
|
||||
|
||||
template <class T>
|
||||
class TCastToPtr : public IVisitor
|
||||
{
|
||||
protected:
|
||||
T* ptr = nullptr;
|
||||
public:
|
||||
TCastToPtr(CEntity* p);
|
||||
TCastToPtr(CEntity& p);
|
||||
|
||||
''')
|
||||
|
||||
for tp in CENTITY_TYPES:
|
||||
if type(tp) == tuple:
|
||||
headerf.write(' void Visit(%s* p);\n' % getqualified(tp))
|
||||
|
||||
headerf.write('''
|
||||
T* GetPtr() const { return ptr; }
|
||||
operator T*() const { return GetPtr(); }
|
||||
T* operator->() const { return GetPtr(); }
|
||||
operator bool() const { return ptr != nullptr; }
|
||||
};
|
||||
|
||||
template <class T>
|
||||
class TCastToConstPtr : TCastToPtr<T>
|
||||
{
|
||||
public:
|
||||
TCastToConstPtr(const CEntity* p) : TCastToPtr<T>(const_cast<CEntity*>(p)) {}
|
||||
TCastToConstPtr(const CEntity& p) : TCastToPtr<T>(const_cast<CEntity&>(p)) {}
|
||||
const T* GetPtr() const { return TCastToPtr<T>::ptr; }
|
||||
operator const T*() const { return GetPtr(); }
|
||||
const T* operator->() const { return GetPtr(); }
|
||||
operator bool() const { return TCastToPtr<T>::ptr != nullptr; }
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // __TCASTTO_HPP__
|
||||
''')
|
||||
|
||||
headerf.close()
|
||||
|
||||
sourcef.write('#include "TCastTo.hpp"\n\n')
|
||||
|
||||
for tp in CENTITY_TYPES:
|
||||
if type(tp) == tuple:
|
||||
sourcef.write('#include "%s"\n' % tp[1])
|
||||
|
||||
sourcef.write('''
|
||||
namespace urde
|
||||
{
|
||||
|
||||
template <class T>
|
||||
TCastToPtr<T>::TCastToPtr(CEntity* p) { p->Accept(*this); }
|
||||
|
||||
template <class T>
|
||||
TCastToPtr<T>::TCastToPtr(CEntity& p) { p.Accept(*this); }
|
||||
|
||||
''')
|
||||
|
||||
for tp in CENTITY_TYPES:
|
||||
if type(tp) == tuple:
|
||||
qual = getqualified(tp)
|
||||
sourcef.write('''template <class T>
|
||||
void TCastToPtr<T>::Visit(%s* p)
|
||||
{
|
||||
ptr = reinterpret_cast<T*>(std::is_convertible<%s*, T*>::value ? p : nullptr);
|
||||
}
|
||||
|
||||
''' % (qual, qual))
|
||||
|
||||
for tp in CENTITY_TYPES:
|
||||
if type(tp) == tuple:
|
||||
sourcef.write('template class TCastToPtr<%s>;\n' % getqualified(tp))
|
||||
|
||||
sourcef.write('\n}\n')
|
||||
|
||||
sourcef.close()
|
|
@ -1,4 +1,5 @@
|
|||
#include "CPlasmaProjectile.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -10,4 +11,10 @@ CPlasmaProjectile::CPlasmaProjectile(const TToken<CWeaponDescription>& wDesc, co
|
|||
: CBeamProjectile(wDesc, name, wType, xf, bInfo.x18_, bInfo.x1c_, bInfo.x38_, matType, dInfo, owner, aid, uid, w2, b1)
|
||||
{
|
||||
}
|
||||
|
||||
void CPlasmaProjectile::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,6 +13,8 @@ public:
|
|||
CPlasmaProjectile(const TToken<CWeaponDescription>&, const std::string&, EWeaponType, const CBeamInfo&,
|
||||
const zeus::CTransform&, EMaterialTypes, const CDamageInfo&, TUniqueId, TAreaId, TUniqueId, u32,
|
||||
bool, u32);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "CStateManager.hpp"
|
||||
#include "Collision/CMaterialList.hpp"
|
||||
#include "Audio/CSfxManager.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -70,7 +71,7 @@ void CActor::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateMana
|
|||
if (conn.x0_state != EScriptObjectState::DFST)
|
||||
continue;
|
||||
|
||||
const CActor* act = dynamic_cast<const CActor*>(mgr.GetObjectById(mgr.GetIdForScript(conn.x8_objId)));
|
||||
const CActor* act = TCastToConstPtr<CActor>(mgr.GetObjectById(mgr.GetIdForScript(conn.x8_objId)));
|
||||
if (act && xc6_ == kInvalidUniqueId)
|
||||
xc6_ = act->GetUniqueId();
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
namespace urde
|
||||
{
|
||||
class CStateManager;
|
||||
class IVisitor;
|
||||
|
||||
struct SConnection
|
||||
{
|
||||
|
@ -53,8 +54,9 @@ protected:
|
|||
|
||||
public:
|
||||
static const std::vector<SConnection> NullConnectionList;
|
||||
virtual ~CEntity() {}
|
||||
virtual ~CEntity() = default;
|
||||
CEntity(TUniqueId uid, const CEntityInfo& info, bool active, const std::string& name);
|
||||
virtual void Accept(IVisitor& visitor)=0;
|
||||
virtual void PreThink(float, CStateManager&) {}
|
||||
virtual void Think(float, CStateManager&) {}
|
||||
virtual void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr);
|
||||
|
|
|
@ -72,6 +72,7 @@ set(WORLD_SOURCES
|
|||
CScriptBeam.hpp CScriptBeam.cpp
|
||||
CScriptMazeNode.hpp CScriptMazeNode.cpp
|
||||
CScriptShadowProjector.hpp CScriptShadowProjector.cpp
|
||||
CScriptStreamedMusic.hpp CScriptStreamedMusic.cpp
|
||||
CGrappleParameters.hpp
|
||||
CActorParameters.hpp
|
||||
CLightParameters.hpp
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "CSimplePool.hpp"
|
||||
#include "GameGlobalObjects.hpp"
|
||||
#include "Particle/CGenDescription.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -69,7 +70,10 @@ bool CPlayer::WasDamaged() const { return false; }
|
|||
|
||||
void CPlayer::TakeDamage(bool, const zeus::CVector3f&, float, EWeaponType, CStateManager& mgr) {}
|
||||
|
||||
void CPlayer::Accept(IVisitor& visitor) {}
|
||||
void CPlayer::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
CHealthInfo* CPlayer::HealthInfo(CStateManager& mgr) { return nullptr; }
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "CRepulsor.hpp"
|
||||
#include "CActorParameters.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -11,6 +12,11 @@ CRepulsor::CRepulsor(TUniqueId uid, bool active, const std::string& name, const
|
|||
{
|
||||
}
|
||||
|
||||
void CRepulsor::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CRepulsor::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr)
|
||||
{
|
||||
CActor::AcceptScriptMsg(msg, objId, stateMgr);
|
||||
|
|
|
@ -11,6 +11,7 @@ class CRepulsor : public CActor
|
|||
public:
|
||||
CRepulsor(TUniqueId, bool, const std::string&, const CEntityInfo&, const zeus::CVector3f&, float);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&);
|
||||
|
||||
float GetAffectRadius() const { return xe8_affectRadius; }
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "CScriptActor.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -10,4 +11,10 @@ CScriptActor::CScriptActor(TUniqueId uid, const std::string& name, const CEntity
|
|||
: CPhysicsActor(uid, active, name, info, xf, std::move(mData), matList, aabb, SMoverData(a), actParms, 0.3f, 0.1f)
|
||||
{
|
||||
}
|
||||
|
||||
void CScriptActor::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ public:
|
|||
CScriptActor(TUniqueId, const std::string&, const CEntityInfo&, const zeus::CTransform&, CModelData&&,
|
||||
const zeus::CAABox& aabb, float, float, const CMaterialList& matList, const CHealthInfo&,
|
||||
const CDamageVulnerability&, const CActorParameters&, bool, bool, u32, float, bool, bool, bool, bool);
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "CScriptActorKeyframe.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -15,6 +16,11 @@ CScriptActorKeyframe::CScriptActorKeyframe(TUniqueId uid, const std::string& nam
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptActorKeyframe::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptActorKeyframe::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr) {}
|
||||
|
||||
void CScriptActorKeyframe::Think(float dt, CStateManager& mgr)
|
||||
|
|
|
@ -29,6 +29,7 @@ public:
|
|||
CScriptActorKeyframe(TUniqueId uid, const std::string& name, const CEntityInfo& info, s32 w1, bool b1, float f1,
|
||||
bool b2, u32 w2, bool active, float f2);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr);
|
||||
void Think(float, CStateManager&);
|
||||
void UpdateEntity(TUniqueId, CStateManager&);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "CScriptActorRotate.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -7,4 +8,10 @@ CScriptActorRotate::CScriptActorRotate(TUniqueId uid, const std::string& name, c
|
|||
: CEntity(uid, info, active, name)
|
||||
{
|
||||
}
|
||||
|
||||
void CScriptActorRotate::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -27,6 +27,8 @@ class CScriptActorRotate : public CEntity
|
|||
public:
|
||||
CScriptActorRotate(TUniqueId, const std::string&, const CEntityInfo&, const zeus::CVector3f&, float, bool, bool,
|
||||
bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "CActorParameters.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
#include "CScriptWaypoint.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -14,6 +15,11 @@ CScriptAiJumpPoint::CScriptAiJumpPoint(TUniqueId uid, const std::string& name, c
|
|||
xec_.emplace(xf.origin, xf.origin);
|
||||
}
|
||||
|
||||
void CScriptAiJumpPoint::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptAiJumpPoint::Think(float dt, CStateManager&)
|
||||
{
|
||||
if (x110_timeRemaining <= 0)
|
||||
|
|
|
@ -25,6 +25,7 @@ private:
|
|||
public:
|
||||
CScriptAiJumpPoint(TUniqueId, const std::string&, const CEntityInfo&, zeus::CTransform&, bool, float);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void Think(float, CStateManager&);
|
||||
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&);
|
||||
void AddToRenderer(const zeus::CFrustum&, const CStateManager&) const {}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "CEnvFxManager.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
#include "CWorld.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -21,6 +22,11 @@ CScriptAreaAttributes::CScriptAreaAttributes(TUniqueId uid, const CEntityInfo& i
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptAreaAttributes::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptAreaAttributes::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr)
|
||||
{
|
||||
AcceptScriptMsg(msg, objId, stateMgr);
|
||||
|
|
|
@ -22,6 +22,7 @@ public:
|
|||
float envFxDensity, float thermalHeat, float xrayFogDistance, float worldLightingLevel,
|
||||
ResId skybox, EPhazonType phazonType);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr);
|
||||
|
||||
bool GetNeedsSky() const;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "Particle/CWeaponDescription.hpp"
|
||||
#include "Weapon/CPlasmaProjectile.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -18,6 +19,11 @@ CScriptBeam::CScriptBeam(TUniqueId uid, const std::string& name, const CEntityIn
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptBeam::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptBeam::Think(float dt, CStateManager& mgr)
|
||||
{
|
||||
#if 0
|
||||
|
|
|
@ -18,6 +18,7 @@ public:
|
|||
CScriptBeam(TUniqueId, const std::string&, const CEntityInfo&, const zeus::CTransform&, bool,
|
||||
const TToken<CWeaponDescription>&, const CBeamInfo&, const CDamageInfo&);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void Think(float, CStateManager &);
|
||||
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager &);
|
||||
};
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "CScriptCameraBlurKeyframe.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -7,4 +8,10 @@ CScriptCameraBlurKeyframe::CScriptCameraBlurKeyframe(TUniqueId uid, const std::s
|
|||
: CEntity(uid, info, active, name)
|
||||
{
|
||||
}
|
||||
|
||||
void CScriptCameraBlurKeyframe::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,6 +9,8 @@ class CScriptCameraBlurKeyframe : public CEntity
|
|||
{
|
||||
public:
|
||||
CScriptCameraBlurKeyframe(TUniqueId, const std::string&, const CEntityInfo&, u32, float, u32, float, float, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "CScriptCameraFilterKeyframe.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -8,4 +9,10 @@ CScriptCameraFilterKeyframe::CScriptCameraFilterKeyframe(TUniqueId uid, const st
|
|||
: CEntity(uid, info, active, name)
|
||||
{
|
||||
}
|
||||
|
||||
void CScriptCameraFilterKeyframe::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,6 +20,8 @@ class CScriptCameraFilterKeyframe : public CEntity
|
|||
public:
|
||||
CScriptCameraFilterKeyframe(TUniqueId, const std::string&, const CEntityInfo&, u32, u32, u32, u32,
|
||||
const zeus::CColor&, float, float, u32, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "CScriptCameraHint.hpp"
|
||||
#include "Character/CModelData.hpp"
|
||||
#include "CActorParameters.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -13,4 +14,10 @@ CScriptCameraHint::CScriptCameraHint(TUniqueId uid, const std::string& name, con
|
|||
CActorParameters::None(), kInvalidUniqueId)
|
||||
{
|
||||
}
|
||||
|
||||
void CScriptCameraHint::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,6 +12,8 @@ public:
|
|||
CScriptCameraHint(TUniqueId, const std::string& name, const CEntityInfo& info, const zeus::CTransform& xf, bool,
|
||||
u32, u32, u32, float, float, float, const zeus::CVector3f&, const zeus::CVector3f&,
|
||||
const zeus::CVector3f&, float, float, float, float, float, float, float, float, float, float);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "CScriptCameraHintTrigger.hpp"
|
||||
#include "CActorParameters.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -15,4 +16,10 @@ CScriptCameraHintTrigger::CScriptCameraHintTrigger(TUniqueId uid, bool active, c
|
|||
, x130_25_(b3)
|
||||
{
|
||||
}
|
||||
|
||||
void CScriptCameraHintTrigger::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -24,6 +24,8 @@ class CScriptCameraHintTrigger : public CActor
|
|||
public:
|
||||
CScriptCameraHintTrigger(TUniqueId, bool, const std::string& name, const CEntityInfo&, const zeus::CVector3f&,
|
||||
const zeus::CTransform&, bool, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
#endif // __URDE_CSCRIPTCAMERAHINTTRIGGER_HPP__
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "CPlayer.hpp"
|
||||
#include "Camera/CCameraManager.hpp"
|
||||
#include "Camera/CFirstPersonCamera.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -23,6 +24,11 @@ CScriptCameraPitchVolume::CScriptCameraPitchVolume(TUniqueId uid, bool active, c
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptCameraPitchVolume::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptCameraPitchVolume::Think(float, CStateManager&)
|
||||
{
|
||||
if (!x30_24_active)
|
||||
|
@ -36,7 +42,7 @@ rstl::optional_object<zeus::CAABox> CScriptCameraPitchVolume::GetTouchBounds() c
|
|||
|
||||
void CScriptCameraPitchVolume::Touch(CActor& act, CStateManager& mgr)
|
||||
{
|
||||
CPlayer* pl = dynamic_cast<CPlayer*>(&act);
|
||||
CPlayer* pl = TCastToPtr<CPlayer>(&act);
|
||||
if (!pl)
|
||||
return;
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ public:
|
|||
CScriptCameraPitchVolume(TUniqueId, bool, const std::string&, const CEntityInfo&, const zeus::CVector3f&,
|
||||
const zeus::CTransform&, const zeus::CRelAngle&, const zeus::CRelAngle&, float);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void Think(float, CStateManager&);
|
||||
rstl::optional_object<zeus::CAABox> GetTouchBounds() const;
|
||||
void Touch(CActor&, CStateManager&);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "CScriptCameraWaypoint.hpp"
|
||||
#include "CActorParameters.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -12,4 +13,9 @@ CScriptCameraWaypoint::CScriptCameraWaypoint(TUniqueId uid, const std::string& n
|
|||
|
||||
}
|
||||
|
||||
void CScriptCameraWaypoint::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -11,6 +11,8 @@ class CScriptCameraWaypoint : public CActor
|
|||
public:
|
||||
CScriptCameraWaypoint(TUniqueId uid, const std::string& name, const CEntityInfo& info,
|
||||
const zeus::CTransform& xf, bool active, float, u32);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#include "CScriptColorModulate.hpp"
|
||||
#include "Graphics/CModel.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
CScriptColorModulate::CScriptColorModulate(TUniqueId uid, const std::string& name, const CEntityInfo& info,
|
||||
|
@ -22,6 +24,11 @@ CScriptColorModulate::CScriptColorModulate(TUniqueId uid, const std::string& nam
|
|||
|
||||
}
|
||||
|
||||
void CScriptColorModulate::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptColorModulate::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager &stateMgr)
|
||||
{
|
||||
CEntity::AcceptScriptMsg(msg, objId, stateMgr);
|
||||
|
|
|
@ -44,6 +44,7 @@ public:
|
|||
CScriptColorModulate(TUniqueId, const std::string&, const CEntityInfo&, const zeus::CColor&, const zeus::CColor&,
|
||||
EBlendMode, float, float, bool, bool, bool, bool, bool, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager &stateMgr);
|
||||
void Think(float, CStateManager &);
|
||||
zeus::CColor CalculateFlags(const zeus::CColor&) const;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "CScriptCounter.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -9,4 +10,9 @@ CScriptCounter::CScriptCounter(TUniqueId uid, const std::string& name, const CEn
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptCounter::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -11,6 +11,8 @@ class CScriptCounter : public CEntity
|
|||
public:
|
||||
CScriptCounter(TUniqueId, const std::string& name, const CEntityInfo& info,
|
||||
u32, u32, bool, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "CScriptCoverPoint.hpp"
|
||||
#include "CActorParameters.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -17,6 +18,11 @@ CScriptCoverPoint::CScriptCoverPoint(TUniqueId uid, const std::string &name, con
|
|||
x100_touchBounds.emplace(xf.origin, xf.origin);
|
||||
}
|
||||
|
||||
void CScriptCoverPoint::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptCoverPoint::Think(float delta, CStateManager&)
|
||||
{
|
||||
if (x11c_timeLeft <= 0.f)
|
||||
|
|
|
@ -38,6 +38,7 @@ public:
|
|||
CScriptCoverPoint(TUniqueId uid, const std::string& name, const CEntityInfo& info,
|
||||
zeus::CTransform xf, bool active, u32 flags, bool crouch, float horizontalAngle, float verticalAngle, float coverTime);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void Think(float, CStateManager &);
|
||||
void AddToRenderer(const zeus::CFrustum &, CStateManager &) {}
|
||||
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager &);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "CScriptDamageableTrigger.hpp"
|
||||
#include "CActorParameters.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -31,4 +32,9 @@ CScriptDamageableTrigger::CScriptDamageableTrigger(TUniqueId uid, const std::str
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptDamageableTrigger::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,6 +20,8 @@ public:
|
|||
CScriptDamageableTrigger(TUniqueId, const std::string&, const CEntityInfo&, const zeus::CVector3f&, const zeus::CVector3f&,
|
||||
const CHealthInfo&, const CDamageVulnerability&, u32, ResId, ResId, ResId, ECanOrbit, bool,
|
||||
const CVisorParameters&);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "CScriptDebris.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -14,6 +15,11 @@ CScriptDebris::CScriptDebris(TUniqueId uid, const std::string& name, const CEnti
|
|||
|
||||
}
|
||||
|
||||
void CScriptDebris::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
#if 0
|
||||
CScriptDebris::CScriptDebris(TUniqueId, const std::string&, const CEntityInfo&, const zeus::CTransform&, CModelData&&,
|
||||
const CActorParameters&, float, float, float, float, float, float, float, float, float,
|
||||
|
|
|
@ -22,6 +22,8 @@ public:
|
|||
CScriptDebris(TUniqueId, const std::string&, const CEntityInfo&, const zeus::CTransform&, CModelData&&,
|
||||
const CActorParameters&, ResId, const zeus::CVector3f&, float, const zeus::CVector3f&,
|
||||
const zeus::CColor&, float, float, float, EScaleType, bool, bool, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
#if 0
|
||||
CScriptDebris(TUniqueId, const std::string&, const CEntityInfo&, const zeus::CTransform&, CModelData&&,
|
||||
const CActorParameters&, float, float, float, float, float, float, float, float, float,
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "CScriptDistanceFog.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
#include "CWorld.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -28,6 +29,11 @@ CScriptDistanceFog::CScriptDistanceFog(TUniqueId uid, const std::string& name, c
|
|||
x61_nonZero = true;
|
||||
}
|
||||
|
||||
void CScriptDistanceFog::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptDistanceFog::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr)
|
||||
{
|
||||
CEntity::AcceptScriptMsg(msg, objId, stateMgr);
|
||||
|
|
|
@ -24,6 +24,7 @@ public:
|
|||
const zeus::CColor&, const zeus::CVector2f&, float, const zeus::CVector2f&,
|
||||
bool, bool, float, float, float, float);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager &stateMgr);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "CStateManager.hpp"
|
||||
#include "CScriptDoor.hpp"
|
||||
#include "CPlayer.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -31,6 +32,11 @@ CScriptDock::CScriptDock(TUniqueId uid, const std::string& name, const CEntityIn
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptDock::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptDock::Think(float dt, CStateManager& mgr)
|
||||
{
|
||||
if (!GetActive())
|
||||
|
|
|
@ -35,6 +35,7 @@ public:
|
|||
CScriptDock(TUniqueId uid, const std::string& name, const CEntityInfo& info, const zeus::CVector3f position,
|
||||
const zeus::CVector3f& extent, s32, TAreaId, bool active, s32 w1, bool b1);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void Think(float, CStateManager&);
|
||||
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&);
|
||||
rstl::optional_object<zeus::CAABox> GetTouchBounds() const;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "CScriptDockAreaChange.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
#include "World/CScriptDock.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -10,6 +11,11 @@ CScriptDockAreaChange::CScriptDockAreaChange(TUniqueId uid, const std::string& n
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptDockAreaChange::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptDockAreaChange::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr)
|
||||
{
|
||||
if (msg == EScriptObjectMessage::Action && GetActive())
|
||||
|
@ -23,7 +29,7 @@ void CScriptDockAreaChange::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
|
|||
for (auto it = search.first ; it != search.second ; ++it)
|
||||
{
|
||||
TUniqueId id = it->second;
|
||||
CScriptDock* dock = dynamic_cast<CScriptDock*>(stateMgr.ObjectById(id));
|
||||
CScriptDock* dock = TCastToPtr<CScriptDock>(stateMgr.ObjectById(id));
|
||||
if (dock)
|
||||
dock->SetDockReference(stateMgr, x34_dockReference);
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ class CScriptDockAreaChange : public CEntity
|
|||
public:
|
||||
CScriptDockAreaChange(TUniqueId, const std::string&, const CEntityInfo&, s32, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager &stateMgr);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "CWorld.hpp"
|
||||
#include "Camera/CCameraManager.hpp"
|
||||
#include "Camera/CBallCamera.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -45,6 +46,11 @@ CScriptDoor::CScriptDoor(TUniqueId uid, const std::string& name, const CEntityIn
|
|||
SetMass(0.f);
|
||||
}
|
||||
|
||||
void CScriptDoor::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
/* ORIGINAL 0-00 OFFSET: 8007F054 */
|
||||
zeus::CVector3f CScriptDoor::GetOrbitPosition(const CStateManager& /*mgr*/) const
|
||||
{
|
||||
|
@ -108,7 +114,7 @@ void CScriptDoor::ForceClosed(CStateManager & mgr)
|
|||
/* ORIGINAL 0-00 OFFSET: 8007E1C4 */
|
||||
bool CScriptDoor::IsConnectedToArea(const CStateManager& mgr, TAreaId area)
|
||||
{
|
||||
const CScriptDock* dock = dynamic_cast<const CScriptDock*>(mgr.GetObjectById(x282_dockId));
|
||||
const CScriptDock* dock = TCastToConstPtr<CScriptDock>(mgr.GetObjectById(x282_dockId));
|
||||
if (dock)
|
||||
{
|
||||
if (dock->GetDestinationAreaId() == area)
|
||||
|
@ -127,7 +133,7 @@ void CScriptDoor::OpenDoor(TUniqueId uid, CStateManager& mgr)
|
|||
TEditorId eid = mgr.GetEditorIdForUniqueId(uid);
|
||||
mgr.MapWorldInfo()->SetDoorVisited(eid, true);
|
||||
|
||||
const CScriptDoor* door = dynamic_cast<const CScriptDoor*>(mgr.GetObjectById(uid));
|
||||
const CScriptDoor* door = TCastToConstPtr<CScriptDoor>(mgr.GetObjectById(uid));
|
||||
|
||||
if (door)
|
||||
x27c_partner = door->GetUniqueId();
|
||||
|
@ -146,7 +152,7 @@ void CScriptDoor::OpenDoor(TUniqueId uid, CStateManager& mgr)
|
|||
/* ORIGINAL 0-00 OFFSET: 8007ED4C */
|
||||
u32 CScriptDoor::GetDoorOpenCondition(CStateManager& mgr)
|
||||
{
|
||||
const CScriptDock* dock = dynamic_cast<const CScriptDock*>(mgr.GetObjectById(x282_dockId));
|
||||
const CScriptDock* dock = TCastToConstPtr<CScriptDock>(mgr.GetObjectById(x282_dockId));
|
||||
|
||||
if (!dock)
|
||||
return 2;
|
||||
|
|
|
@ -57,6 +57,7 @@ public:
|
|||
bool active, bool open, bool, float, bool ballDoor);
|
||||
|
||||
zeus::CVector3f GetOrbitPosition(const CStateManager& mgr) const;
|
||||
void Accept(IVisitor& visitor);
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr);
|
||||
void Think(float, CStateManager& mgr);
|
||||
void AddToRenderer(const zeus::CFrustum&, CStateManager& mgr);
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "Character/CModelData.hpp"
|
||||
#include "Collision/CMaterialList.hpp"
|
||||
#include "CActorParameters.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -16,4 +17,9 @@ CScriptEffect::CScriptEffect(TUniqueId uid, const std::string& name, const CEnti
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptEffect::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -14,6 +14,8 @@ public:
|
|||
ResId partId, ResId elscId, bool, bool, bool, bool active,
|
||||
bool, float, float, float, float, bool, float, float, float,
|
||||
bool, bool, bool, const CLightParameters& lParms, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "CScriptGenerator.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -16,6 +17,11 @@ CScriptGenerator::CScriptGenerator(TUniqueId uid, const std::string& name, const
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptGenerator::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptGenerator::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr)
|
||||
{
|
||||
if (msg == EScriptObjectMessage::SetToZero && GetActive())
|
||||
|
|
|
@ -26,6 +26,7 @@ public:
|
|||
CScriptGenerator(TUniqueId uid, const std::string& name, const CEntityInfo& info, u32, bool, const zeus::CVector3f&,
|
||||
bool, bool, float, float);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "Character/CModelData.hpp"
|
||||
#include "Collision/CMaterialList.hpp"
|
||||
#include "CActorParameters.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -16,4 +17,9 @@ CScriptGrapplePoint::CScriptGrapplePoint(TUniqueId uid, const std::string &name,
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptGrapplePoint::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,6 +13,8 @@ class CScriptGrapplePoint : public CActor
|
|||
public:
|
||||
CScriptGrapplePoint(TUniqueId uid, const std::string& name, const CEntityInfo& info, const zeus::CTransform& transform,
|
||||
bool active, const CGrappleParameters& params);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "CScriptHUDMemo.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -9,4 +10,9 @@ CScriptHUDMemo::CScriptHUDMemo(TUniqueId uid, const std::string& name, const CEn
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptHUDMemo::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@ private:
|
|||
public:
|
||||
CScriptHUDMemo(TUniqueId, const std::string&, const CEntityInfo&, const CHUDMemoParms&,
|
||||
CScriptHUDMemo::EDisplayType, ResId, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "CScriptMemoryRelay.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
#include "CRelayTracker.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -13,6 +14,11 @@ CScriptMemoryRelay::CScriptMemoryRelay(TUniqueId uid, const std::string& name, c
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptMemoryRelay::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptMemoryRelay::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager &stateMgr)
|
||||
{
|
||||
if (x34_26_ignoreMessages)
|
||||
|
|
|
@ -19,6 +19,7 @@ class CScriptMemoryRelay : public CEntity
|
|||
};
|
||||
public:
|
||||
CScriptMemoryRelay(TUniqueId, const std::string& name, const CEntityInfo&, bool, bool, bool);
|
||||
void Accept(IVisitor& visitor);
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager &stateMgr);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "CScriptPickup.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -9,4 +10,10 @@ CScriptPickup::CScriptPickup(TUniqueId uid, const std::string& name, const CEnti
|
|||
0.3f, 0.1f)
|
||||
{
|
||||
}
|
||||
|
||||
void CScriptPickup::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -10,6 +10,8 @@ class CScriptPickup : public CPhysicsActor
|
|||
public:
|
||||
CScriptPickup(TUniqueId, const std::string&, const CEntityInfo&, const zeus::CTransform&, CModelData&&,
|
||||
const CActorParameters&, const zeus::CAABox&, s32, s32, s32, s32, float, float, float, float, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "CScriptPickupGenerator.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -8,6 +9,11 @@ CScriptPickupGenerator::CScriptPickupGenerator(TUniqueId uid, const std::string&
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptPickupGenerator::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptPickupGenerator::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr)
|
||||
{
|
||||
if (msg == EScriptObjectMessage::SetToZero && x30_24_active && x44_ != 100.f)
|
||||
|
|
|
@ -15,6 +15,7 @@ class CScriptPickupGenerator : public CEntity
|
|||
public:
|
||||
CScriptPickupGenerator(TUniqueId, const std::string&, const CEntityInfo&, const zeus::CVector3f&, float, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager &stateMgr);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "CScriptPlatform.hpp"
|
||||
#include "Collision/CMaterialList.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -24,4 +25,10 @@ CScriptPlatform::CScriptPlatform(TUniqueId uid, const std::string& name, const C
|
|||
actParms, 0.3f, 0.1f)
|
||||
{
|
||||
}
|
||||
|
||||
void CScriptPlatform::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -16,6 +16,8 @@ public:
|
|||
CModelData&& mData, const CActorParameters& actParms, const zeus::CAABox& aabb, float, bool, float,
|
||||
bool, const CHealthInfo& hInfo, const CDamageVulnerability& dInfo,
|
||||
const rstl::optional_object<TLockedToken<CCollidableOBBTreeGroup>>& dcln, bool, u32, u32);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "CActorParameters.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
#include "CPlayerState.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -15,6 +16,11 @@ CScriptPointOfInterest::CScriptPointOfInterest(TUniqueId uid, const std::string&
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptPointOfInterest::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptPointOfInterest::Think(float dt, CStateManager& mgr)
|
||||
{
|
||||
xe7_31_ = mgr.GetPlayerState()->GetCurrentVisor() == CPlayerState::EPlayerVisor::Scan;
|
||||
|
|
|
@ -14,6 +14,7 @@ public:
|
|||
CScriptPointOfInterest(TUniqueId, const std::string&, const CEntityInfo, const zeus::CTransform&, bool,
|
||||
const CScannableParameters&, float);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void Think(float, CStateManager &);
|
||||
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager &);
|
||||
void AddToRenderer(const zeus::CFrustum &, const CStateManager &) const;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "CScriptRandomRelay.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -12,6 +13,11 @@ CScriptRandomRelay::CScriptRandomRelay(TUniqueId uid, const std::string& name, c
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptRandomRelay::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptRandomRelay::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr)
|
||||
{
|
||||
CEntity::AcceptScriptMsg(msg, objId, stateMgr);
|
||||
|
|
|
@ -13,6 +13,7 @@ class CScriptRandomRelay : public CEntity
|
|||
public:
|
||||
CScriptRandomRelay(TUniqueId, const std::string&, const CEntityInfo&, s32, s32, bool, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager &stateMgr);
|
||||
void SendLocalScriptMsgs(EScriptObjectState state, CStateManager& stateMgr);
|
||||
};
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "CScriptRelay.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -9,6 +10,11 @@ CScriptRelay::CScriptRelay(TUniqueId uid, const std::string& name, const CEntity
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptRelay::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptRelay::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager &stateMgr)
|
||||
{
|
||||
CEntity::AcceptScriptMsg(msg, objId, stateMgr);
|
||||
|
@ -66,7 +72,7 @@ void CScriptRelay::UpdateObjectRef(CStateManager& stateMgr)
|
|||
*tmp = x34_;
|
||||
return;
|
||||
}
|
||||
const CScriptRelay* obj = dynamic_cast<const CScriptRelay*>(stateMgr.GetObjectById(*tmp));
|
||||
const CScriptRelay* obj = TCastToConstPtr<CScriptRelay>(stateMgr.GetObjectById(*tmp));
|
||||
if (obj)
|
||||
tmp = (TUniqueId*)&obj->x34_;
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ class CScriptRelay : public CEntity
|
|||
public:
|
||||
CScriptRelay(TUniqueId, const std::string&, const CEntityInfo&, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager &stateMgr);
|
||||
void Think(float, CStateManager& stateMgr);
|
||||
void UpdateObjectRef(CStateManager& stateMgr);
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "World/CActorParameters.hpp"
|
||||
#include "World/CProjectedShadow.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -22,6 +23,11 @@ CScriptShadowProjector::CScriptShadowProjector(TUniqueId uid, const std::string&
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptShadowProjector::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptShadowProjector::Think(float dt, CStateManager& mgr)
|
||||
{
|
||||
if (GetActive() && x110_25_shadowInvalidated)
|
||||
|
@ -65,7 +71,7 @@ void CScriptShadowProjector::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
|
|||
if (conn.x0_state != EScriptObjectState::Play)
|
||||
continue;
|
||||
|
||||
const CActor* act = dynamic_cast<const CActor*>(mgr.GetObjectById(mgr.GetIdForScript(conn.x8_objId)));
|
||||
const CActor* act = TCastToConstPtr<CActor>(mgr.GetObjectById(mgr.GetIdForScript(conn.x8_objId)));
|
||||
if (!act)
|
||||
continue;
|
||||
const CModelData* mData = act->GetModelData();
|
||||
|
|
|
@ -30,6 +30,7 @@ public:
|
|||
CScriptShadowProjector(TUniqueId, const std::string&, const CEntityInfo&, const zeus::CTransform&, bool,
|
||||
const zeus::CVector3f&, bool, float, float, float, float, s32);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void Think(float, CStateManager &);
|
||||
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager &);
|
||||
void PreRender(const zeus::CFrustum &, const CStateManager &);
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "Character/CModelData.hpp"
|
||||
#include "Collision/CMaterialList.hpp"
|
||||
#include "CActorParameters.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -14,4 +15,9 @@ CScriptSound::CScriptSound(TUniqueId uid, const std::string& name, const CEntity
|
|||
{
|
||||
}
|
||||
|
||||
void CScriptSound::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,6 +12,8 @@ public:
|
|||
CScriptSound(TUniqueId, const std::string& name, const CEntityInfo& info,
|
||||
const zeus::CTransform& xf, s16 soundId, bool, float, float, float,
|
||||
u32, u32, u32, u32, u32, bool, bool, bool, bool, bool, bool, bool, bool, u32);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "CStateManager.hpp"
|
||||
#include "CWorld.hpp"
|
||||
#include "CPlayer.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -15,6 +16,11 @@ CScriptSpawnPoint::CScriptSpawnPoint(TUniqueId uid, const std::string& name, con
|
|||
x10c_25_morphed = morphed;
|
||||
}
|
||||
|
||||
void CScriptSpawnPoint::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptSpawnPoint::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr)
|
||||
{
|
||||
CEntity::AcceptScriptMsg(msg, objId, stateMgr);
|
||||
|
|
|
@ -26,6 +26,7 @@ public:
|
|||
const zeus::CTransform& xf, const std::vector<u32>& itemCounts,
|
||||
bool, bool, bool);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager &stateMgr);
|
||||
bool FirstSpawn() const { return x10c_24_firstSpawn; }
|
||||
const zeus::CTransform& GetTransform() const { return x34_xf; }
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "Character/CModelData.hpp"
|
||||
#include "CActorParameters.hpp"
|
||||
#include "Audio/CSfxManager.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
@ -35,6 +36,11 @@ CScriptSpecialFunction::CScriptSpecialFunction(TUniqueId uid, const std::string&
|
|||
x1c8_ = {{zeus::CVector3f(-1.f), zeus::CVector3f(1.f)}};
|
||||
}
|
||||
|
||||
void CScriptSpecialFunction::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptSpecialFunction::Think(float, CStateManager &)
|
||||
{
|
||||
|
||||
|
|
|
@ -113,6 +113,7 @@ public:
|
|||
const std::string&, float, float, float, float, const zeus::CVector3f&, const zeus::CColor&,
|
||||
bool, const CDamageInfo&, ResId, ResId, ResId, s16, s16, s16);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void Think(float, CStateManager &);
|
||||
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager &);
|
||||
void PreRender(const zeus::CFrustum &, const CStateManager &);
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
#include "CScriptStreamedMusic.hpp"
|
||||
#include "CStringExtras.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
||||
bool CScriptStreamedMusic::ValidateFileName(const std::string& fileName)
|
||||
{
|
||||
if (!CStringExtras::CompareCaseInsensitive(fileName, "sw"))
|
||||
return true;
|
||||
if (CStringExtras::IndexOfSubstring(fileName, ".dsp") != -1)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
CScriptStreamedMusic::CScriptStreamedMusic(TUniqueId id, const CEntityInfo& info, const std::string& name,
|
||||
bool active, const std::string& fileName, bool b1, float f1, float f2,
|
||||
u32 w1, bool b2, bool b3)
|
||||
: CEntity(id, info, active, name), x34_fileName(fileName), x44_b1(b1),
|
||||
x45_fileNameValid(ValidateFileName(fileName)), x46_b2(b2), x47_b3(b3),
|
||||
x48_f1(f1), x4c_f2(f2), x50_w1(w1) {}
|
||||
|
||||
void CScriptStreamedMusic::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptStreamedMusic::PreThink(float, CStateManager&)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CScriptStreamedMusic::Think(float, CStateManager&)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CScriptStreamedMusic::AcceptScriptMsg(EScriptObjectMessage msg,
|
||||
TUniqueId objId, CStateManager& stateMgr)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue