From 3bd426f3dcee9f5652c378257f0bdc8407a6366f Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 18 Nov 2016 22:39:01 +0100 Subject: [PATCH] SDK/Lua: Bind CameraComponent --- .../NDK/Components/CameraComponent.hpp | 5 ++++- SDK/include/NDK/LuaAPI.inl | 21 +++++++++++++++++++ SDK/include/NDK/LuaBinding.hpp | 2 ++ SDK/src/NDK/LuaBinding.cpp | 2 ++ SDK/src/NDK/LuaBinding_Graphics.cpp | 13 ++++++++++++ SDK/src/NDK/LuaBinding_SDK.cpp | 20 +++++++++++++++++- 6 files changed, 61 insertions(+), 2 deletions(-) diff --git a/SDK/include/NDK/Components/CameraComponent.hpp b/SDK/include/NDK/Components/CameraComponent.hpp index b26901a79..7dd6235a0 100644 --- a/SDK/include/NDK/Components/CameraComponent.hpp +++ b/SDK/include/NDK/Components/CameraComponent.hpp @@ -18,9 +18,12 @@ namespace Ndk { + class CameraComponent; class Entity; - class NDK_API CameraComponent : public Component, public Nz::AbstractViewer + using CameraComponentHandle = Nz::ObjectHandle; + + class NDK_API CameraComponent : public Component, public Nz::AbstractViewer, public Nz::HandledObject { public: inline CameraComponent(); diff --git a/SDK/include/NDK/LuaAPI.inl b/SDK/include/NDK/LuaAPI.inl index ede1fb0f9..f2ddf251c 100644 --- a/SDK/include/NDK/LuaAPI.inl +++ b/SDK/include/NDK/LuaAPI.inl @@ -213,6 +213,15 @@ namespace Nz return ret; } + inline unsigned int LuaImplQueryArg(const LuaInstance& instance, int index, Recti* rect, TypeTag) + { + Rectd rectDouble; + unsigned int ret = LuaImplQueryArg(instance, index, &rectDouble, TypeTag()); + + rect->Set(rectDouble); + return ret; + } + inline unsigned int LuaImplQueryArg(const LuaInstance& instance, int index, Rectui* rect, TypeTag) { Rectd rectDouble; @@ -488,6 +497,12 @@ namespace Nz return 1; } + inline int LuaImplReplyVal(const LuaInstance& instance, Recti&& val, TypeTag) + { + instance.PushInstance("Rect", val); + return 1; + } + inline int LuaImplReplyVal(const LuaInstance& instance, Rectui&& val, TypeTag) { instance.PushInstance("Rect", val); @@ -597,6 +612,12 @@ namespace Nz return 1; } + inline int LuaImplReplyVal(const LuaInstance& instance, Ndk::CameraComponentHandle&& handle, TypeTag) + { + instance.PushInstance("CameraComponent", handle); + return 1; + } + inline int LuaImplReplyVal(const LuaInstance& instance, Ndk::ConsoleHandle&& handle, TypeTag) { instance.PushInstance("Console", handle); diff --git a/SDK/include/NDK/LuaBinding.hpp b/SDK/include/NDK/LuaBinding.hpp index 7d5d4fac4..559d6ac1f 100644 --- a/SDK/include/NDK/LuaBinding.hpp +++ b/SDK/include/NDK/LuaBinding.hpp @@ -76,6 +76,7 @@ namespace Ndk Nz::LuaClass soundEmitter; // Graphics + Nz::LuaClass abstractViewer; Nz::LuaClass instancedRenderable; Nz::LuaClass material; Nz::LuaClass model; @@ -88,6 +89,7 @@ namespace Ndk Nz::LuaClass texture; // SDK + Nz::LuaClass cameraComponent; Nz::LuaClass console; Nz::LuaClass graphicsComponent; #endif diff --git a/SDK/src/NDK/LuaBinding.cpp b/SDK/src/NDK/LuaBinding.cpp index ccbdf2bbe..9b990bdfd 100644 --- a/SDK/src/NDK/LuaBinding.cpp +++ b/SDK/src/NDK/LuaBinding.cpp @@ -56,6 +56,7 @@ namespace Ndk soundEmitter("SoundEmitter"), // Graphics + abstractViewer("AbstractViewer"), instancedRenderable("InstancedRenderable"), material("Material"), model("Model"), @@ -68,6 +69,7 @@ namespace Ndk texture("Texture"), // SDK + cameraComponent("CameraComponent"), console("Console"), graphicsComponent("GraphicsComponent") #endif diff --git a/SDK/src/NDK/LuaBinding_Graphics.cpp b/SDK/src/NDK/LuaBinding_Graphics.cpp index b964598c6..cdee66636 100644 --- a/SDK/src/NDK/LuaBinding_Graphics.cpp +++ b/SDK/src/NDK/LuaBinding_Graphics.cpp @@ -12,6 +12,18 @@ namespace Ndk void LuaBinding::BindGraphics() { + /*********************************** Nz::AbstractViewer ***********************************/ + abstractViewer.BindMethod("GetAspectRatio", &Nz::AbstractViewer::GetAspectRatio); + abstractViewer.BindMethod("GetEyePosition", &Nz::AbstractViewer::GetEyePosition); + abstractViewer.BindMethod("GetForward", &Nz::AbstractViewer::GetForward); + //abstractViewer.BindMethod("GetFrustum", &Nz::AbstractViewer::GetFrustum); + abstractViewer.BindMethod("GetProjectionMatrix", &Nz::AbstractViewer::GetProjectionMatrix); + //abstractViewer.BindMethod("GetTarget", &Nz::AbstractViewer::GetTarget); + abstractViewer.BindMethod("GetViewMatrix", &Nz::AbstractViewer::GetViewMatrix); + abstractViewer.BindMethod("GetViewport", &Nz::AbstractViewer::GetViewport); + abstractViewer.BindMethod("GetZFar", &Nz::AbstractViewer::GetZFar); + abstractViewer.BindMethod("GetZNear", &Nz::AbstractViewer::GetZNear); + /*********************************** Nz::InstancedRenderable ***********************************/ /*********************************** Nz::Material ***********************************/ @@ -347,6 +359,7 @@ namespace Ndk void LuaBinding::RegisterGraphics(Nz::LuaInstance& instance) { + abstractViewer.Register(instance); instancedRenderable.Register(instance); material.Register(instance); model.Register(instance); diff --git a/SDK/src/NDK/LuaBinding_SDK.cpp b/SDK/src/NDK/LuaBinding_SDK.cpp index 880e49064..3f4f9162f 100644 --- a/SDK/src/NDK/LuaBinding_SDK.cpp +++ b/SDK/src/NDK/LuaBinding_SDK.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2016 Jérôme Leclercq, Arnaud Cadot +// Copyright (C) 2016 Jérôme Leclercq, Arnaud Cadot // This file is part of the "Nazara Development Kit" // For conditions of distribution and use, see copyright notice in Prerequesites.hpp @@ -138,6 +138,22 @@ namespace Ndk #ifndef NDK_SERVER + /*********************************** Ndk::CameraComponent **********************************/ + cameraComponent.Inherit(abstractViewer, [] (CameraComponentHandle* handle) -> Nz::AbstractViewer* + { + return handle->GetObject(); + }); + + cameraComponent.BindMethod("SetFOV", &Ndk::CameraComponent::SetFOV); + cameraComponent.BindMethod("SetLayer", &Ndk::CameraComponent::SetLayer); + cameraComponent.BindMethod("SetProjectionType", &Ndk::CameraComponent::SetProjectionType); + cameraComponent.BindMethod("SetSize", (void(Ndk::CameraComponent::*)(const Nz::Vector2f&)) &Ndk::CameraComponent::SetSize); + //cameraComponent.BindMethod("SetTarget", &Ndk::CameraComponent::SetTarget); + cameraComponent.BindMethod("SetTargetRegion", &Ndk::CameraComponent::SetTargetRegion); + cameraComponent.BindMethod("SetViewport", &Ndk::CameraComponent::SetViewport); + cameraComponent.BindMethod("SetZFar", &Ndk::CameraComponent::SetZFar); + cameraComponent.BindMethod("SetZNear", &Ndk::CameraComponent::SetZNear); + /*********************************** Ndk::GraphicsComponent **********************************/ graphicsComponent.BindMethod("Attach", [] (Nz::LuaInstance& lua, Ndk::GraphicsComponent* instance, std::size_t argumentCount) -> int { @@ -205,6 +221,7 @@ namespace Ndk BindComponent("Velocity"); #ifndef NDK_SERVER + BindComponent("Camera"); BindComponent("Graphics"); #endif } @@ -225,6 +242,7 @@ namespace Ndk world.Register(instance); #ifndef NDK_SERVER + cameraComponent.Register(instance); console.Register(instance); graphicsComponent.Register(instance); #endif