diff options
Diffstat (limited to 'Runtime/Dynamics/TerrainCollider.h')
-rw-r--r-- | Runtime/Dynamics/TerrainCollider.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Runtime/Dynamics/TerrainCollider.h b/Runtime/Dynamics/TerrainCollider.h new file mode 100644 index 0000000..1d01f41 --- /dev/null +++ b/Runtime/Dynamics/TerrainCollider.h @@ -0,0 +1,46 @@ +#pragma once + +#if ENABLE_TERRAIN && ENABLE_PHYSICS + +#include "Runtime/Math/Vector3.h" +#include "Runtime/Utilities/LinkedList.h" +#include "Runtime/Dynamics/Collider.h" + +class TerrainData; + +class TerrainCollider : public Collider +{ + PPtr<TerrainData> m_TerrainData; + bool m_CreateTreeColliders; + ListNode<TerrainCollider> m_Node; + std::vector<NxShape*> m_TreeColliders; + Vector3f m_CachedInvSize; + + public: + + TerrainCollider (MemLabelId label, ObjectCreationMode mode); + + REGISTER_DERIVED_CLASS(TerrainCollider, Collider) + DECLARE_OBJECT_SERIALIZE(TerrainCollider) + + void ScaleChanged (){} + void FetchPoseFromTransform (); + + Vector3f GetCachedInvSize () { return m_CachedInvSize; } + + void SetTerrainData (PPtr<TerrainData> map); + TerrainData* GetTerrainData (); + + void CreateTrees (); + virtual void TransformChanged (int changeMask); + void TerrainChanged (int changeMask); + virtual void Create (const Rigidbody* ignoreAttachRigidbody); + virtual void Cleanup (); + static void InitializeClass (); + static void CleanupClass () {} + + bool HasShape() const { return m_Shape != NULL; } + virtual bool SupportsMaterial () const { return false; } +}; + +#endif
\ No newline at end of file |