summaryrefslogtreecommitdiff
path: root/Runtime/Dynamics/MeshCollider.h
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Dynamics/MeshCollider.h')
-rw-r--r--Runtime/Dynamics/MeshCollider.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/Runtime/Dynamics/MeshCollider.h b/Runtime/Dynamics/MeshCollider.h
new file mode 100644
index 0000000..1773561
--- /dev/null
+++ b/Runtime/Dynamics/MeshCollider.h
@@ -0,0 +1,63 @@
+#ifndef MESHCOLLIDER_H
+#define MESHCOLLIDER_H
+
+#include "Collider.h"
+#include "Runtime/Math/Vector3.h"
+class Mesh;
+
+#if UNITY_EDITOR
+class NxConvexMesh;
+class NxTriangleMesh;
+#endif
+
+class MeshCollider : public Collider
+{
+public:
+ REGISTER_DERIVED_CLASS (MeshCollider, Collider)
+ DECLARE_OBJECT_SERIALIZE (MeshCollider)
+
+ MeshCollider (MemLabelId label, ObjectCreationMode mode);
+
+ void SetSharedMesh (const PPtr<Mesh> m);
+ PPtr<Mesh> GetSharedMesh ();
+
+ void SetConvex (bool convex);
+ bool GetConvex () const { return m_Convex; }
+
+ void SetSmoothSphereCollisions (bool convex);
+ bool GetSmoothSphereCollisions () const { return m_SmoothSphereCollisions; }
+
+ virtual void Reset ();
+ virtual void AwakeFromLoad(AwakeFromLoadMode mode);
+
+ virtual void TransformChanged (int changeMask);
+ static void InitializeClass ();
+ static void CleanupClass () {}
+ void DidDeleteMesh ();
+
+ #if UNITY_EDITOR
+ const NxConvexMesh* GetConvexMesh() const;
+ const NxTriangleMesh* GetTriangleMesh() const;
+ #endif
+
+private:
+ void CreateShape( void* nxmesh, const Rigidbody* ignoreRigidbody );
+
+protected:
+
+ virtual void Create (const Rigidbody* ignoreRigidbody);
+ virtual void Cleanup ();
+ virtual void ReCreate();
+ void ScaleChanged ();
+
+ //virtual NxCCDSkeleton* CreateCCDSkeleton(float scale);
+
+ bool m_SmoothSphereCollisions;
+ bool m_Convex;
+ bool m_Shared;
+ PPtr<Mesh> m_Mesh;
+ PPtr<Mesh> m_CachedMesh;
+ ListNode<Object> m_MeshNode;
+};
+
+#endif