|
|
@@ -170,144 +170,4 @@ namespace bs
|
|
|
|
|
|
ScriptObject::_onManagedInstanceDeleted();
|
|
|
}
|
|
|
-
|
|
|
- ScriptRenderable2::ScriptRenderable2(MonoObject* managedInstance, const HComponent& component)
|
|
|
- :TScriptComponent <ScriptRenderable2, CRenderable>(managedInstance, component)
|
|
|
- { }
|
|
|
-
|
|
|
- ScriptRenderable2::~ScriptRenderable2()
|
|
|
- { }
|
|
|
-
|
|
|
- void ScriptRenderable2::initRuntimeData()
|
|
|
- {
|
|
|
- metaData.scriptClass->addInternalCall("Internal_GetMesh", &ScriptRenderable2::internal_GetMesh);
|
|
|
- metaData.scriptClass->addInternalCall("Internal_SetMesh", &ScriptRenderable2::internal_SetMesh);
|
|
|
- metaData.scriptClass->addInternalCall("Internal_GetBounds", &ScriptRenderable2::internal_GetBounds);
|
|
|
- metaData.scriptClass->addInternalCall("Internal_GetLayers", &ScriptRenderable2::internal_GetLayers);
|
|
|
- metaData.scriptClass->addInternalCall("Internal_SetLayers", &ScriptRenderable2::internal_SetLayers);
|
|
|
- metaData.scriptClass->addInternalCall("Internal_GetMaterial", &ScriptRenderable2::internal_GetMaterial);
|
|
|
- metaData.scriptClass->addInternalCall("Internal_SetMaterial", &ScriptRenderable2::internal_SetMaterial);
|
|
|
- metaData.scriptClass->addInternalCall("Internal_GetMaterials", &ScriptRenderable2::internal_GetMaterials);
|
|
|
- metaData.scriptClass->addInternalCall("Internal_SetMaterials", &ScriptRenderable2::internal_SetMaterials);
|
|
|
- }
|
|
|
-
|
|
|
- MonoObject* ScriptRenderable2::internal_GetMesh(ScriptRenderable2* thisPtr)
|
|
|
- {
|
|
|
- HMesh mesh = thisPtr->getHandle()->getMesh();
|
|
|
-
|
|
|
- if (!mesh.isLoaded(false))
|
|
|
- return nullptr;
|
|
|
-
|
|
|
- ScriptMesh* scriptMesh;
|
|
|
- ScriptResourceManager::instance().getScriptResource(mesh, &scriptMesh, true);
|
|
|
-
|
|
|
- return scriptMesh->getManagedInstance();
|
|
|
- }
|
|
|
-
|
|
|
- void ScriptRenderable2::internal_SetMesh(ScriptRenderable2* thisPtr, ScriptMesh* mesh)
|
|
|
- {
|
|
|
- HMesh nativeMesh;
|
|
|
- if (mesh != nullptr)
|
|
|
- nativeMesh = mesh->getHandle();
|
|
|
-
|
|
|
- HRenderable renderable = thisPtr->getHandle();
|
|
|
- renderable->setMesh(nativeMesh);
|
|
|
- }
|
|
|
-
|
|
|
- void ScriptRenderable2::internal_GetBounds(ScriptRenderable2* thisPtr, AABox* box, Sphere* sphere)
|
|
|
- {
|
|
|
- Bounds bounds = thisPtr->getHandle()->getBounds();
|
|
|
-
|
|
|
- *box = bounds.getBox();
|
|
|
- *sphere = bounds.getSphere();
|
|
|
- }
|
|
|
-
|
|
|
- UINT64 ScriptRenderable2::internal_GetLayers(ScriptRenderable2* thisPtr)
|
|
|
- {
|
|
|
- return thisPtr->getHandle()->getLayer();
|
|
|
- }
|
|
|
-
|
|
|
- void ScriptRenderable2::internal_SetLayers(ScriptRenderable2* thisPtr, UINT64 layers)
|
|
|
- {
|
|
|
- thisPtr->getHandle()->setLayer(layers);
|
|
|
- }
|
|
|
-
|
|
|
- MonoObject* ScriptRenderable2::internal_GetMaterial(ScriptRenderable2* thisPtr, int index)
|
|
|
- {
|
|
|
- HMaterial material = thisPtr->getHandle()->getMaterial(index);
|
|
|
- if (!material.isLoaded())
|
|
|
- return nullptr;
|
|
|
-
|
|
|
- ScriptMaterial* scriptMaterial;
|
|
|
- ScriptResourceManager::instance().getScriptResource(material, &scriptMaterial, true);
|
|
|
-
|
|
|
- return scriptMaterial->getManagedInstance();
|
|
|
- }
|
|
|
-
|
|
|
- void ScriptRenderable2::internal_SetMaterial(ScriptRenderable2* thisPtr, ScriptMaterial* material, int index)
|
|
|
- {
|
|
|
- HMaterial nativeMaterial;
|
|
|
- if (material != nullptr)
|
|
|
- nativeMaterial = material->getHandle();
|
|
|
-
|
|
|
- thisPtr->getHandle()->setMaterial(index, nativeMaterial);
|
|
|
- }
|
|
|
-
|
|
|
- MonoArray* ScriptRenderable2::internal_GetMaterials(ScriptRenderable2* thisPtr)
|
|
|
- {
|
|
|
- HRenderable renderable = thisPtr->getHandle();
|
|
|
-
|
|
|
- HMesh mesh = renderable->getMesh();
|
|
|
- if (!mesh.isLoaded())
|
|
|
- return ScriptArray::create<ScriptMaterial>(0).getInternal();
|
|
|
-
|
|
|
- UINT32 numMaterials = mesh->getProperties().getNumSubMeshes();
|
|
|
- ScriptArray output = ScriptArray::create<ScriptMaterial>(numMaterials);
|
|
|
-
|
|
|
- for(UINT32 i = 0; i < numMaterials; i++)
|
|
|
- {
|
|
|
- HMaterial material = renderable->getMaterial(i);
|
|
|
- if (!material.isLoaded())
|
|
|
- output.set(i, nullptr);
|
|
|
- else
|
|
|
- {
|
|
|
- ScriptMaterial* scriptMaterial;
|
|
|
- ScriptResourceManager::instance().getScriptResource(material, &scriptMaterial, true);
|
|
|
-
|
|
|
- output.set(i, scriptMaterial->getManagedInstance());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return output.getInternal();
|
|
|
- }
|
|
|
-
|
|
|
- void ScriptRenderable2::internal_SetMaterials(ScriptRenderable2* thisPtr, MonoArray* materials)
|
|
|
- {
|
|
|
- HRenderable renderable = thisPtr->getHandle();
|
|
|
-
|
|
|
- if (materials != nullptr)
|
|
|
- {
|
|
|
- ScriptArray scriptMaterials(materials);
|
|
|
-
|
|
|
- Vector<HMaterial> nativeMaterials(scriptMaterials.size());
|
|
|
- for (UINT32 i = 0; i < scriptMaterials.size(); i++)
|
|
|
- {
|
|
|
- MonoObject* monoMaterial = scriptMaterials.get<MonoObject*>(i);
|
|
|
- ScriptMaterial* scriptMaterial = ScriptMaterial::toNative(monoMaterial);
|
|
|
-
|
|
|
- if (scriptMaterial != nullptr)
|
|
|
- renderable->setMaterial(i, scriptMaterial->getHandle());
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- HMesh mesh = renderable->getMesh();
|
|
|
- if (!mesh.isLoaded())
|
|
|
- return;
|
|
|
-
|
|
|
- UINT32 numMaterials = mesh->getProperties().getNumSubMeshes();
|
|
|
- for (UINT32 i = 0; i < numMaterials; i++)
|
|
|
- renderable->setMaterial(i, HMaterial());
|
|
|
- }
|
|
|
- }
|
|
|
}
|