summaryrefslogtreecommitdiff
path: root/Runtime/Dynamics/TerrainCollider.h
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Dynamics/TerrainCollider.h')
-rw-r--r--Runtime/Dynamics/TerrainCollider.h46
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