mirror of https://github.com/AxioDL/metaforce.git
More Collision related fixes
This commit is contained in:
parent
e923d83617
commit
0f90a1f532
|
@ -5,74 +5,53 @@ namespace urde
|
||||||
const CCollisionPrimitive::Type CCollidableSphere::sType(CCollidableSphere::SetStaticTableIndex, "CCollidableSphere");
|
const CCollisionPrimitive::Type CCollidableSphere::sType(CCollidableSphere::SetStaticTableIndex, "CCollidableSphere");
|
||||||
u32 CCollidableSphere::sTableIndex = -1;
|
u32 CCollidableSphere::sTableIndex = -1;
|
||||||
|
|
||||||
u32 CCollidableSphere::GetTableIndex() const
|
|
||||||
{
|
|
||||||
return sTableIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
zeus::CAABox CCollidableSphere::CalculateAABox(const zeus::CTransform &) const
|
|
||||||
{
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
zeus::CAABox CCollidableSphere::CalculateLocalAABox() const
|
|
||||||
{
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
FourCC CCollidableSphere::GetPrimType() const
|
|
||||||
{
|
|
||||||
return SBIG('SPHR');
|
|
||||||
}
|
|
||||||
|
|
||||||
CRayCastResult CCollidableSphere::CastRayInternal(const CInternalRayCastStructure &) const
|
|
||||||
{
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
const CCollisionPrimitive::Type& CCollidableSphere::GetType()
|
|
||||||
{
|
|
||||||
return sType;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CCollidableSphere::SetStaticTableIndex(u32 index)
|
|
||||||
{
|
|
||||||
sTableIndex = index;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CCollidableSphere::CollideMovingAABox(const CInternalCollisionStructure &, const zeus::CVector3f &, double &, CCollisionInfo &)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CCollidableSphere::CollideMovingSphere(const CInternalCollisionStructure &, const zeus::CVector3f &, double &, CCollisionInfo &)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Collide
|
namespace Collide
|
||||||
{
|
{
|
||||||
|
|
||||||
bool Sphere_AABox(const CInternalCollisionStructure &, CCollisionInfoList &)
|
bool Sphere_AABox(const CInternalCollisionStructure&, CCollisionInfoList&) { return false; }
|
||||||
|
|
||||||
|
bool Sphere_AABox_Bool(const CInternalCollisionStructure&) { return false; }
|
||||||
|
|
||||||
|
bool Sphere_Sphere(const CInternalCollisionStructure&, CCollisionInfoList&) { return false; }
|
||||||
|
|
||||||
|
bool Sphere_Sphere_Bool(const CInternalCollisionStructure&) { return false; }
|
||||||
|
}
|
||||||
|
|
||||||
|
CCollidableSphere::CCollidableSphere(const zeus::CSphere& sphere, const CMaterialList& list)
|
||||||
|
: CCollisionPrimitive(list), x10_sphere(sphere)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
const zeus::CSphere& CCollidableSphere::GetSphere() const { return x10_sphere; }
|
||||||
|
|
||||||
|
void CCollidableSphere::SetSphereCenter(const zeus::CVector3f&)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 CCollidableSphere::GetTableIndex() const { return sTableIndex; }
|
||||||
|
|
||||||
|
zeus::CAABox CCollidableSphere::CalculateAABox(const zeus::CTransform&) const { return {}; }
|
||||||
|
|
||||||
|
zeus::CAABox CCollidableSphere::CalculateLocalAABox() const { return {}; }
|
||||||
|
|
||||||
|
FourCC CCollidableSphere::GetPrimType() const { return SBIG('SPHR'); }
|
||||||
|
|
||||||
|
CRayCastResult CCollidableSphere::CastRayInternal(const CInternalRayCastStructure&) const { return {}; }
|
||||||
|
|
||||||
|
const CCollisionPrimitive::Type& CCollidableSphere::GetType() { return sType; }
|
||||||
|
|
||||||
|
void CCollidableSphere::SetStaticTableIndex(u32 index) { sTableIndex = index; }
|
||||||
|
|
||||||
|
bool CCollidableSphere::CollideMovingAABox(const CInternalCollisionStructure&, const zeus::CVector3f&, double&,
|
||||||
|
CCollisionInfo&)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Sphere_AABox_Bool(const CInternalCollisionStructure &)
|
bool CCollidableSphere::CollideMovingSphere(const CInternalCollisionStructure&, const zeus::CVector3f&, double&,
|
||||||
|
CCollisionInfo&)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Sphere_Sphere(const CInternalCollisionStructure &, CCollisionInfoList &)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Sphere_Sphere_Bool(const CInternalCollisionStructure &)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#define __URDE_CCOLLIDALBESPHERE_HPP
|
#define __URDE_CCOLLIDALBESPHERE_HPP
|
||||||
|
|
||||||
#include "CCollisionPrimitive.hpp"
|
#include "CCollisionPrimitive.hpp"
|
||||||
|
#include "zeus/CSphere.hpp"
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
@ -17,7 +18,14 @@ class CCollidableSphere : public CCollisionPrimitive
|
||||||
static const Type sType;
|
static const Type sType;
|
||||||
static u32 sTableIndex;
|
static u32 sTableIndex;
|
||||||
|
|
||||||
|
zeus::CSphere x10_sphere;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
CCollidableSphere(const zeus::CSphere&, const CMaterialList&);
|
||||||
|
|
||||||
|
const zeus::CSphere& GetSphere() const;
|
||||||
|
void SetSphereCenter(const zeus::CVector3f&);
|
||||||
|
|
||||||
virtual u32 GetTableIndex() const;
|
virtual u32 GetTableIndex() const;
|
||||||
virtual zeus::CAABox CalculateAABox(const zeus::CTransform&) const;
|
virtual zeus::CAABox CalculateAABox(const zeus::CTransform&) const;
|
||||||
virtual zeus::CAABox CalculateLocalAABox() const;
|
virtual zeus::CAABox CalculateLocalAABox() const;
|
||||||
|
|
|
@ -29,4 +29,18 @@ CCollisionActor::CCollisionActor(TUniqueId uid1, TAreaId aId, TUniqueId uid2, bo
|
||||||
zeus::CAABox::skNullBox, SMoverData(mass), CActorParameters::None(), 0.3f, 0.1f)
|
zeus::CAABox::skNullBox, SMoverData(mass), CActorParameters::None(), 0.3f, 0.1f)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CCollisionActor::AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) {}
|
||||||
|
|
||||||
|
CHealthInfo* CCollisionActor::HealthInfo() { return &x28c_healthInfo; }
|
||||||
|
|
||||||
|
const CDamageVulnerability* CCollisionActor::GetDamageVulnerability() const { return &x294_damageVuln; }
|
||||||
|
|
||||||
|
const CDamageVulnerability* CCollisionActor::GetDamageVulnerability(const zeus::CVector3f&, const zeus::CVector3f&,
|
||||||
|
const CDamageInfo&) const
|
||||||
|
{
|
||||||
|
return GetDamageVulnerability();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CCollisionActor::SetDamageVulnerability(const CDamageVulnerability& vuln) { x294_damageVuln = vuln; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,15 +2,37 @@
|
||||||
#define __URDE_CCOLLISIONACTOR_HPP__
|
#define __URDE_CCOLLISIONACTOR_HPP__
|
||||||
|
|
||||||
#include "World/CPhysicsActor.hpp"
|
#include "World/CPhysicsActor.hpp"
|
||||||
|
#include "World/CHealthInfo.hpp"
|
||||||
|
#include "World/CDamageVulnerability.hpp"
|
||||||
|
#include "Collision/CCollidableOBBTreeGroup.hpp"
|
||||||
|
#include "Collision/CCollidableSphere.hpp"
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
class CCollisionActor : public CPhysicsActor
|
class CCollisionActor : public CPhysicsActor
|
||||||
{
|
{
|
||||||
|
u32 x258_;
|
||||||
|
TUniqueId x25c_;
|
||||||
|
zeus::CVector3f x260_boxSize;
|
||||||
|
std::unique_ptr<CCollidableOBBTreeGroup> x278_obbTG1;
|
||||||
|
std::unique_ptr<CCollidableOBBTreeGroup> x27c_obbTG2;
|
||||||
|
std::unique_ptr<CCollidableSphere> x284_;
|
||||||
|
float x288_sphereRadius;
|
||||||
|
CHealthInfo x28c_healthInfo = CHealthInfo(0.f);
|
||||||
|
CDamageVulnerability x294_damageVuln = CDamageVulnerability::NormalVulnerabilty();
|
||||||
|
TUniqueId x2fc_lastTouched;
|
||||||
|
EWeaponCollisionResponseTypes x300_responseType;
|
||||||
public:
|
public:
|
||||||
CCollisionActor(TUniqueId, TAreaId, TUniqueId, const zeus::CVector3f&, const zeus::CVector3f&, bool, float);
|
CCollisionActor(TUniqueId, TAreaId, TUniqueId, const zeus::CVector3f&, const zeus::CVector3f&, bool, float);
|
||||||
CCollisionActor(TUniqueId, TAreaId, TUniqueId, const zeus::CVector3f&, bool, float);
|
CCollisionActor(TUniqueId, TAreaId, TUniqueId, const zeus::CVector3f&, bool, float);
|
||||||
CCollisionActor(TUniqueId, TAreaId, TUniqueId, bool, float, float);
|
CCollisionActor(TUniqueId, TAreaId, TUniqueId, bool, float, float);
|
||||||
|
|
||||||
|
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&);
|
||||||
|
CHealthInfo* HealthInfo();
|
||||||
|
const CDamageVulnerability* GetDamageVulnerability() const;
|
||||||
|
const CDamageVulnerability* GetDamageVulnerability(const zeus::CVector3f&, const zeus::CVector3f&,
|
||||||
|
const CDamageInfo&) const;
|
||||||
|
void SetDamageVulnerability(const CDamageVulnerability& vuln);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#include "CCollisionActorManager.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
CCollisionActorManager::CCollisionActorManager(CStateManager&, TUniqueId, TAreaId,
|
||||||
|
const std::vector<CJointCollisionDescription>&, bool)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
#ifndef __URDE_CCOLLISIONACTORMANAGER_HPP__
|
||||||
|
#define __URDE_CCOLLISIONACTORMANAGER_HPP__
|
||||||
|
|
||||||
|
#include "RetroTypes.hpp"
|
||||||
|
#include "zeus/CAABox.hpp"
|
||||||
|
#include "Collision/CJointCollisionDescription.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
class CAnimData;
|
||||||
|
class CCollisionActor;
|
||||||
|
class CStateManager;
|
||||||
|
class CCollisionActorManager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum class EUpdateOptions
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::vector<CJointCollisionDescription> x0_jointDescriptions;
|
||||||
|
TUniqueId x10_;
|
||||||
|
|
||||||
|
public:
|
||||||
|
CCollisionActorManager(CStateManager&, TUniqueId, TAreaId, const std::vector<CJointCollisionDescription>&, bool);
|
||||||
|
|
||||||
|
void Update(float, CStateManager&, EUpdateOptions) const;
|
||||||
|
void Destroy(CStateManager&) const;
|
||||||
|
void SetActive(CStateManager&, bool);
|
||||||
|
|
||||||
|
u32 GetNumCollisionActors() const;
|
||||||
|
CJointCollisionDescription GetCollisionDescFfromIndex(u32) const;
|
||||||
|
zeus::CTransform GetWRLocatorTransform(const CAnimData&, CSegId, const zeus::CTransform&, const zeus::CTransform&);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
#endif // __URDE_CCOLLISIONACTORMANAGER_HPP__
|
|
@ -0,0 +1,11 @@
|
||||||
|
#include "Collision/CJointCollisionDescription.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
CJointCollisionDescription::CJointCollisionDescription(ECollisionType, CSegId, CSegId, const zeus::CVector3f&,
|
||||||
|
const zeus::CVector3f&, float, float, EOrientationType,
|
||||||
|
const std::string&, float)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
#ifndef __URDE_CJOINTCOLLISIONDESCRIPTION_HPP__
|
||||||
|
#define __URDE_CJOINTCOLLISIONDESCRIPTION_HPP__
|
||||||
|
|
||||||
|
#include "Character/CSegId.hpp"
|
||||||
|
#include "zeus/CAABox.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
class CJointCollisionDescription
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum class ECollisionType
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class EOrientationType
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
public:
|
||||||
|
CJointCollisionDescription(ECollisionType, CSegId, CSegId, const zeus::CVector3f&, const zeus::CVector3f&, float,
|
||||||
|
float, EOrientationType, const std::string&, float);
|
||||||
|
const std::string& GetName() const;
|
||||||
|
void GetCollisionActorId() const;
|
||||||
|
void SphereSubdivideCollision(ECollisionType, CSegId, CSegId, float, float, EOrientationType, const std::string&,
|
||||||
|
float);
|
||||||
|
void SphereCollision(CSegId, float, const std::string&, float);
|
||||||
|
void AABoxCollision(CSegId, zeus::CVector3f const &, const std::string&, float);
|
||||||
|
void OBBAutoSizeCollision(CSegId, CSegId, const zeus::CVector3f&, EOrientationType, const std::string&, float);
|
||||||
|
void OBBCollision(CSegId, const zeus::CVector3f&, const zeus::CVector3f&, const std::string&, float);
|
||||||
|
zeus::CVector3f GetPivotPoint() const;
|
||||||
|
float GetRadius() const;
|
||||||
|
void SetCollisionActorId(TUniqueId);
|
||||||
|
EOrientationType GetOrientationType() const;
|
||||||
|
float GetMass() const;
|
||||||
|
zeus::CAABox GetBounds() const;
|
||||||
|
void GetType() const;
|
||||||
|
void GetNextId() const;
|
||||||
|
void GetPivotId() const;
|
||||||
|
void ScaleAllBounds(const zeus::CVector3f&);
|
||||||
|
void GetTween() const;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // __URDE_CJOINTCOLLISIONDESCRIPTION_HPP__
|
|
@ -19,6 +19,8 @@ set(COLLISION_SOURCES
|
||||||
CMaterialFilter.hpp CMaterialFilter.cpp
|
CMaterialFilter.hpp CMaterialFilter.cpp
|
||||||
CInternalRayCastStructure.hpp CInternalRayCastStructure.cpp
|
CInternalRayCastStructure.hpp CInternalRayCastStructure.cpp
|
||||||
CRayCastResult.hpp CRayCastResult.cpp
|
CRayCastResult.hpp CRayCastResult.cpp
|
||||||
CCollisionActor.hpp CCollisionActor.cpp)
|
CCollisionActor.hpp CCollisionActor.cpp
|
||||||
|
CCollisionActorManager.hpp CCollisionActorManager.cpp
|
||||||
|
CJointCollisionDescription.hpp CJointCollisionDescription.cpp)
|
||||||
|
|
||||||
runtime_add_list(Collision COLLISION_SOURCES)
|
runtime_add_list(Collision COLLISION_SOURCES)
|
||||||
|
|
|
@ -3,6 +3,37 @@
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
|
||||||
|
const CDamageVulnerability CDamageVulnerability::sNormalVulnerability(
|
||||||
|
EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal,
|
||||||
|
EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal,
|
||||||
|
EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal,
|
||||||
|
EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal,
|
||||||
|
EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal,
|
||||||
|
EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal, EVulnerability::DoubleDamage);
|
||||||
|
|
||||||
|
const CDamageVulnerability CDamageVulnerability::sImmuneVulnerability(
|
||||||
|
EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect,
|
||||||
|
EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect,
|
||||||
|
EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect,
|
||||||
|
EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect,
|
||||||
|
EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect,
|
||||||
|
EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::DoubleDamage);
|
||||||
|
/* LOL, thanks retro */
|
||||||
|
const CDamageVulnerability CDamageVulnerability::sReflectVulnerability(
|
||||||
|
EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect,
|
||||||
|
EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect,
|
||||||
|
EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect,
|
||||||
|
EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect,
|
||||||
|
EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect,
|
||||||
|
EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::Reflect, EVulnerability::DoubleDamage);
|
||||||
|
|
||||||
|
const CDamageVulnerability CDamageVulnerability::sPassThroughVulnerability(
|
||||||
|
EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough,
|
||||||
|
EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough,
|
||||||
|
EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough,
|
||||||
|
EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough,
|
||||||
|
EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough,
|
||||||
|
EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::DoubleDamage);
|
||||||
static inline bool is_normal_or_weak(EVulnerability vuln)
|
static inline bool is_normal_or_weak(EVulnerability vuln)
|
||||||
{
|
{
|
||||||
return (vuln == EVulnerability::DoubleDamage || vuln == EVulnerability::Normal);
|
return (vuln == EVulnerability::DoubleDamage || vuln == EVulnerability::Normal);
|
||||||
|
@ -10,8 +41,7 @@ static inline bool is_normal_or_weak(EVulnerability vuln)
|
||||||
|
|
||||||
static inline bool is_not_immune(EVulnerability vuln)
|
static inline bool is_not_immune(EVulnerability vuln)
|
||||||
{
|
{
|
||||||
return vuln != EVulnerability::Immune &&
|
return vuln != EVulnerability::Immune && vuln != EVulnerability::DirectImmune;
|
||||||
vuln != EVulnerability::DirectImmune;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDamageVulnerability::ConstructNew(CInputStream& in, int propCount)
|
void CDamageVulnerability::ConstructNew(CInputStream& in, int propCount)
|
||||||
|
@ -72,6 +102,42 @@ CDamageVulnerability::CDamageVulnerability(CInputStream& in)
|
||||||
ConstructNew(in, propCount);
|
ConstructNew(in, propCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CDamageVulnerability::CDamageVulnerability(EVulnerability power, EVulnerability ice, EVulnerability wave,
|
||||||
|
EVulnerability plasma, EVulnerability bomb, EVulnerability powerBomb,
|
||||||
|
EVulnerability missile, EVulnerability boostBall, EVulnerability phazon,
|
||||||
|
EVulnerability enemyWp1, EVulnerability enemyWp2, EVulnerability enemyWp3,
|
||||||
|
EVulnerability enemyWp4, EVulnerability v1, EVulnerability v2,
|
||||||
|
EVulnerability chargedPower, EVulnerability chargedIce,
|
||||||
|
EVulnerability chargedWave, EVulnerability chargedPlasma,
|
||||||
|
EVulnerability superMissile, EVulnerability iceSpreader,
|
||||||
|
EVulnerability waveBuster, EVulnerability flameThrower, EVulnerability v3)
|
||||||
|
: x0_power(power)
|
||||||
|
, x4_ice(ice)
|
||||||
|
, x8_wave(wave)
|
||||||
|
, xc_plasma(plasma)
|
||||||
|
, x10_bomb(bomb)
|
||||||
|
, x14_powerbomb(powerBomb)
|
||||||
|
, x18_missile(missile)
|
||||||
|
, x1c_boostBall(boostBall)
|
||||||
|
, x20_phazon(phazon)
|
||||||
|
, x24_enemyWp1(enemyWp1)
|
||||||
|
, x28_enemyWp2Poison(enemyWp2)
|
||||||
|
, x2c_enemyWp3Lava(enemyWp3)
|
||||||
|
, x30_enemyWp4(enemyWp4)
|
||||||
|
, x34_unk1(v1)
|
||||||
|
, x38_unk2(v2)
|
||||||
|
, x3c_chargedPower(chargedPower)
|
||||||
|
, x40_chargedIce(chargedIce)
|
||||||
|
, x44_chargedWave(chargedWave)
|
||||||
|
, x48_chargedPlasma(chargedPlasma)
|
||||||
|
, x4c_superMissile(superMissile)
|
||||||
|
, x50_iceSpreader(iceSpreader)
|
||||||
|
, x54_wavebuster(waveBuster)
|
||||||
|
, x58_flamethrower(flameThrower)
|
||||||
|
, x5c_(v3)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
EVulnerability CDamageVulnerability::GetPhazonVulnerability(const CWeaponMode& mode) const
|
EVulnerability CDamageVulnerability::GetPhazonVulnerability(const CWeaponMode& mode) const
|
||||||
{
|
{
|
||||||
if (mode.IsCharged())
|
if (mode.IsCharged())
|
||||||
|
|
|
@ -53,14 +53,32 @@ class CDamageVulnerability
|
||||||
|
|
||||||
void ConstructNew(CInputStream& in, int propCount);
|
void ConstructNew(CInputStream& in, int propCount);
|
||||||
|
|
||||||
|
static const CDamageVulnerability sNormalVulnerability;
|
||||||
|
static const CDamageVulnerability sImmuneVulnerability;
|
||||||
|
static const CDamageVulnerability sReflectVulnerability;
|
||||||
|
static const CDamageVulnerability sPassThroughVulnerability;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CDamageVulnerability(CInputStream& in);
|
CDamageVulnerability(CInputStream& in);
|
||||||
|
CDamageVulnerability(EVulnerability power, EVulnerability ice, EVulnerability wave, EVulnerability plasma,
|
||||||
|
EVulnerability bomb, EVulnerability powerBomb, EVulnerability missile,
|
||||||
|
EVulnerability boostBall, EVulnerability phazon, EVulnerability enemyWp1,
|
||||||
|
EVulnerability enemyWp2, EVulnerability enemyWp3, EVulnerability enemyWp4, EVulnerability v1,
|
||||||
|
EVulnerability v2, EVulnerability chargedPower, EVulnerability chargedIce,
|
||||||
|
EVulnerability chargedWave, EVulnerability chargedPlasma, EVulnerability superMissile,
|
||||||
|
EVulnerability iceSpreader, EVulnerability waveBuster, EVulnerability flameThrower,
|
||||||
|
EVulnerability v3);
|
||||||
|
|
||||||
EVulnerability GetPhazonVulnerability(const CWeaponMode& mode) const;
|
EVulnerability GetPhazonVulnerability(const CWeaponMode& mode) const;
|
||||||
|
|
||||||
bool WeaponHurts(const CWeaponMode&, bool ignoreDirect) const;
|
bool WeaponHurts(const CWeaponMode&, bool ignoreDirect) const;
|
||||||
bool WeaponHits(const CWeaponMode& mode, bool checkDirect) const;
|
bool WeaponHits(const CWeaponMode& mode, bool checkDirect) const;
|
||||||
EVulnerability GetVulnerability(const CWeaponMode& mode, bool ignoreDirect) const;
|
EVulnerability GetVulnerability(const CWeaponMode& mode, bool ignoreDirect) const;
|
||||||
|
|
||||||
|
static CDamageVulnerability NormalVulnerabilty() { return sNormalVulnerability; }
|
||||||
|
static CDamageVulnerability ImmuneVulnerabilty() { return sImmuneVulnerability; }
|
||||||
|
static CDamageVulnerability ReflectVulnerabilty() { return sReflectVulnerability; }
|
||||||
|
static CDamageVulnerability PasshThroughVulnerabilty() { return sPassThroughVulnerability; }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ public:
|
||||||
bool InSpiderBallMode() const { return false; }
|
bool InSpiderBallMode() const { return false; }
|
||||||
zeus::CVector3f GetBallContactSurfaceNormal() const { return {}; }
|
zeus::CVector3f GetBallContactSurfaceNormal() const { return {}; }
|
||||||
void GetModel() const {}
|
void GetModel() const {}
|
||||||
CCollidableSphere GetCollidableSphere() const { return {}; }
|
CCollidableSphere* GetCollidableSphere() const { return nullptr; }
|
||||||
bool IsProjectile() const { return false; }
|
bool IsProjectile() const { return false; }
|
||||||
void GetBallContactMeterials() const {}
|
void GetBallContactMeterials() const {}
|
||||||
void GetWallBumpCounter() const {}
|
void GetWallBumpCounter() const {}
|
||||||
|
|
|
@ -10,7 +10,7 @@ CPhysicsActor::CPhysicsActor(TUniqueId uid, bool active, const std::string& name
|
||||||
: CActor(uid, active, name, info, xf, std::move(mData), matList, actorParms, kInvalidUniqueId)
|
: CActor(uid, active, name, info, xf, std::move(mData), matList, actorParms, kInvalidUniqueId)
|
||||||
, xe8_mass(moverData.x30_mass)
|
, xe8_mass(moverData.x30_mass)
|
||||||
, xec_massRecip(moverData.x30_mass <= 0.f ? 1.f : 1.f / moverData.x30_mass)
|
, xec_massRecip(moverData.x30_mass <= 0.f ? 1.f : 1.f / moverData.x30_mass)
|
||||||
, x150_momentum(moverData.x18_)
|
, x150_momentum(moverData.x18_momentum)
|
||||||
, x1c0_collisionPrimitive(box, matList)
|
, x1c0_collisionPrimitive(box, matList)
|
||||||
, x1f4_translation(xf.origin)
|
, x1f4_translation(xf.origin)
|
||||||
, x200_orientation(xf.buildMatrix3f())
|
, x200_orientation(xf.buildMatrix3f())
|
||||||
|
|
|
@ -13,7 +13,7 @@ struct SMoverData
|
||||||
{
|
{
|
||||||
zeus::CVector3f x0_velocity;
|
zeus::CVector3f x0_velocity;
|
||||||
zeus::CAxisAngle xc_angularVelocity;
|
zeus::CAxisAngle xc_angularVelocity;
|
||||||
zeus::CVector3f x18_;
|
zeus::CVector3f x18_momentum;
|
||||||
zeus::CAxisAngle x24_;
|
zeus::CAxisAngle x24_;
|
||||||
float x30_mass;
|
float x30_mass;
|
||||||
|
|
||||||
|
|
|
@ -218,6 +218,8 @@ enum class EScriptObjectMessage
|
||||||
InternalMessage16 = 38,
|
InternalMessage16 = 38,
|
||||||
InternalMessage17 = 39,
|
InternalMessage17 = 39,
|
||||||
InternalMessage18 = 40,
|
InternalMessage18 = 40,
|
||||||
|
InternalMessage19 = 41,
|
||||||
|
InternalMessage20 = 42
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue