Major scripting update🕹
- Added Input wren module - Added Math wren module - Added Entity wren module - Changed camera API
This commit is contained in:
@@ -11,10 +11,6 @@ namespace ScriptAPI
|
||||
class EngineModule : public ScriptModule
|
||||
{
|
||||
std::string ModuleName = "Engine";
|
||||
std::string WrenAPI = "class Engine { \n"
|
||||
"foreign static Log(msg) \n"
|
||||
"}"
|
||||
"";
|
||||
|
||||
std::string GetModuleName() override
|
||||
{
|
||||
@@ -24,7 +20,6 @@ namespace ScriptAPI
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("Log(_)", (void*)Log);
|
||||
WrenInterpretResult result = wrenInterpret(vm, "main", WrenAPI.c_str());
|
||||
}
|
||||
|
||||
static void Log(WrenVM* vm)
|
||||
@@ -33,6 +28,4 @@ namespace ScriptAPI
|
||||
Logger::Log(msg);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
38
Nuake/src/Scripting/Modules/EntityModule.h
Normal file
38
Nuake/src/Scripting/Modules/EntityModule.h
Normal file
@@ -0,0 +1,38 @@
|
||||
#pragma once
|
||||
#include "wren.h"
|
||||
#include <string>
|
||||
#include <src/Core/Logger.h>
|
||||
#include "ScriptModule.h"
|
||||
#include <iostream>
|
||||
#include <wren.h>
|
||||
|
||||
namespace ScriptAPI
|
||||
{
|
||||
class EngineModule : public ScriptModule
|
||||
{
|
||||
std::string ModuleName = "Engine";
|
||||
std::string WrenAPI = "class Engine { \n"
|
||||
"foreign static Log(msg) \n"
|
||||
"}"
|
||||
"";
|
||||
|
||||
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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
105
Nuake/src/Scripting/Modules/InputModule.h
Normal file
105
Nuake/src/Scripting/Modules/InputModule.h
Normal file
@@ -0,0 +1,105 @@
|
||||
#pragma once
|
||||
#include "wren.h"
|
||||
#include <string>
|
||||
#include <src/Core/Logger.h>
|
||||
#include "ScriptModule.h"
|
||||
#include <iostream>
|
||||
#include <wren.h>
|
||||
#include "../Core/Maths.h"
|
||||
#include "../Core/Input.h"
|
||||
|
||||
namespace ScriptAPI
|
||||
{
|
||||
class InputModule : public ScriptModule
|
||||
{
|
||||
std::string GetModuleName() override
|
||||
{
|
||||
return "Input";
|
||||
}
|
||||
|
||||
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("IsMouseButtonDown_(_)", (void*)IsMouseButtonDown);
|
||||
RegisterMethod("IsMouseButtonPressed_(_)", (void*)IsMouseButtonPressed);
|
||||
RegisterMethod("IsMouseButtonReleased_(_)", (void*)IsMouseButtonReleased);
|
||||
|
||||
RegisterMethod("HideMouse()", (void*)HideMouse);
|
||||
RegisterMethod("ShowMouse()", (void*)ShowMouse);
|
||||
RegisterMethod("IsMouseHidden()", (void*)IsMouseHidden);
|
||||
}
|
||||
|
||||
static void GetMouseX(WrenVM* vm)
|
||||
{
|
||||
wrenSetSlotDouble(vm, 0, Input::GetMouseX());
|
||||
}
|
||||
|
||||
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 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 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 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 ShowMouse(WrenVM* vm)
|
||||
{
|
||||
Input::ShowMouse();
|
||||
}
|
||||
|
||||
static void IsMouseHidden(WrenVM* vm)
|
||||
{
|
||||
wrenSetSlotBool(vm, 0, Input::IsMouseHidden());
|
||||
}
|
||||
};
|
||||
}
|
||||
39
Nuake/src/Scripting/Modules/MathModule.h
Normal file
39
Nuake/src/Scripting/Modules/MathModule.h
Normal file
@@ -0,0 +1,39 @@
|
||||
#pragma once
|
||||
#include "wren.h"
|
||||
#include <string>
|
||||
#include <src/Core/Logger.h>
|
||||
#include "ScriptModule.h"
|
||||
#include <iostream>
|
||||
#include <wren.h>
|
||||
#include "../Core/Maths.h"
|
||||
|
||||
namespace ScriptAPI
|
||||
{
|
||||
class MathModule : public ScriptModule
|
||||
{
|
||||
std::string ModuleName = "Math";
|
||||
|
||||
|
||||
std::string GetModuleName() override
|
||||
{
|
||||
return "Math";
|
||||
}
|
||||
|
||||
void RegisterModule(WrenVM* vm) override
|
||||
{
|
||||
RegisterMethod("Sqrt_(_,_,_)", (void*)Sqrt);
|
||||
|
||||
}
|
||||
|
||||
static void Sqrt(WrenVM* vm)
|
||||
{
|
||||
float x = wrenGetSlotDouble(vm, 0);
|
||||
float y = wrenGetSlotDouble(vm, 0);
|
||||
float z = wrenGetSlotDouble(vm, 0);
|
||||
float result = glm::sqrt((x * x) + (y * y) + (z * z));
|
||||
wrenSetSlotDouble(vm, 0, result);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
@@ -28,6 +28,8 @@ namespace ScriptAPI
|
||||
{
|
||||
RegisterMethod("GetEntityID(_)", (void*)GetEntity);
|
||||
RegisterMethod("EntityHasComponent(_,_)", (void*)EntityHasComponent);
|
||||
RegisterMethod("SetLightIntensity_(_,_)", (void*)SetLightIntensity);
|
||||
RegisterMethod("GetLightIntensity_(_)", (void*)GetLightIntensity);
|
||||
}
|
||||
|
||||
static void GetEntity(WrenVM* vm)
|
||||
@@ -74,5 +76,30 @@ namespace ScriptAPI
|
||||
wrenSetSlotBool(vm, 0, result);
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user