Added ability to get other instances of .net scripts using GetEntity<T>

This commit is contained in:
Antoine Pilote
2024-04-02 00:12:04 -04:00
parent 3d60ab1608
commit 33b4f75461
4 changed files with 63 additions and 52 deletions

View File

@@ -21,6 +21,7 @@
#include "src/Scene/Components/QuakeMap.h"
#include "src/Physics/PhysicsManager.h"
#include "src/Scripting/ScriptingEngineNet.h"
#include <Coral/Array.hpp>
@@ -38,6 +39,24 @@ namespace Nuake {
return scene->GetEntity(entityName).GetHandle();
}
Coral::ManagedObject GetEntityScript(Coral::String entityName)
{
auto scene = Engine::GetCurrentScene();
if (!scene->EntityExists(entityName))
{
return Coral::ManagedObject(); // Error code: entity not found.
}
Entity entity = scene->GetEntity(entityName);
auto& scriptingEngine = ScriptingEngineNet::Get();
if (scriptingEngine.HasEntityScriptInstance(entity))
{
auto instance = scriptingEngine.GetEntityScript(entity);
return instance;
}
}
static enum ComponentTypes
{
Unknown = -1,
@@ -216,6 +235,7 @@ namespace Nuake {
{
RegisterMethod("Entity.EntityHasComponentIcall", &EntityHasComponent);
RegisterMethod("Scene.GetEntityIcall", &GetEntity);
RegisterMethod("Scene.GetEntityScriptIcall", &GetEntityScript);
// Components
RegisterMethod("TransformComponent.SetPositionIcall", &TransformSetPosition);