From bbb2d6354157f2d2c2f33648ae93eebab282649a Mon Sep 17 00:00:00 2001 From: turanszkij Date: Fri, 4 Sep 2015 22:55:01 +0200 Subject: [PATCH] updated component templates and lua bindings --- .../DeferredRenderableComponent_BindLua.cpp | 3 + .../ForwardRenderableComponent_BindLua.cpp | 3 + WickedEngine/Renderable2DComponent.cpp | 11 ++++ WickedEngine/Renderable2DComponent.h | 3 + .../Renderable2DComponent_BindLua.cpp | 40 ++++++++++++- WickedEngine/Renderable2DComponent_BindLua.h | 1 + WickedEngine/Renderable3DComponent.cpp | 2 + WickedEngine/Renderable3DComponent.h | 4 +- .../Renderable3DComponent_BindLua.cpp | 3 + WickedEngine/Renderable3DComponent_BindLua.h | 4 +- WickedEngine/WickedEngine.vcxproj | 2 + WickedEngine/WickedEngine.vcxproj.filters | 6 ++ WickedEngine/wiFont_BindLua.cpp | 56 +++++++++++++++++++ WickedEngine/wiFont_BindLua.h | 25 +++++++++ WickedEngine/wiLua.cpp | 2 + 15 files changed, 159 insertions(+), 6 deletions(-) create mode 100644 WickedEngine/wiFont_BindLua.cpp create mode 100644 WickedEngine/wiFont_BindLua.h diff --git a/WickedEngine/DeferredRenderableComponent_BindLua.cpp b/WickedEngine/DeferredRenderableComponent_BindLua.cpp index 213d69b27..70d985849 100644 --- a/WickedEngine/DeferredRenderableComponent_BindLua.cpp +++ b/WickedEngine/DeferredRenderableComponent_BindLua.cpp @@ -3,6 +3,9 @@ const char DeferredRenderableComponent_BindLua::className[] = "DeferredRenderableComponent"; Luna::FunctionType DeferredRenderableComponent_BindLua::methods[] = { + lunamethod(Renderable2DComponent_BindLua, AddSprite), + lunamethod(Renderable2DComponent_BindLua, AddFont), + lunamethod(DeferredRenderableComponent_BindLua, GetContent), lunamethod(DeferredRenderableComponent_BindLua, Initialize), lunamethod(DeferredRenderableComponent_BindLua, Load), diff --git a/WickedEngine/ForwardRenderableComponent_BindLua.cpp b/WickedEngine/ForwardRenderableComponent_BindLua.cpp index ce2e1adb2..07b9bfdce 100644 --- a/WickedEngine/ForwardRenderableComponent_BindLua.cpp +++ b/WickedEngine/ForwardRenderableComponent_BindLua.cpp @@ -3,6 +3,9 @@ const char ForwardRenderableComponent_BindLua::className[] = "ForwardRenderableComponent"; Luna::FunctionType ForwardRenderableComponent_BindLua::methods[] = { + lunamethod(Renderable2DComponent_BindLua, AddSprite), + lunamethod(Renderable2DComponent_BindLua, AddFont), + lunamethod(ForwardRenderableComponent_BindLua, GetContent), lunamethod(ForwardRenderableComponent_BindLua, Initialize), lunamethod(ForwardRenderableComponent_BindLua, Load), diff --git a/WickedEngine/Renderable2DComponent.cpp b/WickedEngine/Renderable2DComponent.cpp index 164ddfbc3..e92d8bd0c 100644 --- a/WickedEngine/Renderable2DComponent.cpp +++ b/WickedEngine/Renderable2DComponent.cpp @@ -1,11 +1,13 @@ #include "Renderable2DComponent.h" #include "wiResourceManager.h" #include "wiSprite.h" +#include "wiFont.h" Renderable2DComponent::Renderable2DComponent() { setSpriteSpeed(1.f); m_sprites.clear(); + m_fonts.clear(); } @@ -50,6 +52,11 @@ void Renderable2DComponent::Compose() { x->Draw(); } + + for (wiFont* x : m_fonts) + { + x->Draw(); + } } @@ -57,3 +64,7 @@ void Renderable2DComponent::addSprite(wiSprite* sprite) { m_sprites.push_back(sprite); } +void Renderable2DComponent::addFont(wiFont* font) +{ + m_fonts.push_back(font); +} diff --git a/WickedEngine/Renderable2DComponent.h b/WickedEngine/Renderable2DComponent.h index 245ed4b83..8f7c40197 100644 --- a/WickedEngine/Renderable2DComponent.h +++ b/WickedEngine/Renderable2DComponent.h @@ -2,6 +2,7 @@ #include "RenderableComponent.h" class wiSprite; +class wiFont; class Renderable2DComponent : public RenderableComponent @@ -10,6 +11,7 @@ private: float m_spriteSpeed; protected: vector m_sprites; + vector m_fonts; public: Renderable2DComponent(); ~Renderable2DComponent(); @@ -24,5 +26,6 @@ public: void addSprite(wiSprite* sprite); void setSpriteSpeed(float value){ m_spriteSpeed = value; } float getSpriteSpeed(){ return m_spriteSpeed; } + void addFont(wiFont* font); }; diff --git a/WickedEngine/Renderable2DComponent_BindLua.cpp b/WickedEngine/Renderable2DComponent_BindLua.cpp index a906ae38d..bddab5101 100644 --- a/WickedEngine/Renderable2DComponent_BindLua.cpp +++ b/WickedEngine/Renderable2DComponent_BindLua.cpp @@ -1,12 +1,14 @@ #include "Renderable2DComponent_BindLua.h" #include "wiResourceManager_BindLua.h" #include "wiSprite_BindLua.h" +#include "wiFont_BindLua.h" const char Renderable2DComponent_BindLua::className[] = "Renderable2DComponent"; Luna::FunctionType Renderable2DComponent_BindLua::methods[] = { lunamethod(Renderable2DComponent_BindLua, GetContent), lunamethod(Renderable2DComponent_BindLua, AddSprite), + lunamethod(Renderable2DComponent_BindLua, AddFont), lunamethod(Renderable2DComponent_BindLua, Initialize), lunamethod(Renderable2DComponent_BindLua, Load), lunamethod(Renderable2DComponent_BindLua, Unload), @@ -40,13 +42,13 @@ int Renderable2DComponent_BindLua::AddSprite(lua_State *L) { if (component == nullptr) { - wiLua::SError(L, "GetContent() component is empty!"); + wiLua::SError(L, "AddSprite() component is empty!"); return 0; } int argc = wiLua::SGetArgCount(L); if (argc > 1) { - wiSprite_BindLua* sprite = Luna::check(L, 2); + wiSprite_BindLua* sprite = Luna::lightcheck(L, 2); if (sprite != nullptr) { Renderable2DComponent* ccomp = dynamic_cast(component); @@ -59,6 +61,8 @@ int Renderable2DComponent_BindLua::AddSprite(lua_State *L) wiLua::SError(L, "AddSprite(Sprite sprite) not a Renderable2DComponent!"); } } + else + wiLua::SError(L, "AddSprite(Sprite sprite) argument is not a Sprite!"); } else { @@ -66,6 +70,38 @@ int Renderable2DComponent_BindLua::AddSprite(lua_State *L) } return 0; } +int Renderable2DComponent_BindLua::AddFont(lua_State* L) +{ + if (component == nullptr) + { + wiLua::SError(L, "AddFont() component is empty!"); + return 0; + } + int argc = wiLua::SGetArgCount(L); + if (argc > 1) + { + wiFont_BindLua* font = Luna::lightcheck(L, 2); + if (font != nullptr) + { + Renderable2DComponent* ccomp = dynamic_cast(component); + if (ccomp != nullptr) + { + ccomp->addFont(font->font); + } + else + { + wiLua::SError(L, "AddFont(Font font) not a Renderable2DComponent!"); + } + } + else + wiLua::SError(L, "AddFont(Font font) argument is not a Font!"); + } + else + { + wiLua::SError(L, "AddFont(Font font) not enough arguments!"); + } + return 0; +} void Renderable2DComponent_BindLua::Bind() { diff --git a/WickedEngine/Renderable2DComponent_BindLua.h b/WickedEngine/Renderable2DComponent_BindLua.h index d73380d24..ab5651b98 100644 --- a/WickedEngine/Renderable2DComponent_BindLua.h +++ b/WickedEngine/Renderable2DComponent_BindLua.h @@ -16,6 +16,7 @@ public: ~Renderable2DComponent_BindLua(); virtual int AddSprite(lua_State *L); + virtual int AddFont(lua_State* L); static void Bind(); }; diff --git a/WickedEngine/Renderable3DComponent.cpp b/WickedEngine/Renderable3DComponent.cpp index bea8ed006..a434087cb 100644 --- a/WickedEngine/Renderable3DComponent.cpp +++ b/WickedEngine/Renderable3DComponent.cpp @@ -164,6 +164,8 @@ void Renderable3DComponent::Compose(){ RenderableComponent::Compose(); RenderColorGradedComposition(); + + Renderable2DComponent::Compose(); } void Renderable3DComponent::RenderReflections(wiRenderer::DeviceContext context){ diff --git a/WickedEngine/Renderable3DComponent.h b/WickedEngine/Renderable3DComponent.h index c1ac47d92..a7d31bc79 100644 --- a/WickedEngine/Renderable3DComponent.h +++ b/WickedEngine/Renderable3DComponent.h @@ -1,11 +1,11 @@ #pragma once -#include "RenderableComponent.h" +#include "Renderable2DComponent.h" #include "wiTaskThread.h" #include "wiRenderer.h" #include "wiWaterPlane.h" class Renderable3DComponent : - public RenderableComponent + public Renderable2DComponent { private: float lightShaftQuality; diff --git a/WickedEngine/Renderable3DComponent_BindLua.cpp b/WickedEngine/Renderable3DComponent_BindLua.cpp index 6082911a8..75dd81bb5 100644 --- a/WickedEngine/Renderable3DComponent_BindLua.cpp +++ b/WickedEngine/Renderable3DComponent_BindLua.cpp @@ -4,6 +4,9 @@ const char Renderable3DComponent_BindLua::className[] = "Renderable3DComponent"; Luna::FunctionType Renderable3DComponent_BindLua::methods[] = { + lunamethod(Renderable2DComponent_BindLua, AddSprite), + lunamethod(Renderable2DComponent_BindLua, AddFont), + lunamethod(Renderable3DComponent_BindLua, GetContent), lunamethod(Renderable3DComponent_BindLua, Initialize), lunamethod(Renderable3DComponent_BindLua, Load), diff --git a/WickedEngine/Renderable3DComponent_BindLua.h b/WickedEngine/Renderable3DComponent_BindLua.h index 754ca29f1..d56ed74c1 100644 --- a/WickedEngine/Renderable3DComponent_BindLua.h +++ b/WickedEngine/Renderable3DComponent_BindLua.h @@ -2,9 +2,9 @@ #include "wiLua.h" #include "wiLuna.h" #include "Renderable3DComponent.h" -#include "RenderableComponent_BindLua.h" +#include "Renderable2DComponent_BindLua.h" -class Renderable3DComponent_BindLua : public RenderableComponent_BindLua +class Renderable3DComponent_BindLua : public Renderable2DComponent_BindLua { public: static const char className[]; diff --git a/WickedEngine/WickedEngine.vcxproj b/WickedEngine/WickedEngine.vcxproj index 547dc66de..ec406e5c5 100644 --- a/WickedEngine/WickedEngine.vcxproj +++ b/WickedEngine/WickedEngine.vcxproj @@ -448,6 +448,7 @@ + @@ -503,6 +504,7 @@ + diff --git a/WickedEngine/WickedEngine.vcxproj.filters b/WickedEngine/WickedEngine.vcxproj.filters index ad07c571e..da2533177 100644 --- a/WickedEngine/WickedEngine.vcxproj.filters +++ b/WickedEngine/WickedEngine.vcxproj.filters @@ -788,6 +788,9 @@ Lua Bindings + + Lua Bindings + @@ -1753,6 +1756,9 @@ Lua Bindings + + Lua Bindings + diff --git a/WickedEngine/wiFont_BindLua.cpp b/WickedEngine/wiFont_BindLua.cpp new file mode 100644 index 000000000..d062e1d50 --- /dev/null +++ b/WickedEngine/wiFont_BindLua.cpp @@ -0,0 +1,56 @@ +#include "wiFont_BindLua.h" +#include "wiFont.h" + +const char wiFont_BindLua::className[] = "Font"; + +Luna::FunctionType wiFont_BindLua::methods[] = { + lunamethod(wiFont_BindLua, GetProperties), + lunamethod(wiFont_BindLua, SetProperties), + { NULL, NULL } +}; +Luna::PropertyType wiFont_BindLua::properties[] = { + { NULL, NULL } +}; + +wiFont_BindLua::wiFont_BindLua(wiFont* font) +{ + if (font != nullptr) + this->font = new wiFont(*font); + else + this->font = nullptr; +} +wiFont_BindLua::wiFont_BindLua(lua_State* L) +{ + int argc = wiLua::SGetArgCount(L); + if (argc > 0) + { + string text = wiLua::SGetString(L, 1); + font = new wiFont(text); + } + else + font = nullptr; +} +wiFont_BindLua::~wiFont_BindLua() +{ + delete font; +} + + +int wiFont_BindLua::GetProperties(lua_State* L) +{ + return 0; +} +int wiFont_BindLua::SetProperties(lua_State* L) +{ + return 0; +} + +void wiFont_BindLua::Bind() +{ + static bool initialized = false; + if (!initialized) + { + initialized = true; + Luna::Register(wiLua::GetGlobal()->GetLuaState()); + } +} diff --git a/WickedEngine/wiFont_BindLua.h b/WickedEngine/wiFont_BindLua.h new file mode 100644 index 000000000..7ebd20148 --- /dev/null +++ b/WickedEngine/wiFont_BindLua.h @@ -0,0 +1,25 @@ +#pragma once +#include "wiLua.h" +#include "wiLuna.h" + +class wiFont; + +class wiFont_BindLua +{ +public: + wiFont* font; + + static const char className[]; + static Luna::FunctionType methods[]; + static Luna::PropertyType properties[]; + + wiFont_BindLua(wiFont* font); + wiFont_BindLua(lua_State* L); + ~wiFont_BindLua(); + + int GetProperties(lua_State* L); + int SetProperties(lua_State* L); + + static void Bind(); +}; + diff --git a/WickedEngine/wiLua.cpp b/WickedEngine/wiLua.cpp index f2088a0a5..ac206693a 100644 --- a/WickedEngine/wiLua.cpp +++ b/WickedEngine/wiLua.cpp @@ -19,6 +19,7 @@ #include "Vector_BindLua.h" #include "Matrix_BindLua.h" #include "wiInputManager_BindLua.h" +#include "wiFont_BindLua.h" wiLua *wiLua::globalLua = nullptr; @@ -64,6 +65,7 @@ wiLua* wiLua::GetGlobal() Vector_BindLua::Bind(); Matrix_BindLua::Bind(); wiInputManager_BindLua::Bind(); + wiFont_BindLua::Bind(); } return globalLua;