mirror of https://github.com/AxioDL/metaforce.git
Update hecl, various fixes
This commit is contained in:
parent
533b8775d4
commit
9255f0eeb0
|
@ -219,7 +219,11 @@ void CActor::OnScanStateChanged(EScanState state, CStateManager& mgr)
|
||||||
|
|
||||||
zeus::CAABox CActor::GetSortingBounds(const CStateManager&) const { return x9c_renderBounds; }
|
zeus::CAABox CActor::GetSortingBounds(const CStateManager&) const { return x9c_renderBounds; }
|
||||||
|
|
||||||
void CActor::DoUserAnimEvent(CStateManager&, CInt32POINode&, EUserEventType, float dt) {}
|
void CActor::DoUserAnimEvent(CStateManager&, CInt32POINode&, EUserEventType event, float)
|
||||||
|
{
|
||||||
|
if (event == EUserEventType::LoopedSoundStop)
|
||||||
|
RemoveEmitter();
|
||||||
|
}
|
||||||
|
|
||||||
void CActor::RemoveMaterial(EMaterialTypes t1, EMaterialTypes t2, EMaterialTypes t3, EMaterialTypes t4,
|
void CActor::RemoveMaterial(EMaterialTypes t1, EMaterialTypes t2, EMaterialTypes t3, EMaterialTypes t4,
|
||||||
CStateManager& mgr)
|
CStateManager& mgr)
|
||||||
|
@ -234,7 +238,11 @@ void CActor::RemoveMaterial(EMaterialTypes t1, EMaterialTypes t2, EMaterialTypes
|
||||||
RemoveMaterial(t2, t3, mgr);
|
RemoveMaterial(t2, t3, mgr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CActor::RemoveMaterial(EMaterialTypes t1, EMaterialTypes t2, CStateManager& mgr) { x68_material.Remove(t1); }
|
void CActor::RemoveMaterial(EMaterialTypes t1, EMaterialTypes t2, CStateManager& mgr)
|
||||||
|
{
|
||||||
|
x68_material.Remove(t1);
|
||||||
|
RemoveMaterial(t2, mgr);
|
||||||
|
}
|
||||||
|
|
||||||
void CActor::RemoveMaterial(EMaterialTypes t, CStateManager& mgr)
|
void CActor::RemoveMaterial(EMaterialTypes t, CStateManager& mgr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,36 +31,33 @@ void CScriptCameraHint::Accept(IVisitor& visitor)
|
||||||
void CScriptCameraHint::InitializeInArea(CStateManager& mgr)
|
void CScriptCameraHint::InitializeInArea(CStateManager& mgr)
|
||||||
{
|
{
|
||||||
x164_delegatedCamera = kInvalidUniqueId;
|
x164_delegatedCamera = kInvalidUniqueId;
|
||||||
for (CEntity* e : mgr.GetAllObjectList())
|
for (CEntity* ent : mgr.GetAllObjectList())
|
||||||
{
|
{
|
||||||
if (TCastToPtr<CEntity> ent = e)
|
for (const SConnection& conn : ent->GetConnectionList())
|
||||||
{
|
{
|
||||||
for (const SConnection& conn : ent->GetConnectionList())
|
if (mgr.GetIdForScript(conn.x8_objId) != GetUniqueId())
|
||||||
{
|
continue;
|
||||||
if (mgr.GetIdForScript(conn.x8_objId) != GetUniqueId())
|
if (conn.x4_msg != EScriptObjectMessage::Increment &&
|
||||||
continue;
|
conn.x4_msg != EScriptObjectMessage::Decrement)
|
||||||
if (conn.x4_msg != EScriptObjectMessage::Increment &&
|
continue;
|
||||||
conn.x4_msg != EScriptObjectMessage::Decrement)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
for (auto it = ent->GetConnectionList().begin() ; it != ent->GetConnectionList().cend() ; ++it)
|
for (auto it = ent->GetConnectionList().begin() ; it != ent->GetConnectionList().cend() ; ++it)
|
||||||
|
{
|
||||||
|
const SConnection& conn2 = *it;
|
||||||
|
if (conn2.x4_msg != EScriptObjectMessage::Increment &&
|
||||||
|
conn2.x4_msg != EScriptObjectMessage::Decrement)
|
||||||
|
continue;
|
||||||
|
TUniqueId id = mgr.GetIdForScript(conn2.x8_objId);
|
||||||
|
if (TCastToPtr<CPathCamera>(mgr.ObjectById(id)) ||
|
||||||
|
TCastToPtr<CScriptSpindleCamera>(mgr.ObjectById((id))))
|
||||||
{
|
{
|
||||||
const SConnection& conn2 = *it;
|
ent->ConnectionList().erase(it);
|
||||||
if (conn2.x4_msg != EScriptObjectMessage::Increment &&
|
if (x164_delegatedCamera != id)
|
||||||
conn2.x4_msg != EScriptObjectMessage::Decrement)
|
x164_delegatedCamera = id;
|
||||||
continue;
|
break;
|
||||||
TUniqueId id = mgr.GetIdForScript(conn2.x8_objId);
|
|
||||||
if (TCastToPtr<CPathCamera>(mgr.ObjectById(id)) ||
|
|
||||||
TCastToPtr<CScriptSpindleCamera>(mgr.ObjectById((id))))
|
|
||||||
{
|
|
||||||
ent->ConnectionList().erase(it);
|
|
||||||
if (x164_delegatedCamera != id)
|
|
||||||
x164_delegatedCamera = id;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ void CScriptControllerAction::Accept(IVisitor& visitor)
|
||||||
visitor.Visit(this);
|
visitor.Visit(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CScriptControllerAction::Think(float dt, CStateManager& stateMgr)
|
void CScriptControllerAction::Think(float, CStateManager& stateMgr)
|
||||||
{
|
{
|
||||||
bool oldPressed = x3c_26_pressed;
|
bool oldPressed = x3c_26_pressed;
|
||||||
if (x3c_24_mapScreenResponse)
|
if (x3c_24_mapScreenResponse)
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
#include "CScriptDebris.hpp"
|
#include "CScriptDebris.hpp"
|
||||||
|
#include "Collision/CCollisionInfoList.hpp"
|
||||||
|
#include "Particle/CElementGen.hpp"
|
||||||
#include "TCastTo.hpp"
|
#include "TCastTo.hpp"
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
|
@ -11,8 +13,8 @@ CScriptDebris::CScriptDebris(TUniqueId uid, std::string_view name, const CEntity
|
||||||
: CPhysicsActor(uid, active, name, info, xf, std::move(mData),
|
: CPhysicsActor(uid, active, name, info, xf, std::move(mData),
|
||||||
CMaterialList(EMaterialTypes::Solid, EMaterialTypes::Debris),
|
CMaterialList(EMaterialTypes::Solid, EMaterialTypes::Debris),
|
||||||
mData.GetBounds(xf.getRotation()), SMoverData(f2), aParams, 0.3f, 0.1f)
|
mData.GetBounds(xf.getRotation()), SMoverData(f2), aParams, 0.3f, 0.1f)
|
||||||
{
|
|
||||||
|
|
||||||
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
CScriptDebris::CScriptDebris(TUniqueId uid, std::string_view name, const CEntityInfo& info, const zeus::CTransform& xf,
|
CScriptDebris::CScriptDebris(TUniqueId uid, std::string_view name, const CEntityInfo& info, const zeus::CTransform& xf,
|
||||||
|
@ -26,7 +28,7 @@ CScriptDebris::CScriptDebris(TUniqueId uid, std::string_view name, const CEntity
|
||||||
: CPhysicsActor(uid, active, name, info, xf, std::move(mData),
|
: CPhysicsActor(uid, active, name, info, xf, std::move(mData),
|
||||||
CMaterialList(EMaterialTypes::Solid, EMaterialTypes::Debris),
|
CMaterialList(EMaterialTypes::Solid, EMaterialTypes::Debris),
|
||||||
mData.GetBounds(xf.getRotation()), SMoverData(1.f), aParams, 0.3f, 0.1f)
|
mData.GetBounds(xf.getRotation()), SMoverData(1.f), aParams, 0.3f, 0.1f)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void CScriptDebris::Accept(IVisitor& visitor)
|
void CScriptDebris::Accept(IVisitor& visitor)
|
||||||
|
@ -34,4 +36,25 @@ void CScriptDebris::Accept(IVisitor& visitor)
|
||||||
visitor.Visit(this);
|
visitor.Visit(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rstl::optional_object<zeus::CAABox> CScriptDebris::GetTouchBounds() const
|
||||||
|
{
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
void CScriptDebris::CollidedWith(TUniqueId, const CCollisionInfoList& colList, CStateManager&)
|
||||||
|
{
|
||||||
|
if (colList.GetCount() == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (x282_24_)
|
||||||
|
{
|
||||||
|
x274_ = x270_;
|
||||||
|
SetVelocityWR(zeus::CVector3f::skZero);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x2c8_collisionNormal = colList.GetItem(0).GetNormalLeft();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
class CElementGen;
|
||||||
class CScriptDebris : public CPhysicsActor
|
class CScriptDebris : public CPhysicsActor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -17,6 +18,14 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
float x270_;
|
||||||
|
float x274_;
|
||||||
|
bool x282_24_ : 1;
|
||||||
|
zeus::CVector3f x2c8_collisionNormal;
|
||||||
|
std::unique_ptr<CElementGen> x2d4_;
|
||||||
|
std::unique_ptr<CElementGen> x2d8_;
|
||||||
|
std::unique_ptr<CElementGen> x2dc_;
|
||||||
TReservedAverage<float, 8> x2e0_;
|
TReservedAverage<float, 8> x2e0_;
|
||||||
public:
|
public:
|
||||||
CScriptDebris(TUniqueId, std::string_view, const CEntityInfo&, const zeus::CTransform&, CModelData&&,
|
CScriptDebris(TUniqueId, std::string_view, const CEntityInfo&, const zeus::CTransform&, CModelData&&,
|
||||||
|
@ -31,6 +40,9 @@ public:
|
||||||
bool, bool, bool, bool);
|
bool, bool, bool, bool);
|
||||||
|
|
||||||
void Accept(IVisitor& visitor);
|
void Accept(IVisitor& visitor);
|
||||||
|
rstl::optional_object<zeus::CAABox> GetTouchBounds() const;
|
||||||
|
|
||||||
|
void CollidedWith(TUniqueId uid, const CCollisionInfoList&, CStateManager&);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
hecl
2
hecl
|
@ -1 +1 @@
|
||||||
Subproject commit 6b3abdd21acc0274c0bedff5d6cbd3bea3f21730
|
Subproject commit 3a8dc560c3c8d92826f0c5d214f5027884ddab9f
|
Loading…
Reference in New Issue