Major cleanup.
Moved to namespace Cleanup includes
This commit is contained in:
@@ -5,27 +5,29 @@
|
||||
#include "ScriptModule.h"
|
||||
#include <iostream>
|
||||
#include <wren.h>
|
||||
|
||||
namespace ScriptAPI
|
||||
namespace Nuake
|
||||
{
|
||||
class EngineModule : public ScriptModule
|
||||
namespace ScriptAPI
|
||||
{
|
||||
std::string ModuleName = "Engine";
|
||||
|
||||
std::string GetModuleName() override
|
||||
class EngineModule : public ScriptModule
|
||||
{
|
||||
return "Engine";
|
||||
}
|
||||
std::string ModuleName = "Engine";
|
||||
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("Log(_)", (void*)Log);
|
||||
}
|
||||
std::string GetModuleName() override
|
||||
{
|
||||
return "Engine";
|
||||
}
|
||||
|
||||
static void Log(WrenVM* vm)
|
||||
{
|
||||
std::string msg = wrenGetSlotString(vm, 1);
|
||||
Logger::Log(msg);
|
||||
}
|
||||
};
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("Log(_)", (void*)Log);
|
||||
}
|
||||
|
||||
static void Log(WrenVM* vm)
|
||||
{
|
||||
std::string msg = wrenGetSlotString(vm, 1);
|
||||
Logger::Log(msg);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -6,33 +6,34 @@
|
||||
#include <iostream>
|
||||
#include <wren.h>
|
||||
|
||||
namespace ScriptAPI
|
||||
namespace Nuake
|
||||
{
|
||||
class EngineModule : public ScriptModule
|
||||
namespace ScriptAPI
|
||||
{
|
||||
std::string ModuleName = "Engine";
|
||||
std::string WrenAPI = "class Engine { \n"
|
||||
"foreign static Log(msg) \n"
|
||||
"}"
|
||||
"";
|
||||
|
||||
std::string GetModuleName() override
|
||||
class EngineModule : public ScriptModule
|
||||
{
|
||||
return "Engine";
|
||||
}
|
||||
std::string ModuleName = "Engine";
|
||||
std::string WrenAPI = "class Engine { \n"
|
||||
"foreign static Log(msg) \n"
|
||||
"}"
|
||||
"";
|
||||
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("Log(_)", (void*)Log);
|
||||
WrenInterpretResult result = wrenInterpret(vm, "main", WrenAPI.c_str());
|
||||
}
|
||||
|
||||
static void Log(WrenVM* vm)
|
||||
{
|
||||
std::string msg = wrenGetSlotString(vm, 1);
|
||||
Logger::Log(msg);
|
||||
}
|
||||
};
|
||||
std::string GetModuleName() override
|
||||
{
|
||||
return "Engine";
|
||||
}
|
||||
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("Log(_)", (void*)Log);
|
||||
WrenInterpretResult result = wrenInterpret(vm, "main", WrenAPI.c_str());
|
||||
}
|
||||
|
||||
static void Log(WrenVM* vm)
|
||||
{
|
||||
std::string msg = wrenGetSlotString(vm, 1);
|
||||
Logger::Log(msg);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -8,98 +8,99 @@
|
||||
#include "../Core/Maths.h"
|
||||
#include "../Core/Input.h"
|
||||
|
||||
namespace ScriptAPI
|
||||
{
|
||||
class InputModule : public ScriptModule
|
||||
{
|
||||
std::string GetModuleName() override
|
||||
namespace Nuake {
|
||||
namespace ScriptAPI {
|
||||
class InputModule : public ScriptModule
|
||||
{
|
||||
return "Input";
|
||||
}
|
||||
std::string GetModuleName() override
|
||||
{
|
||||
return "Input";
|
||||
}
|
||||
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("GetMouseX()", GetMouseX);
|
||||
RegisterMethod("GetMouseY()", (void*)GetMouseY);
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("GetMouseX()", GetMouseX);
|
||||
RegisterMethod("GetMouseY()", (void*)GetMouseY);
|
||||
|
||||
RegisterMethod("IsKeyDown_(_)", (void*)IsKeyDown);
|
||||
RegisterMethod("IsKeyPressed_(_)", (void*)IsKeyPressed);
|
||||
RegisterMethod("IsKeyReleased_(_)", (void*)IsKeyReleased);
|
||||
RegisterMethod("IsKeyDown_(_)", (void*)IsKeyDown);
|
||||
RegisterMethod("IsKeyPressed_(_)", (void*)IsKeyPressed);
|
||||
RegisterMethod("IsKeyReleased_(_)", (void*)IsKeyReleased);
|
||||
|
||||
RegisterMethod("IsMouseButtonDown_(_)", (void*)IsMouseButtonDown);
|
||||
RegisterMethod("IsMouseButtonPressed_(_)", (void*)IsMouseButtonPressed);
|
||||
RegisterMethod("IsMouseButtonReleased_(_)", (void*)IsMouseButtonReleased);
|
||||
RegisterMethod("IsMouseButtonDown_(_)", (void*)IsMouseButtonDown);
|
||||
RegisterMethod("IsMouseButtonPressed_(_)", (void*)IsMouseButtonPressed);
|
||||
RegisterMethod("IsMouseButtonReleased_(_)", (void*)IsMouseButtonReleased);
|
||||
|
||||
RegisterMethod("HideMouse()", (void*)HideMouse);
|
||||
RegisterMethod("ShowMouse()", (void*)ShowMouse);
|
||||
RegisterMethod("IsMouseHidden()", (void*)IsMouseHidden);
|
||||
}
|
||||
RegisterMethod("HideMouse()", (void*)HideMouse);
|
||||
RegisterMethod("ShowMouse()", (void*)ShowMouse);
|
||||
RegisterMethod("IsMouseHidden()", (void*)IsMouseHidden);
|
||||
}
|
||||
|
||||
static void GetMouseX(WrenVM* vm)
|
||||
{
|
||||
wrenSetSlotDouble(vm, 0, Input::GetMouseX());
|
||||
}
|
||||
static void GetMouseX(WrenVM* vm)
|
||||
{
|
||||
wrenSetSlotDouble(vm, 0, Input::GetMouseX());
|
||||
}
|
||||
|
||||
static void GetMouseY(WrenVM* vm)
|
||||
{
|
||||
wrenSetSlotDouble(vm, 0, Input::GetMouseY());
|
||||
}
|
||||
static void GetMouseY(WrenVM* vm)
|
||||
{
|
||||
wrenSetSlotDouble(vm, 0, Input::GetMouseY());
|
||||
}
|
||||
|
||||
static void IsMouseButtonDown(WrenVM* vm)
|
||||
{
|
||||
int key = wrenGetSlotDouble(vm, 1);
|
||||
bool result = Input::IsMouseButtonDown(key);
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
static void IsMouseButtonDown(WrenVM* vm)
|
||||
{
|
||||
int key = wrenGetSlotDouble(vm, 1);
|
||||
bool result = Input::IsMouseButtonDown(key);
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
|
||||
static void IsMouseButtonPressed(WrenVM* vm)
|
||||
{
|
||||
int key = (int)wrenGetSlotDouble(vm, 1);
|
||||
bool result = Input::IsMouseButtonPressed(key);
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
static void IsMouseButtonPressed(WrenVM* vm)
|
||||
{
|
||||
int key = (int)wrenGetSlotDouble(vm, 1);
|
||||
bool result = Input::IsMouseButtonPressed(key);
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
|
||||
static void IsMouseButtonReleased(WrenVM* vm)
|
||||
{
|
||||
int key = wrenGetSlotDouble(vm, 1);
|
||||
bool result = Input::IsMouseButtonReleased(key);
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
static void IsMouseButtonReleased(WrenVM* vm)
|
||||
{
|
||||
int key = wrenGetSlotDouble(vm, 1);
|
||||
bool result = Input::IsMouseButtonReleased(key);
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
|
||||
static void IsKeyDown(WrenVM* vm)
|
||||
{
|
||||
int key = wrenGetSlotDouble(vm, 1);
|
||||
bool result = Input::IsKeyDown(key);
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
static void IsKeyDown(WrenVM* vm)
|
||||
{
|
||||
int key = wrenGetSlotDouble(vm, 1);
|
||||
bool result = Input::IsKeyDown(key);
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
|
||||
static void IsKeyPressed(WrenVM* vm)
|
||||
{
|
||||
int key = wrenGetSlotDouble(vm, 1);
|
||||
bool result = Input::IsKeyPressed(key);
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
static void IsKeyPressed(WrenVM* vm)
|
||||
{
|
||||
int key = wrenGetSlotDouble(vm, 1);
|
||||
bool result = Input::IsKeyPressed(key);
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
|
||||
static void IsKeyReleased(WrenVM* vm)
|
||||
{
|
||||
int key = wrenGetSlotDouble(vm, 1);
|
||||
bool result = Input::IsKeyReleased(key);
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
static void IsKeyReleased(WrenVM* vm)
|
||||
{
|
||||
int key = wrenGetSlotDouble(vm, 1);
|
||||
bool result = Input::IsKeyReleased(key);
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
|
||||
static void HideMouse(WrenVM* vm)
|
||||
{
|
||||
Input::HideMouse();
|
||||
}
|
||||
static void HideMouse(WrenVM* vm)
|
||||
{
|
||||
Input::HideMouse();
|
||||
}
|
||||
|
||||
static void ShowMouse(WrenVM* vm)
|
||||
{
|
||||
Input::ShowMouse();
|
||||
}
|
||||
static void ShowMouse(WrenVM* vm)
|
||||
{
|
||||
Input::ShowMouse();
|
||||
}
|
||||
|
||||
static void IsMouseHidden(WrenVM* vm)
|
||||
{
|
||||
wrenSetSlotBool(vm, 0, Input::IsMouseHidden());
|
||||
}
|
||||
};
|
||||
static void IsMouseHidden(WrenVM* vm)
|
||||
{
|
||||
wrenSetSlotBool(vm, 0, Input::IsMouseHidden());
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -7,86 +7,84 @@
|
||||
#include <wren.h>
|
||||
#include "../Core/Maths.h"
|
||||
|
||||
namespace ScriptAPI
|
||||
{
|
||||
class MathModule : public ScriptModule
|
||||
{
|
||||
std::string ModuleName = "Math";
|
||||
|
||||
|
||||
std::string GetModuleName() override
|
||||
namespace Nuake {
|
||||
namespace ScriptAPI {
|
||||
class MathModule : public ScriptModule
|
||||
{
|
||||
return "Math";
|
||||
}
|
||||
std::string ModuleName = "Math";
|
||||
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("Sqrt_(_,_,_)", (void*)Sqrt);
|
||||
RegisterMethod("Sin(_)", (void*)Sin);
|
||||
RegisterMethod("Cos(_)", (void*)Cos);
|
||||
RegisterMethod("Radians(_)", (void*)Radians);
|
||||
RegisterMethod("Degrees(_)", (void*)Degrees);
|
||||
RegisterMethod("Cross_(_,_,_,_,_,_)", (void*)Cross);
|
||||
}
|
||||
std::string GetModuleName() override
|
||||
{
|
||||
return "Math";
|
||||
}
|
||||
|
||||
static void Sqrt(WrenVM* vm)
|
||||
{
|
||||
float x = wrenGetSlotDouble(vm, 1);
|
||||
float y = wrenGetSlotDouble(vm, 2);
|
||||
float z = wrenGetSlotDouble(vm, 3);
|
||||
float result = glm::sqrt((x * x) + (y * y) + (z * z));
|
||||
wrenSetSlotDouble(vm, 0, result);
|
||||
}
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("Sqrt_(_,_,_)", (void*)Sqrt);
|
||||
RegisterMethod("Sin(_)", (void*)Sin);
|
||||
RegisterMethod("Cos(_)", (void*)Cos);
|
||||
RegisterMethod("Radians(_)", (void*)Radians);
|
||||
RegisterMethod("Degrees(_)", (void*)Degrees);
|
||||
RegisterMethod("Cross_(_,_,_,_,_,_)", (void*)Cross);
|
||||
}
|
||||
|
||||
static void Cos(WrenVM* vm)
|
||||
{
|
||||
float d = wrenGetSlotDouble(vm, 1);
|
||||
float result = glm::cos(d);
|
||||
wrenSetSlotDouble(vm, 0, result);
|
||||
}
|
||||
static void Sqrt(WrenVM* vm)
|
||||
{
|
||||
float x = wrenGetSlotDouble(vm, 1);
|
||||
float y = wrenGetSlotDouble(vm, 2);
|
||||
float z = wrenGetSlotDouble(vm, 3);
|
||||
float result = glm::sqrt((x * x) + (y * y) + (z * z));
|
||||
wrenSetSlotDouble(vm, 0, result);
|
||||
}
|
||||
|
||||
static void Sin(WrenVM* vm)
|
||||
{
|
||||
float d = wrenGetSlotDouble(vm, 1);
|
||||
float result = glm::sin(d);
|
||||
wrenSetSlotDouble(vm, 0, result);
|
||||
}
|
||||
static void Cos(WrenVM* vm)
|
||||
{
|
||||
float d = wrenGetSlotDouble(vm, 1);
|
||||
float result = glm::cos(d);
|
||||
wrenSetSlotDouble(vm, 0, result);
|
||||
}
|
||||
|
||||
static void Radians(WrenVM* vm)
|
||||
{
|
||||
float d = wrenGetSlotDouble(vm, 1);
|
||||
float result = glm::radians(d);
|
||||
wrenSetSlotDouble(vm, 0, result);
|
||||
}
|
||||
static void Sin(WrenVM* vm)
|
||||
{
|
||||
float d = wrenGetSlotDouble(vm, 1);
|
||||
float result = glm::sin(d);
|
||||
wrenSetSlotDouble(vm, 0, result);
|
||||
}
|
||||
|
||||
static void Degrees(WrenVM* vm)
|
||||
{
|
||||
float d = wrenGetSlotDouble(vm, 1);
|
||||
float result = glm::degrees(d);
|
||||
wrenSetSlotDouble(vm, 0, result);
|
||||
}
|
||||
static void Radians(WrenVM* vm)
|
||||
{
|
||||
float d = wrenGetSlotDouble(vm, 1);
|
||||
float result = glm::radians(d);
|
||||
wrenSetSlotDouble(vm, 0, result);
|
||||
}
|
||||
|
||||
static void Cross(WrenVM* vm)
|
||||
{
|
||||
Vector3 v1 = Vector3(wrenGetSlotDouble(vm, 1),
|
||||
wrenGetSlotDouble(vm, 2),
|
||||
wrenGetSlotDouble(vm, 3));
|
||||
Vector3 v2 = Vector3(wrenGetSlotDouble(vm, 4),
|
||||
wrenGetSlotDouble(vm, 5),
|
||||
wrenGetSlotDouble(vm, 6));
|
||||
Vector3 cross = glm::cross(v1, v2);
|
||||
static void Degrees(WrenVM* vm)
|
||||
{
|
||||
float d = wrenGetSlotDouble(vm, 1);
|
||||
float result = glm::degrees(d);
|
||||
wrenSetSlotDouble(vm, 0, result);
|
||||
}
|
||||
|
||||
static void Cross(WrenVM* vm)
|
||||
{
|
||||
Vector3 v1 = Vector3(wrenGetSlotDouble(vm, 1),
|
||||
wrenGetSlotDouble(vm, 2),
|
||||
wrenGetSlotDouble(vm, 3));
|
||||
Vector3 v2 = Vector3(wrenGetSlotDouble(vm, 4),
|
||||
wrenGetSlotDouble(vm, 5),
|
||||
wrenGetSlotDouble(vm, 6));
|
||||
Vector3 cross = glm::cross(v1, v2);
|
||||
|
||||
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
wrenSetSlotDouble(vm, 1, cross.x);
|
||||
wrenSetSlotDouble(vm, 2, cross.y);
|
||||
wrenSetSlotDouble(vm, 3, cross.z);
|
||||
|
||||
wrenInsertInList(vm, 0, -1, 1);
|
||||
wrenInsertInList(vm, 0, -1, 2);
|
||||
wrenInsertInList(vm, 0, -1, 3);
|
||||
}
|
||||
};
|
||||
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
wrenSetSlotDouble(vm, 1, cross.x);
|
||||
wrenSetSlotDouble(vm, 2, cross.y);
|
||||
wrenSetSlotDouble(vm, 3, cross.z);
|
||||
|
||||
wrenInsertInList(vm, 0, -1, 1);
|
||||
wrenInsertInList(vm, 0, -1, 2);
|
||||
wrenInsertInList(vm, 0, -1, 3);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -7,57 +7,59 @@
|
||||
#include <iostream>
|
||||
#include <wren.h>
|
||||
#include "../Core/Physics/PhysicsManager.h"
|
||||
namespace ScriptAPI
|
||||
{
|
||||
class PhysicsModule : public ScriptModule
|
||||
{
|
||||
std::string ModuleName = "Engine";
|
||||
|
||||
std::string GetModuleName() override
|
||||
namespace Nuake {
|
||||
namespace ScriptAPI {
|
||||
class PhysicsModule : public ScriptModule
|
||||
{
|
||||
return "Physics";
|
||||
}
|
||||
std::string ModuleName = "Engine";
|
||||
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("Raycast_(_,_,_,_,_,_)", (void*)Raycast);
|
||||
}
|
||||
std::string GetModuleName() override
|
||||
{
|
||||
return "Physics";
|
||||
}
|
||||
|
||||
static void Raycast(WrenVM* vm)
|
||||
{
|
||||
Vector3 v1 = Vector3(wrenGetSlotDouble(vm, 1),
|
||||
wrenGetSlotDouble(vm, 2),
|
||||
wrenGetSlotDouble(vm, 3));
|
||||
Vector3 v2 = Vector3(wrenGetSlotDouble(vm, 4),
|
||||
wrenGetSlotDouble(vm, 5),
|
||||
wrenGetSlotDouble(vm, 6));
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("Raycast_(_,_,_,_,_,_)", (void*)Raycast);
|
||||
}
|
||||
|
||||
RaycastResult result = PhysicsManager::Get()->Raycast(v1, v2);
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
static void Raycast(WrenVM* vm)
|
||||
{
|
||||
Vector3 v1 = Vector3(wrenGetSlotDouble(vm, 1),
|
||||
wrenGetSlotDouble(vm, 2),
|
||||
wrenGetSlotDouble(vm, 3));
|
||||
Vector3 v2 = Vector3(wrenGetSlotDouble(vm, 4),
|
||||
wrenGetSlotDouble(vm, 5),
|
||||
wrenGetSlotDouble(vm, 6));
|
||||
|
||||
// Returns a list with 3 vectors placed sequentially
|
||||
// should be reconstructed in the wren side.
|
||||
wrenSetSlotDouble(vm, 1, result.LocalPoint.x);
|
||||
wrenSetSlotDouble(vm, 2, result.LocalPoint.y);
|
||||
wrenSetSlotDouble(vm, 3, result.LocalPoint.z);
|
||||
RaycastResult result = PhysicsManager::Get()->Raycast(v1, v2);
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
|
||||
wrenSetSlotDouble(vm, 4, result.WorldPoint.x);
|
||||
wrenSetSlotDouble(vm, 5, result.WorldPoint.y);
|
||||
wrenSetSlotDouble(vm, 6, result.WorldPoint.z);
|
||||
// Returns a list with 3 vectors placed sequentially
|
||||
// should be reconstructed in the wren side.
|
||||
wrenSetSlotDouble(vm, 1, result.LocalPoint.x);
|
||||
wrenSetSlotDouble(vm, 2, result.LocalPoint.y);
|
||||
wrenSetSlotDouble(vm, 3, result.LocalPoint.z);
|
||||
|
||||
wrenSetSlotDouble(vm, 7, result.Normal.x);
|
||||
wrenSetSlotDouble(vm, 8, result.Normal.y);
|
||||
wrenSetSlotDouble(vm, 9, result.Normal.z);
|
||||
wrenSetSlotDouble(vm, 4, result.WorldPoint.x);
|
||||
wrenSetSlotDouble(vm, 5, result.WorldPoint.y);
|
||||
wrenSetSlotDouble(vm, 6, result.WorldPoint.z);
|
||||
|
||||
wrenInsertInList(vm, 0, -1, 1);
|
||||
wrenInsertInList(vm, 0, -1, 2);
|
||||
wrenInsertInList(vm, 0, -1, 3);
|
||||
wrenInsertInList(vm, 0, -1, 4);
|
||||
wrenInsertInList(vm, 0, -1, 5);
|
||||
wrenInsertInList(vm, 0, -1, 6);
|
||||
wrenInsertInList(vm, 0, -1, 7);
|
||||
wrenInsertInList(vm, 0, -1, 8);
|
||||
wrenInsertInList(vm, 0, -1, 9);
|
||||
}
|
||||
};
|
||||
wrenSetSlotDouble(vm, 7, result.Normal.x);
|
||||
wrenSetSlotDouble(vm, 8, result.Normal.y);
|
||||
wrenSetSlotDouble(vm, 9, result.Normal.z);
|
||||
|
||||
wrenInsertInList(vm, 0, -1, 1);
|
||||
wrenInsertInList(vm, 0, -1, 2);
|
||||
wrenInsertInList(vm, 0, -1, 3);
|
||||
wrenInsertInList(vm, 0, -1, 4);
|
||||
wrenInsertInList(vm, 0, -1, 5);
|
||||
wrenInsertInList(vm, 0, -1, 6);
|
||||
wrenInsertInList(vm, 0, -1, 7);
|
||||
wrenInsertInList(vm, 0, -1, 8);
|
||||
wrenInsertInList(vm, 0, -1, 9);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -17,294 +17,295 @@
|
||||
#include <src/Scene/Components/TriggerZone.h>
|
||||
#include <src/Scene/Components/BSPBrushComponent.h>
|
||||
|
||||
namespace ScriptAPI
|
||||
{
|
||||
class SceneModule : public ScriptModule
|
||||
{
|
||||
std::string GetModuleName() override
|
||||
namespace Nuake {
|
||||
namespace ScriptAPI {
|
||||
class SceneModule : public ScriptModule
|
||||
{
|
||||
return "Scene";
|
||||
}
|
||||
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("GetEntityID(_)", (void*)GetEntity);
|
||||
RegisterMethod("EntityHasComponent(_,_)", (void*)EntityHasComponent);
|
||||
|
||||
RegisterMethod("GetTranslation_(_)", (void*)GetTranslation);
|
||||
RegisterMethod("SetTranslation_(_,_,_,_)", (void*)SetTranslation);
|
||||
RegisterMethod("SetLightIntensity_(_,_)", (void*)SetLightIntensity);
|
||||
RegisterMethod("GetLightIntensity_(_)", (void*)GetLightIntensity);
|
||||
|
||||
RegisterMethod("GetScript_(_)", (void*)GetScript);
|
||||
|
||||
RegisterMethod("SetCameraDirection_(_,_,_,_)", (void*)SetCameraDirection);
|
||||
RegisterMethod("GetCameraDirection_(_)", (void*)GetCameraDirection);
|
||||
RegisterMethod("GetCameraRight_(_)", (void*)GetCameraRight);
|
||||
|
||||
RegisterMethod("MoveAndSlide_(_,_,_,_)", (void*)MoveAndSlide);
|
||||
RegisterMethod("IsCharacterControllerOnGround_(_)", (void*)IsCharacterControllerOnGround);
|
||||
|
||||
RegisterMethod("TriggerGetOverlappingBodyCount_(_)", (void*)TriggerGetOverlappingBodyCount);
|
||||
RegisterMethod("TriggerGetOverlappingBodies_(_)", (void*)TriggerGetOverlappingBodies);
|
||||
|
||||
RegisterMethod("BrushGetTargets_(_)", (void*)BrushGetTargets);
|
||||
RegisterMethod("BrushGetTargetsCount_(_)", (void*)BrushGetTargetsCount);
|
||||
}
|
||||
|
||||
static void GetEntity(WrenVM* vm)
|
||||
{
|
||||
std::string name = wrenGetSlotString(vm, 1);
|
||||
int handle = Engine::GetCurrentScene()->GetEntity(name).GetHandle();
|
||||
wrenSetSlotDouble(vm, 0, handle);
|
||||
}
|
||||
|
||||
static void EntityHasComponent(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
std::string name = wrenGetSlotString(vm, 2);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
if (name == "Transform")
|
||||
std::string GetModuleName() override
|
||||
{
|
||||
bool result = ent.HasComponent<TransformComponent>();
|
||||
return "Scene";
|
||||
}
|
||||
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("GetEntityID(_)", (void*)GetEntity);
|
||||
RegisterMethod("EntityHasComponent(_,_)", (void*)EntityHasComponent);
|
||||
|
||||
RegisterMethod("GetTranslation_(_)", (void*)GetTranslation);
|
||||
RegisterMethod("SetTranslation_(_,_,_,_)", (void*)SetTranslation);
|
||||
RegisterMethod("SetLightIntensity_(_,_)", (void*)SetLightIntensity);
|
||||
RegisterMethod("GetLightIntensity_(_)", (void*)GetLightIntensity);
|
||||
|
||||
RegisterMethod("GetScript_(_)", (void*)GetScript);
|
||||
|
||||
RegisterMethod("SetCameraDirection_(_,_,_,_)", (void*)SetCameraDirection);
|
||||
RegisterMethod("GetCameraDirection_(_)", (void*)GetCameraDirection);
|
||||
RegisterMethod("GetCameraRight_(_)", (void*)GetCameraRight);
|
||||
|
||||
RegisterMethod("MoveAndSlide_(_,_,_,_)", (void*)MoveAndSlide);
|
||||
RegisterMethod("IsCharacterControllerOnGround_(_)", (void*)IsCharacterControllerOnGround);
|
||||
|
||||
RegisterMethod("TriggerGetOverlappingBodyCount_(_)", (void*)TriggerGetOverlappingBodyCount);
|
||||
RegisterMethod("TriggerGetOverlappingBodies_(_)", (void*)TriggerGetOverlappingBodies);
|
||||
|
||||
RegisterMethod("BrushGetTargets_(_)", (void*)BrushGetTargets);
|
||||
RegisterMethod("BrushGetTargetsCount_(_)", (void*)BrushGetTargetsCount);
|
||||
}
|
||||
|
||||
static void GetEntity(WrenVM* vm)
|
||||
{
|
||||
std::string name = wrenGetSlotString(vm, 1);
|
||||
int handle = Engine::GetCurrentScene()->GetEntity(name).GetHandle();
|
||||
wrenSetSlotDouble(vm, 0, handle);
|
||||
}
|
||||
|
||||
static void EntityHasComponent(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
std::string name = wrenGetSlotString(vm, 2);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
if (name == "Transform")
|
||||
{
|
||||
bool result = ent.HasComponent<TransformComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
if (name == "Light")
|
||||
{
|
||||
bool result = ent.HasComponent<LightComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
if (name == "QuakeMap")
|
||||
{
|
||||
bool result = ent.HasComponent<QuakeMapComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
if (name == "CharacterController")
|
||||
{
|
||||
bool result = ent.HasComponent<CharacterControllerComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
if (name == "Camera")
|
||||
{
|
||||
bool result = ent.HasComponent<CameraComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
if (name == "Script")
|
||||
{
|
||||
bool result = ent.HasComponent<CameraComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
if (name == "Rigidbody")
|
||||
{
|
||||
bool result = ent.HasComponent<RigidBodyComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
if (name == "Script") {
|
||||
bool result = ent.HasComponent<WrenScriptComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
if (name == "Brush") {
|
||||
bool result = ent.HasComponent<BSPBrushComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
}
|
||||
|
||||
static void GetScript(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
if (ent.HasComponent<WrenScriptComponent>())
|
||||
{
|
||||
wrenSetSlotHandle(vm, 0, ent.GetComponent<WrenScriptComponent>().WrenScript->m_Instance);
|
||||
}
|
||||
}
|
||||
|
||||
static void SetLightIntensity(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
float intensity = wrenGetSlotDouble(vm, 2);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
auto& light = ent.GetComponent<LightComponent>();
|
||||
light.Strength = intensity;
|
||||
}
|
||||
|
||||
static void GetLightIntensity(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
float intensity = wrenGetSlotDouble(vm, 2);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
auto& light = ent.GetComponent<LightComponent>();
|
||||
wrenSetSlotDouble(vm, 0, light.Strength);
|
||||
}
|
||||
|
||||
static void SetCameraDirection(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
float x = wrenGetSlotDouble(vm, 2);
|
||||
float y = wrenGetSlotDouble(vm, 3);
|
||||
float z = wrenGetSlotDouble(vm, 4);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
auto& cam = ent.GetComponent<CameraComponent>();
|
||||
cam.CameraInstance->SetDirection(Vector3(x, y, z));
|
||||
}
|
||||
|
||||
static void GetCameraDirection(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
auto& cam = ent.GetComponent<CameraComponent>();
|
||||
|
||||
Vector3 dir = cam.CameraInstance->GetDirection();
|
||||
|
||||
wrenEnsureSlots(vm, 4);
|
||||
|
||||
// set the slots
|
||||
// Fill the list
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
wrenSetSlotDouble(vm, 1, dir.x);
|
||||
wrenSetSlotDouble(vm, 2, dir.y);
|
||||
wrenSetSlotDouble(vm, 3, dir.z);
|
||||
|
||||
wrenInsertInList(vm, 0, -1, 1);
|
||||
wrenInsertInList(vm, 0, -1, 2);
|
||||
wrenInsertInList(vm, 0, -1, 3);
|
||||
}
|
||||
|
||||
static void GetCameraRight(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
auto& cam = ent.GetComponent<CameraComponent>();
|
||||
|
||||
Vector3 right = cam.CameraInstance->cameraRight;
|
||||
|
||||
// set the slots
|
||||
wrenSetSlotDouble(vm, 1, right.x);
|
||||
wrenSetSlotDouble(vm, 2, right.y);
|
||||
wrenSetSlotDouble(vm, 3, right.z);
|
||||
|
||||
// Fill the list
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
wrenInsertInList(vm, 0, 0, 1);
|
||||
wrenInsertInList(vm, 0, 1, 2);
|
||||
wrenInsertInList(vm, 0, 2, 3);
|
||||
}
|
||||
|
||||
static void IsCharacterControllerOnGround(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
auto& characterController = ent.GetComponent<CharacterControllerComponent>();
|
||||
bool result = characterController.CharacterController->IsOnGround;
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
if (name == "Light")
|
||||
|
||||
static void MoveAndSlide(WrenVM* vm)
|
||||
{
|
||||
bool result = ent.HasComponent<LightComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
float x = wrenGetSlotDouble(vm, 2);
|
||||
float y = wrenGetSlotDouble(vm, 3);
|
||||
float z = wrenGetSlotDouble(vm, 4);
|
||||
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
auto& characterController = ent.GetComponent<CharacterControllerComponent>();
|
||||
characterController.CharacterController->MoveAndSlide(Vector3(x, y, z));
|
||||
}
|
||||
if (name == "QuakeMap")
|
||||
|
||||
static void GetTranslation(WrenVM* vm)
|
||||
{
|
||||
bool result = ent.HasComponent<QuakeMapComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
auto& transform = ent.GetComponent<TransformComponent>();
|
||||
// set the slots
|
||||
wrenSetSlotDouble(vm, 1, transform.Translation.x);
|
||||
wrenSetSlotDouble(vm, 2, transform.Translation.y);
|
||||
wrenSetSlotDouble(vm, 3, transform.Translation.z);
|
||||
|
||||
// Fill the list
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
wrenInsertInList(vm, 0, 0, 1);
|
||||
wrenInsertInList(vm, 0, 1, 2);
|
||||
wrenInsertInList(vm, 0, 2, 3);
|
||||
}
|
||||
if (name == "CharacterController")
|
||||
|
||||
static void SetTranslation(WrenVM* vm)
|
||||
{
|
||||
bool result = ent.HasComponent<CharacterControllerComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
auto& transform = ent.GetComponent<TransformComponent>();
|
||||
// set the slots
|
||||
float x = wrenGetSlotDouble(vm, 2);
|
||||
float y = wrenGetSlotDouble(vm, 3);
|
||||
float z = wrenGetSlotDouble(vm, 4);
|
||||
|
||||
transform.Translation = Vector3(x, y, z);
|
||||
}
|
||||
if (name == "Camera")
|
||||
|
||||
static void TriggerGetOverlappingBodyCount(WrenVM* vm)
|
||||
{
|
||||
bool result = ent.HasComponent<CameraComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
TriggerZone trigger = ent.GetComponent<TriggerZone>();
|
||||
|
||||
int count = trigger.GetOverLappingCount();
|
||||
|
||||
wrenSetSlotDouble(vm, 0, count);
|
||||
}
|
||||
if (name == "Script")
|
||||
|
||||
static void TriggerGetOverlappingBodies(WrenVM* vm)
|
||||
{
|
||||
bool result = ent.HasComponent<CameraComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
TriggerZone trigger = ent.GetComponent<TriggerZone>();
|
||||
|
||||
std::vector<Entity> entities = trigger.GetOverlappingBodies();
|
||||
|
||||
wrenEnsureSlots(vm, entities.size());
|
||||
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
int idx = 1;
|
||||
for (auto& e : entities)
|
||||
{
|
||||
wrenSetSlotDouble(vm, idx, e.GetHandle());
|
||||
wrenInsertInList(vm, 0, -1, idx);
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
if (name == "Rigidbody")
|
||||
|
||||
static void BrushGetTargets(WrenVM* vm)
|
||||
{
|
||||
bool result = ent.HasComponent<RigidBodyComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
BSPBrushComponent& brush = ent.GetComponent<BSPBrushComponent>();
|
||||
wrenEnsureSlots(vm, brush.Targets.size());
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
|
||||
int idx = 1;
|
||||
for (auto& e : brush.Targets)
|
||||
{
|
||||
wrenSetSlotDouble(vm, idx, e.GetHandle());
|
||||
wrenInsertInList(vm, 0, -1, idx);
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
if (name == "Script") {
|
||||
bool result = ent.HasComponent<WrenScriptComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
|
||||
static void BrushGetTargetsCount(WrenVM* vm) {
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
BSPBrushComponent& brush = ent.GetComponent<BSPBrushComponent>();
|
||||
wrenSetSlotDouble(vm, 0, brush.Targets.size());
|
||||
}
|
||||
if (name == "Brush") {
|
||||
bool result = ent.HasComponent<BSPBrushComponent>();
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
}
|
||||
|
||||
static void GetScript(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
if (ent.HasComponent<WrenScriptComponent>())
|
||||
{
|
||||
wrenSetSlotHandle(vm, 0, ent.GetComponent<WrenScriptComponent>().WrenScript->m_Instance);
|
||||
}
|
||||
}
|
||||
|
||||
static void SetLightIntensity(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
float intensity = wrenGetSlotDouble(vm, 2);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
auto& light = ent.GetComponent<LightComponent>();
|
||||
light.Strength = intensity;
|
||||
}
|
||||
|
||||
static void GetLightIntensity(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
float intensity = wrenGetSlotDouble(vm, 2);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
auto& light = ent.GetComponent<LightComponent>();
|
||||
wrenSetSlotDouble(vm, 0, light.Strength);
|
||||
}
|
||||
|
||||
static void SetCameraDirection(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
float x = wrenGetSlotDouble(vm, 2);
|
||||
float y = wrenGetSlotDouble(vm, 3);
|
||||
float z = wrenGetSlotDouble(vm, 4);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
auto& cam = ent.GetComponent<CameraComponent>();
|
||||
cam.CameraInstance->SetDirection(Vector3(x, y, z));
|
||||
}
|
||||
|
||||
static void GetCameraDirection(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
auto& cam = ent.GetComponent<CameraComponent>();
|
||||
|
||||
Vector3 dir = cam.CameraInstance->GetDirection();
|
||||
|
||||
wrenEnsureSlots(vm, 4);
|
||||
|
||||
// set the slots
|
||||
// Fill the list
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
wrenSetSlotDouble(vm, 1, dir.x);
|
||||
wrenSetSlotDouble(vm, 2, dir.y);
|
||||
wrenSetSlotDouble(vm, 3, dir.z);
|
||||
|
||||
wrenInsertInList(vm, 0, -1, 1);
|
||||
wrenInsertInList(vm, 0, -1, 2);
|
||||
wrenInsertInList(vm, 0, -1, 3);
|
||||
}
|
||||
|
||||
static void GetCameraRight(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
auto& cam = ent.GetComponent<CameraComponent>();
|
||||
|
||||
Vector3 right = cam.CameraInstance->cameraRight;
|
||||
|
||||
// set the slots
|
||||
wrenSetSlotDouble(vm, 1, right.x);
|
||||
wrenSetSlotDouble(vm, 2, right.y);
|
||||
wrenSetSlotDouble(vm, 3, right.z);
|
||||
|
||||
// Fill the list
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
wrenInsertInList(vm, 0, 0, 1);
|
||||
wrenInsertInList(vm, 0, 1, 2);
|
||||
wrenInsertInList(vm, 0, 2, 3);
|
||||
}
|
||||
|
||||
static void IsCharacterControllerOnGround(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
auto& characterController = ent.GetComponent<CharacterControllerComponent>();
|
||||
bool result = characterController.CharacterController->IsOnGround;
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
|
||||
static void MoveAndSlide(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
float x = wrenGetSlotDouble(vm, 2);
|
||||
float y = wrenGetSlotDouble(vm, 3);
|
||||
float z = wrenGetSlotDouble(vm, 4);
|
||||
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
auto& characterController = ent.GetComponent<CharacterControllerComponent>();
|
||||
characterController.CharacterController->MoveAndSlide(Vector3(x, y, z));
|
||||
}
|
||||
|
||||
static void GetTranslation(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
auto& transform = ent.GetComponent<TransformComponent>();
|
||||
// set the slots
|
||||
wrenSetSlotDouble(vm, 1, transform.Translation.x);
|
||||
wrenSetSlotDouble(vm, 2, transform.Translation.y);
|
||||
wrenSetSlotDouble(vm, 3, transform.Translation.z);
|
||||
|
||||
// Fill the list
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
wrenInsertInList(vm, 0, 0, 1);
|
||||
wrenInsertInList(vm, 0, 1, 2);
|
||||
wrenInsertInList(vm, 0, 2, 3);
|
||||
}
|
||||
|
||||
static void SetTranslation(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
auto& transform = ent.GetComponent<TransformComponent>();
|
||||
// set the slots
|
||||
float x = wrenGetSlotDouble(vm, 2);
|
||||
float y = wrenGetSlotDouble(vm, 3);
|
||||
float z = wrenGetSlotDouble(vm, 4);
|
||||
|
||||
transform.Translation = Vector3(x, y, z);
|
||||
}
|
||||
|
||||
static void TriggerGetOverlappingBodyCount(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
TriggerZone trigger = ent.GetComponent<TriggerZone>();
|
||||
|
||||
int count = trigger.GetOverLappingCount();
|
||||
|
||||
wrenSetSlotDouble(vm, 0, count);
|
||||
}
|
||||
|
||||
static void TriggerGetOverlappingBodies(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
TriggerZone trigger = ent.GetComponent<TriggerZone>();
|
||||
|
||||
std::vector<Entity> entities = trigger.GetOverlappingBodies();
|
||||
|
||||
wrenEnsureSlots(vm, entities.size() );
|
||||
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
int idx = 1;
|
||||
for (auto& e : entities)
|
||||
{
|
||||
wrenSetSlotDouble(vm, idx, e.GetHandle());
|
||||
wrenInsertInList(vm, 0, -1, idx);
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
|
||||
static void BrushGetTargets(WrenVM* vm)
|
||||
{
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
BSPBrushComponent& brush = ent.GetComponent<BSPBrushComponent>();
|
||||
wrenEnsureSlots(vm, brush.Targets.size());
|
||||
wrenSetSlotNewList(vm, 0);
|
||||
|
||||
int idx = 1;
|
||||
for (auto& e : brush.Targets)
|
||||
{
|
||||
wrenSetSlotDouble(vm, idx, e.GetHandle());
|
||||
wrenInsertInList(vm, 0, -1, idx);
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
|
||||
static void BrushGetTargetsCount(WrenVM* vm) {
|
||||
int handle = wrenGetSlotDouble(vm, 1);
|
||||
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
|
||||
|
||||
BSPBrushComponent& brush = ent.GetComponent<BSPBrushComponent>();
|
||||
wrenSetSlotDouble(vm, 0, brush.Targets.size());
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,26 +2,26 @@
|
||||
#include <string>
|
||||
#include <map>
|
||||
struct WrenVM;
|
||||
class ScriptModule
|
||||
{
|
||||
private:
|
||||
std::map<std::string, void*> Methods = std::map<std::string, void*>();
|
||||
|
||||
std::string WrenAPI;
|
||||
public:
|
||||
std::string ModuleName;
|
||||
virtual void RegisterModule(WrenVM*) = 0;
|
||||
virtual std::string GetModuleName() = 0;
|
||||
|
||||
void RegisterMethod(const std::string& signature, void* ptr)
|
||||
namespace Nuake {
|
||||
class ScriptModule
|
||||
{
|
||||
Methods[signature] = ptr;
|
||||
}
|
||||
public:
|
||||
std::string ModuleName;
|
||||
virtual void RegisterModule(WrenVM*) = 0;
|
||||
virtual std::string GetModuleName() = 0;
|
||||
|
||||
void* GetMethodPointer(const std::string& signature)
|
||||
{
|
||||
return Methods[signature];
|
||||
}
|
||||
void RegisterMethod(const std::string& signature, void* ptr)
|
||||
{
|
||||
Methods[signature] = ptr;
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
void* GetMethodPointer(const std::string& signature)
|
||||
{
|
||||
return Methods[signature];
|
||||
}
|
||||
private:
|
||||
std::map<std::string, void*> Methods = std::map<std::string, void*>();
|
||||
std::string WrenAPI;
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user