Major cleanup.

Moved to namespace
Cleanup includes
This commit is contained in:
Antoine Pilote
2021-07-11 18:56:44 -04:00
parent f77bef6b28
commit 0c6ed48bbd
174 changed files with 11772 additions and 11296 deletions

View File

@@ -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);
}
};
}
}

View File

@@ -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);
}
};
}
}

View File

@@ -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());
}
};
}
}

View File

@@ -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);
}
};
}
}

View File

@@ -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);
}
};
}
}

View File

@@ -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());
}
};
}
};
}
}

View File

@@ -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;
};
}