summaryrefslogtreecommitdiff
path: root/Runtime/Physics2D/Physics2DMaterial.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Physics2D/Physics2DMaterial.cpp')
-rw-r--r--Runtime/Physics2D/Physics2DMaterial.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/Runtime/Physics2D/Physics2DMaterial.cpp b/Runtime/Physics2D/Physics2DMaterial.cpp
new file mode 100644
index 0000000..ff47e78
--- /dev/null
+++ b/Runtime/Physics2D/Physics2DMaterial.cpp
@@ -0,0 +1,65 @@
+#include "UnityPrefix.h"
+
+#if ENABLE_2D_PHYSICS
+#include "Runtime/Physics2D/Physics2DMaterial.h"
+#include "Runtime/Serialize/TransferFunctions/SerializeTransfer.h"
+
+IMPLEMENT_CLASS (PhysicsMaterial2D)
+IMPLEMENT_OBJECT_SERIALIZE (PhysicsMaterial2D)
+
+
+// --------------------------------------------------------------------------
+
+
+PhysicsMaterial2D::PhysicsMaterial2D (MemLabelId label, ObjectCreationMode mode)
+: Super(label, mode)
+{
+}
+
+
+PhysicsMaterial2D::~PhysicsMaterial2D ()
+{
+}
+
+
+void PhysicsMaterial2D::Reset ()
+{
+ Super::Reset();
+ m_Friction = 0.4f;
+ m_Bounciness = 0.0f;
+}
+
+
+void PhysicsMaterial2D::CheckConsistency ()
+{
+ Super::CheckConsistency ();
+
+ m_Friction = clamp(m_Friction, 0.0f, 100000.0f);
+ m_Bounciness = clamp(m_Bounciness, 0.0f, 1.0f);
+}
+
+
+template<class TransferFunction>
+void PhysicsMaterial2D::Transfer (TransferFunction& transfer)
+{
+ Super::Transfer (transfer);
+
+ transfer.Transfer (m_Friction, "friction", kSimpleEditorMask);
+ transfer.Transfer (m_Bounciness, "bounciness", kSimpleEditorMask);
+}
+
+
+void PhysicsMaterial2D::SetFriction (float friction)
+{
+ m_Friction = clamp (friction, 0.0f, 100000.0f);
+ SetDirty ();
+}
+
+
+void PhysicsMaterial2D::SetBounciness (float bounce)
+{
+ m_Bounciness = clamp (bounce, 0.0f, 1.0f);
+ SetDirty ();
+}
+
+#endif //ENABLE_2D_PHYSICS