BsScriptPhysicsMaterial.cpp 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsScriptPhysicsMaterial.h"
  4. #include "BsScriptResourceManager.h"
  5. #include "BsScriptMeta.h"
  6. #include "BsMonoClass.h"
  7. #include "BsMonoManager.h"
  8. namespace BansheeEngine
  9. {
  10. ScriptPhysicsMaterial::ScriptPhysicsMaterial(MonoObject* instance, const HPhysicsMaterial& material)
  11. :TScriptResource(instance, material)
  12. {
  13. }
  14. void ScriptPhysicsMaterial::initRuntimeData()
  15. {
  16. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptPhysicsMaterial::internal_CreateInstance);
  17. metaData.scriptClass->addInternalCall("Internal_GetStaticFriction", &ScriptPhysicsMaterial::internal_GetStaticFriction);
  18. metaData.scriptClass->addInternalCall("Internal_SetStaticFriction", &ScriptPhysicsMaterial::internal_SetStaticFriction);
  19. metaData.scriptClass->addInternalCall("Internal_GetDynamicFriction", &ScriptPhysicsMaterial::internal_GetDynamicFriction);
  20. metaData.scriptClass->addInternalCall("Internal_SetDynamicFriction", &ScriptPhysicsMaterial::internal_SetDynamicFriction);
  21. metaData.scriptClass->addInternalCall("Internal_GetRestitution", &ScriptPhysicsMaterial::internal_GetRestitution);
  22. metaData.scriptClass->addInternalCall("Internal_SetRestitution", &ScriptPhysicsMaterial::internal_SetRestitution);
  23. }
  24. void ScriptPhysicsMaterial::internal_CreateInstance(MonoObject* instance, float staticFriction,
  25. float dynamicFriction, float restitution)
  26. {
  27. HPhysicsMaterial material = PhysicsMaterial::create(staticFriction, dynamicFriction, restitution);
  28. ScriptPhysicsMaterial* scriptInstance;
  29. ScriptResourceManager::instance().createScriptResource(instance, material, &scriptInstance);
  30. }
  31. float ScriptPhysicsMaterial::internal_GetStaticFriction(ScriptPhysicsMaterial* thisPtr)
  32. {
  33. HPhysicsMaterial material = thisPtr->getHandle();
  34. return material->getStaticFriction();
  35. }
  36. void ScriptPhysicsMaterial::internal_SetStaticFriction(ScriptPhysicsMaterial* thisPtr, float value)
  37. {
  38. HPhysicsMaterial material = thisPtr->getHandle();
  39. material->setStaticFriction(value);
  40. }
  41. float ScriptPhysicsMaterial::internal_GetDynamicFriction(ScriptPhysicsMaterial* thisPtr)
  42. {
  43. HPhysicsMaterial material = thisPtr->getHandle();
  44. return material->getDynamicFriction();
  45. }
  46. void ScriptPhysicsMaterial::internal_SetDynamicFriction(ScriptPhysicsMaterial* thisPtr, float value)
  47. {
  48. HPhysicsMaterial material = thisPtr->getHandle();
  49. material->setDynamicFriction(value);
  50. }
  51. float ScriptPhysicsMaterial::internal_GetRestitution(ScriptPhysicsMaterial* thisPtr)
  52. {
  53. HPhysicsMaterial material = thisPtr->getHandle();
  54. return material->getRestitutionCoefficient();
  55. }
  56. void ScriptPhysicsMaterial::internal_SetRestitution(ScriptPhysicsMaterial* thisPtr, float value)
  57. {
  58. HPhysicsMaterial material = thisPtr->getHandle();
  59. material->setRestitutionCoefficient(value);
  60. }
  61. MonoObject* ScriptPhysicsMaterial::createInstance()
  62. {
  63. bool dummy = false;
  64. void* params[1];
  65. params[0] = &dummy;
  66. return metaData.scriptClass->createInstance("bool", params);
  67. }
  68. }