2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 03:07:41 +00:00

TCastTo implementation

This commit is contained in:
Jack Andersen
2017-01-14 17:07:01 -10:00
parent 3544cbd278
commit e2c671e9b4
111 changed files with 766 additions and 35 deletions

View File

@@ -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;