BsScriptMesh.generated.cpp 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. #include "BsScriptMesh.generated.h"
  2. #include "BsMonoMethod.h"
  3. #include "BsMonoClass.h"
  4. #include "BsMonoUtil.h"
  5. #include "../../../bsf/Source/Foundation/bsfCore/Mesh/BsMesh.h"
  6. #include "BsScriptResourceManager.h"
  7. #include "Wrappers/BsScriptRRefBase.h"
  8. #include "BsScriptSkeleton.generated.h"
  9. #include "BsScriptRendererMeshData.generated.h"
  10. #include "BsScriptMorphShapes.generated.h"
  11. #include "BsScriptSubMesh.generated.h"
  12. #include "../../../bsf/Source/Foundation/bsfCore/Mesh/BsMesh.h"
  13. #include "../../SBansheeEngine/Extensions/BsMeshEx.h"
  14. namespace bs
  15. {
  16. ScriptMesh::ScriptMesh(MonoObject* managedInstance, const ResourceHandle<Mesh>& value)
  17. :TScriptResource(managedInstance, value)
  18. {
  19. }
  20. void ScriptMesh::initRuntimeData()
  21. {
  22. metaData.scriptClass->addInternalCall("Internal_GetRef", (void*)&ScriptMesh::Internal_getRef);
  23. metaData.scriptClass->addInternalCall("Internal_getSkeleton", (void*)&ScriptMesh::Internal_getSkeleton);
  24. metaData.scriptClass->addInternalCall("Internal_getMorphShapes", (void*)&ScriptMesh::Internal_getMorphShapes);
  25. metaData.scriptClass->addInternalCall("Internal_create", (void*)&ScriptMesh::Internal_create);
  26. metaData.scriptClass->addInternalCall("Internal_create0", (void*)&ScriptMesh::Internal_create0);
  27. metaData.scriptClass->addInternalCall("Internal_create1", (void*)&ScriptMesh::Internal_create1);
  28. metaData.scriptClass->addInternalCall("Internal_create2", (void*)&ScriptMesh::Internal_create2);
  29. metaData.scriptClass->addInternalCall("Internal_getSubMeshes", (void*)&ScriptMesh::Internal_getSubMeshes);
  30. metaData.scriptClass->addInternalCall("Internal_getSubMeshCount", (void*)&ScriptMesh::Internal_getSubMeshCount);
  31. metaData.scriptClass->addInternalCall("Internal_getBounds", (void*)&ScriptMesh::Internal_getBounds);
  32. metaData.scriptClass->addInternalCall("Internal_getMeshData", (void*)&ScriptMesh::Internal_getMeshData);
  33. metaData.scriptClass->addInternalCall("Internal_setMeshData", (void*)&ScriptMesh::Internal_setMeshData);
  34. }
  35. MonoObject*ScriptMesh::createInstance()
  36. {
  37. bool dummy = false;
  38. void* ctorParams[1] = { &dummy };
  39. return metaData.scriptClass->createInstance("bool", ctorParams);
  40. }
  41. MonoObject* ScriptMesh::Internal_getRef(ScriptMesh* thisPtr)
  42. {
  43. return thisPtr->getRRef();
  44. }
  45. MonoObject* ScriptMesh::Internal_getSkeleton(ScriptMesh* thisPtr)
  46. {
  47. SPtr<Skeleton> tmp__output;
  48. tmp__output = thisPtr->getHandle()->getSkeleton();
  49. MonoObject* __output;
  50. __output = ScriptSkeleton::create(tmp__output);
  51. return __output;
  52. }
  53. MonoObject* ScriptMesh::Internal_getMorphShapes(ScriptMesh* thisPtr)
  54. {
  55. SPtr<MorphShapes> tmp__output;
  56. tmp__output = thisPtr->getHandle()->getMorphShapes();
  57. MonoObject* __output;
  58. __output = ScriptMorphShapes::create(tmp__output);
  59. return __output;
  60. }
  61. void ScriptMesh::Internal_create(MonoObject* managedInstance, int32_t numVertices, int32_t numIndices, DrawOperationType topology, MeshUsage usage, VertexLayout vertex, IndexType index)
  62. {
  63. ResourceHandle<Mesh> instance = MeshEx::create(numVertices, numIndices, topology, usage, vertex, index);
  64. ScriptResourceManager::instance().createBuiltinScriptResource(instance, managedInstance);
  65. }
  66. void ScriptMesh::Internal_create0(MonoObject* managedInstance, int32_t numVertices, int32_t numIndices, MonoArray* subMeshes, MeshUsage usage, VertexLayout vertex, IndexType index)
  67. {
  68. Vector<SubMesh> vecsubMeshes;
  69. if(subMeshes != nullptr)
  70. {
  71. ScriptArray arraysubMeshes(subMeshes);
  72. vecsubMeshes.resize(arraysubMeshes.size());
  73. for(int i = 0; i < (int)arraysubMeshes.size(); i++)
  74. {
  75. vecsubMeshes[i] = arraysubMeshes.get<SubMesh>(i);
  76. }
  77. }
  78. ResourceHandle<Mesh> instance = MeshEx::create(numVertices, numIndices, vecsubMeshes, usage, vertex, index);
  79. ScriptResourceManager::instance().createBuiltinScriptResource(instance, managedInstance);
  80. }
  81. void ScriptMesh::Internal_create1(MonoObject* managedInstance, MonoObject* data, DrawOperationType topology, MeshUsage usage)
  82. {
  83. SPtr<RendererMeshData> tmpdata;
  84. ScriptRendererMeshData* scriptdata;
  85. scriptdata = ScriptRendererMeshData::toNative(data);
  86. if(scriptdata != nullptr)
  87. tmpdata = scriptdata->getInternal();
  88. ResourceHandle<Mesh> instance = MeshEx::create(tmpdata, topology, usage);
  89. ScriptResourceManager::instance().createBuiltinScriptResource(instance, managedInstance);
  90. }
  91. void ScriptMesh::Internal_create2(MonoObject* managedInstance, MonoObject* data, MonoArray* subMeshes, MeshUsage usage)
  92. {
  93. SPtr<RendererMeshData> tmpdata;
  94. ScriptRendererMeshData* scriptdata;
  95. scriptdata = ScriptRendererMeshData::toNative(data);
  96. if(scriptdata != nullptr)
  97. tmpdata = scriptdata->getInternal();
  98. Vector<SubMesh> vecsubMeshes;
  99. if(subMeshes != nullptr)
  100. {
  101. ScriptArray arraysubMeshes(subMeshes);
  102. vecsubMeshes.resize(arraysubMeshes.size());
  103. for(int i = 0; i < (int)arraysubMeshes.size(); i++)
  104. {
  105. vecsubMeshes[i] = arraysubMeshes.get<SubMesh>(i);
  106. }
  107. }
  108. ResourceHandle<Mesh> instance = MeshEx::create(tmpdata, vecsubMeshes, usage);
  109. ScriptResourceManager::instance().createBuiltinScriptResource(instance, managedInstance);
  110. }
  111. MonoArray* ScriptMesh::Internal_getSubMeshes(ScriptMesh* thisPtr)
  112. {
  113. Vector<SubMesh> vec__output;
  114. vec__output = MeshEx::getSubMeshes(thisPtr->getHandle());
  115. MonoArray* __output;
  116. int arraySize__output = (int)vec__output.size();
  117. ScriptArray array__output = ScriptArray::create<ScriptSubMesh>(arraySize__output);
  118. for(int i = 0; i < arraySize__output; i++)
  119. {
  120. array__output.set(i, vec__output[i]);
  121. }
  122. __output = array__output.getInternal();
  123. return __output;
  124. }
  125. uint32_t ScriptMesh::Internal_getSubMeshCount(ScriptMesh* thisPtr)
  126. {
  127. uint32_t tmp__output;
  128. tmp__output = MeshEx::getSubMeshCount(thisPtr->getHandle());
  129. uint32_t __output;
  130. __output = tmp__output;
  131. return __output;
  132. }
  133. void ScriptMesh::Internal_getBounds(ScriptMesh* thisPtr, AABox* box, Sphere* sphere)
  134. {
  135. MeshEx::getBounds(thisPtr->getHandle(), box, sphere);
  136. }
  137. MonoObject* ScriptMesh::Internal_getMeshData(ScriptMesh* thisPtr)
  138. {
  139. SPtr<RendererMeshData> tmp__output;
  140. tmp__output = MeshEx::getMeshData(thisPtr->getHandle());
  141. MonoObject* __output;
  142. __output = ScriptRendererMeshData::create(tmp__output);
  143. return __output;
  144. }
  145. void ScriptMesh::Internal_setMeshData(ScriptMesh* thisPtr, MonoObject* value)
  146. {
  147. SPtr<RendererMeshData> tmpvalue;
  148. ScriptRendererMeshData* scriptvalue;
  149. scriptvalue = ScriptRendererMeshData::toNative(value);
  150. if(scriptvalue != nullptr)
  151. tmpvalue = scriptvalue->getInternal();
  152. MeshEx::setMeshData(thisPtr->getHandle(), tmpvalue);
  153. }
  154. }