mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-05-14 11:11:21 +00:00
More collision stubs
Add *.autosave to gitignore Update specter
This commit is contained in:
parent
d3563ea86d
commit
f470b7de93
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
|||||||
version.h
|
version.h
|
||||||
*.user
|
*.user
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
*.autosave
|
||||||
|
@ -5,6 +5,12 @@
|
|||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
namespace Collide
|
||||||
|
{
|
||||||
|
bool AABox_AABox(const CInternalCollisionStructure&, CCollisionInfoList&);
|
||||||
|
bool AABox_AABox_Bool(const CInternalCollisionStructure&, CCollisionInfoList&);
|
||||||
|
}
|
||||||
|
|
||||||
class CCollidableAABox : public CCollisionPrimitive
|
class CCollidableAABox : public CCollisionPrimitive
|
||||||
{
|
{
|
||||||
static const Type sType;
|
static const Type sType;
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
#include "CCollisionInfo.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
@ -1,11 +1,14 @@
|
|||||||
#ifndef __URDE_CCOLLISIONINFO_HPP__
|
#ifndef __URDE_CCOLLISIONINFO_HPP__
|
||||||
#define __URDE_CCOLLISIONINFO_HPP__
|
#define __URDE_CCOLLISIONINFO_HPP__
|
||||||
|
|
||||||
|
#include "zeus/CAABox.hpp"
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
class CMaterialList;
|
||||||
class CCollisionInfo
|
class CCollisionInfo
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
0
Runtime/Collision/CCollisionInfoList.cpp
Normal file
0
Runtime/Collision/CCollisionInfoList.cpp
Normal file
30
Runtime/Collision/CCollisionInfoList.hpp
Normal file
30
Runtime/Collision/CCollisionInfoList.hpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#ifndef __URDE_CCOLLISIONINFOLIST_HPP__
|
||||||
|
#define __URDE_CCOLLISIONINFOLIST_HPP__
|
||||||
|
|
||||||
|
#include "RetroTypes.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
class CCollisionInfo;
|
||||||
|
class CCollisionInfoList
|
||||||
|
{
|
||||||
|
rstl::reserved_vector<CCollisionInfo, 32> x0_list;
|
||||||
|
public:
|
||||||
|
CCollisionInfoList() = default;
|
||||||
|
|
||||||
|
void GetAverageLeftNormal() const;
|
||||||
|
void GetAveragePoint() const;
|
||||||
|
void GetUnionOfAllLeftMaterials() const;
|
||||||
|
s32 GetCount() const;
|
||||||
|
void Swap(s32);
|
||||||
|
|
||||||
|
void Add(const CCollisionInfo&, bool);
|
||||||
|
void Clear();
|
||||||
|
void End();
|
||||||
|
void End() const;
|
||||||
|
void Begin();
|
||||||
|
void Begin() const;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // __URDE_CCOLLISIONINFOLIST_HPP__
|
@ -50,7 +50,7 @@ void CCollisionPrimitive::InitEndTypes()
|
|||||||
sTypesAdding = false;
|
sTypesAdding = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
CCollisionPrimitive::Type::Type(std::function<void (unsigned int)> setter, const char *info)
|
CCollisionPrimitive::Type::Type(const std::function<void(u32)>& setter, const char *info)
|
||||||
: x0_setter(setter),
|
: x0_setter(setter),
|
||||||
x4_info(info)
|
x4_info(info)
|
||||||
{
|
{
|
||||||
|
@ -11,6 +11,9 @@ namespace urde
|
|||||||
{
|
{
|
||||||
|
|
||||||
class COBBTree;
|
class COBBTree;
|
||||||
|
class CInternalCollisionStructure;
|
||||||
|
class CCollisionInfo;
|
||||||
|
class CCollisionInfoList;
|
||||||
class CInternalRayCastStructure;
|
class CInternalRayCastStructure;
|
||||||
class CMaterialFilter;
|
class CMaterialFilter;
|
||||||
class CCollisionPrimitive
|
class CCollisionPrimitive
|
||||||
@ -29,13 +32,73 @@ public:
|
|||||||
const char* x4_info;
|
const char* x4_info;
|
||||||
public:
|
public:
|
||||||
Type() = default;
|
Type() = default;
|
||||||
Type(std::function<void(unsigned int)> setter, const char * info);
|
Type(const std::function<void(u32)>& setter, const char * info);
|
||||||
|
|
||||||
const char* GetInfo() const;
|
const char* GetInfo() const;
|
||||||
|
|
||||||
std::function<void(u32)> GetSetter() const;
|
std::function<void(u32)> GetSetter() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Comparison
|
||||||
|
{
|
||||||
|
std::function<bool(const CInternalCollisionStructure&, CCollisionInfoList&)> x0_collider;
|
||||||
|
const char* x4_type1;
|
||||||
|
const char* x8_type2;
|
||||||
|
public:
|
||||||
|
Comparison(const std::function<bool(const CInternalCollisionStructure&, CCollisionInfoList&)>& collider,
|
||||||
|
const char* type1, const char* type2)
|
||||||
|
: x0_collider(collider),
|
||||||
|
x4_type1(type1),
|
||||||
|
x8_type2(type2)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
std::function<bool(const CInternalCollisionStructure&, CCollisionInfoList&)> GetCollider() const { return x0_collider; }
|
||||||
|
const char* GetType1() const { return x4_type1; }
|
||||||
|
const char* GetType2() const { return x8_type2; }
|
||||||
|
};
|
||||||
|
|
||||||
|
class MovingComparison
|
||||||
|
{
|
||||||
|
std::function<bool(const CInternalCollisionStructure&, const zeus::CVector2f&, double&,
|
||||||
|
CCollisionInfo&)> x0_collider;
|
||||||
|
const char* x4_type1;
|
||||||
|
const char* x8_type2;
|
||||||
|
public:
|
||||||
|
MovingComparison(const std::function<bool(const CInternalCollisionStructure&, const zeus::CVector2f&, double&,
|
||||||
|
CCollisionInfo&)>& collider, const char* type1, const char* type2)
|
||||||
|
: x0_collider(collider),
|
||||||
|
x4_type1(type1),
|
||||||
|
x8_type2(type2)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
std::function<bool(const CInternalCollisionStructure&, const zeus::CVector2f&, double&,
|
||||||
|
CCollisionInfo&)> GetCollider() const { return x0_collider; }
|
||||||
|
const char* GetType1() const { return x4_type1; }
|
||||||
|
const char* GetType2() const { return x8_type2; }
|
||||||
|
};
|
||||||
|
|
||||||
|
class BooleanComparison
|
||||||
|
{
|
||||||
|
std::function<bool(const CInternalCollisionStructure&)> x0_collider;
|
||||||
|
const char* x4_type1;
|
||||||
|
const char* x8_type2;
|
||||||
|
|
||||||
|
public:
|
||||||
|
BooleanComparison(const std::function<bool(const CInternalCollisionStructure&)>& collider, const char* type1,
|
||||||
|
const char* type2)
|
||||||
|
: x0_collider(collider),
|
||||||
|
x4_type1(type1),
|
||||||
|
x8_type2(type2)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
std::function<bool(const CInternalCollisionStructure&)> GetCollider() const { return x0_collider; }
|
||||||
|
const char* GetType1() const { return x4_type1; }
|
||||||
|
const char* GetType2() const { return x8_type2; }
|
||||||
|
};
|
||||||
|
|
||||||
CCollisionPrimitive()=default;
|
CCollisionPrimitive()=default;
|
||||||
CCollisionPrimitive(const CMaterialList& list);
|
CCollisionPrimitive(const CMaterialList& list);
|
||||||
virtual u32 GetTableIndex() const=0;
|
virtual u32 GetTableIndex() const=0;
|
||||||
@ -55,7 +118,9 @@ public:
|
|||||||
static void InitEndTypes();
|
static void InitEndTypes();
|
||||||
|
|
||||||
static void InitBeginColliders();
|
static void InitBeginColliders();
|
||||||
static void InitAddCollider(const Type& tp);
|
static void InitAddBooleanCollider(const BooleanComparison& cmp);
|
||||||
|
static void InitAddMovingCollider(const MovingComparison& cmp);
|
||||||
|
static void InitAddCollider(const Comparison& cmp);
|
||||||
static void InitEndColliders();
|
static void InitEndColliders();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
set(COLLISION_SOURCES
|
set(COLLISION_SOURCES
|
||||||
|
CollisionUtil.hpp CollisionUtil.cpp
|
||||||
CGameCollision.hpp CGameCollision.cpp
|
CGameCollision.hpp CGameCollision.cpp
|
||||||
CCollisionInfo.hpp CCollisionInfo.cpp
|
CCollisionInfo.hpp CCollisionInfo.cpp
|
||||||
|
CCollisionInfoList.hpp CCollisionInfoList.cpp
|
||||||
CCollisionEdge.hpp CCollisionEdge.cpp
|
CCollisionEdge.hpp CCollisionEdge.cpp
|
||||||
CCollisionSurface.hpp CCollisionSurface.cpp
|
CCollisionSurface.hpp CCollisionSurface.cpp
|
||||||
InternalColliders.hpp InternalColliders.cpp
|
InternalColliders.hpp InternalColliders.cpp
|
||||||
|
25
Runtime/Collision/CollisionUtil.cpp
Normal file
25
Runtime/Collision/CollisionUtil.cpp
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#include "CollisionUtil.hpp"
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
namespace CollisionUtil
|
||||||
|
{
|
||||||
|
bool LineIntersectsOBBox(const zeus::COBBox& obb, const zeus::CMRay& ray, float& d)
|
||||||
|
{
|
||||||
|
const zeus::CVector3f transXf = obb.transform.toMatrix4f().vec[0].toVec3f();
|
||||||
|
return RayAABoxIntersection(ray.getInvUnscaledTransformRay(obb.transform), {-obb.extents, obb.extents},
|
||||||
|
transXf, d);
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 RayAABoxIntersection(const zeus::CMRay& ray, const zeus::CAABox& box, const zeus::CVector3f&, float& d)
|
||||||
|
{
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 RaySphereIntersection_Double(const zeus::CSphere&, const zeus::CVector3f &, const zeus::CVector3f &, double &)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
16
Runtime/Collision/CollisionUtil.hpp
Normal file
16
Runtime/Collision/CollisionUtil.hpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#ifndef __URDE_COLLISIONUTIL_HPP__
|
||||||
|
#define __URDE_COLLISIONUTIL_HPP__
|
||||||
|
|
||||||
|
#include "GCNTypes.hpp"
|
||||||
|
#include "zeus/zeus.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
namespace CollisionUtil
|
||||||
|
{
|
||||||
|
bool LineIntersectsOBBox(const zeus::COBBox&, const zeus::CMRay&, float&);
|
||||||
|
u32 RayAABoxIntersection(const zeus::CMRay&, const zeus::CAABox&, const zeus::CVector3f&, float&);
|
||||||
|
u32 RaySphereIntersection_Double(const zeus::CSphere&, const zeus::CVector3f&, const zeus::CVector3f&, double&);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // __URDE_COLLISIONUTIL_HPP__
|
2
specter
2
specter
@ -1 +1 @@
|
|||||||
Subproject commit 4dff27e3c69b11d7fa8232c4b32d28089e524b57
|
Subproject commit 47a6e28db624f100e8cbc6ef11f3feba2a575ec7
|
Loading…
x
Reference in New Issue
Block a user