Merge pull request #45 from antopilo/NK-16-physics-scripting-module

Nk 16 physics scripting module
This commit is contained in:
Antoine Pilote
2023-07-22 11:58:47 -04:00
committed by GitHub
14 changed files with 94 additions and 20 deletions

View File

@@ -57,6 +57,8 @@ namespace Nuake {
RegisterMethod("MoveAndSlide_(_,_,_,_)", (void*)MoveAndSlide);
RegisterMethod("IsCharacterControllerOnGround_(_)", (void*)IsCharacterControllerOnGround);
RegisterMethod("AddForce_(_,_,_,_)", (void*)AddForce);
RegisterMethod("TriggerGetOverlappingBodyCount_(_)", (void*)TriggerGetOverlappingBodyCount);
RegisterMethod("TriggerGetOverlappingBodies_(_)", (void*)TriggerGetOverlappingBodies);
@@ -125,6 +127,7 @@ namespace Nuake {
if (name == "Transform") result = ent.HasComponent<TransformComponent>();
if (name == "Light") result = ent.HasComponent<LightComponent>();
if (name == "QuakeMap") result = ent.HasComponent<QuakeMapComponent>();
if (name == "RigidBody") result = ent.HasComponent<RigidBodyComponent>();
if (name == "CharacterController")
{
result = ent.HasComponent<CharacterControllerComponent>();
@@ -258,6 +261,18 @@ namespace Nuake {
characterController.CharacterController->MoveAndSlide(Vector3(x, y, z));
}
static void AddForce(WrenVM* vm)
{
double handle = wrenGetSlotDouble(vm, 1);
double x = wrenGetSlotDouble(vm, 2);
double y = wrenGetSlotDouble(vm, 3);
double z = wrenGetSlotDouble(vm, 4);
Entity ent = Entity((entt::entity)handle, Engine::GetCurrentScene().get());
auto& rigidBodyComponent = ent.GetComponent<RigidBodyComponent>();
rigidBodyComponent.Rigidbody->AddForce(Vector3(x, y, z));
}
static void GetTranslation(WrenVM* vm)
{
double handle = wrenGetSlotDouble(vm, 1);