diff --git a/ScriptingAPI-Documentation.md b/ScriptingAPI-Documentation.md index 93a9d1050..35545e0d1 100644 --- a/ScriptingAPI-Documentation.md +++ b/ScriptingAPI-Documentation.md @@ -445,7 +445,8 @@ A RenderableComponent describes a scene wich can render itself. - Unload() - Start() - Stop() -- Update() +- FixedUpdate() +- Update(opt float dt = 0) - Render() - Compose() - OnStart(string task) diff --git a/WickedEngine/DeferredRenderableComponent_BindLua.cpp b/WickedEngine/DeferredRenderableComponent_BindLua.cpp index f52c60869..fba7f2c53 100644 --- a/WickedEngine/DeferredRenderableComponent_BindLua.cpp +++ b/WickedEngine/DeferredRenderableComponent_BindLua.cpp @@ -24,6 +24,7 @@ Luna::FunctionType DeferredRenderableCompon lunamethod(RenderableComponent_BindLua, Unload), lunamethod(RenderableComponent_BindLua, Start), lunamethod(RenderableComponent_BindLua, Stop), + lunamethod(RenderableComponent_BindLua, FixedUpdate), lunamethod(RenderableComponent_BindLua, Update), lunamethod(RenderableComponent_BindLua, Render), lunamethod(RenderableComponent_BindLua, Compose), diff --git a/WickedEngine/Editor.cpp b/WickedEngine/Editor.cpp index c9aa565da..e0030d514 100644 --- a/WickedEngine/Editor.cpp +++ b/WickedEngine/Editor.cpp @@ -661,7 +661,7 @@ void EditorComponent::Start() { __super::Start(); } -void EditorComponent::Update() +void EditorComponent::FixedUpdate() { if (!wiBackLog::isActive() && !GetGUI().HasFocus()) { @@ -1028,7 +1028,7 @@ void EditorComponent::Update() SAFE_DELETE(history); } - __super::Update(); + __super::FixedUpdate(); } void EditorComponent::Render() { diff --git a/WickedEngine/Editor.h b/WickedEngine/Editor.h index aca43710a..d6273b26c 100644 --- a/WickedEngine/Editor.h +++ b/WickedEngine/Editor.h @@ -48,7 +48,7 @@ public: void Initialize() override; void Load() override; void Start() override; - void Update() override; + void FixedUpdate() override; void Render() override; void Compose() override; void Unload() override; diff --git a/WickedEngine/ForwardRenderableComponent_BindLua.cpp b/WickedEngine/ForwardRenderableComponent_BindLua.cpp index a8807438c..7646031de 100644 --- a/WickedEngine/ForwardRenderableComponent_BindLua.cpp +++ b/WickedEngine/ForwardRenderableComponent_BindLua.cpp @@ -24,6 +24,7 @@ Luna::FunctionType ForwardRenderableComponen lunamethod(RenderableComponent_BindLua, Unload), lunamethod(RenderableComponent_BindLua, Start), lunamethod(RenderableComponent_BindLua, Stop), + lunamethod(RenderableComponent_BindLua, FixedUpdate), lunamethod(RenderableComponent_BindLua, Update), lunamethod(RenderableComponent_BindLua, Render), lunamethod(RenderableComponent_BindLua, Compose), diff --git a/WickedEngine/LoadingScreenComponent_BindLua.cpp b/WickedEngine/LoadingScreenComponent_BindLua.cpp index 4150a8088..4651385c0 100644 --- a/WickedEngine/LoadingScreenComponent_BindLua.cpp +++ b/WickedEngine/LoadingScreenComponent_BindLua.cpp @@ -22,6 +22,7 @@ Luna::FunctionType LoadingScreenComponent_BindLu lunamethod(LoadingScreenComponent_BindLua, Unload), lunamethod(LoadingScreenComponent_BindLua, Start), lunamethod(LoadingScreenComponent_BindLua, Stop), + lunamethod(LoadingScreenComponent_BindLua, FixedUpdate), lunamethod(LoadingScreenComponent_BindLua, Update), lunamethod(LoadingScreenComponent_BindLua, Render), lunamethod(LoadingScreenComponent_BindLua, Compose), diff --git a/WickedEngine/MainComponent.cpp b/WickedEngine/MainComponent.cpp index a32f85ade..6e27772d4 100644 --- a/WickedEngine/MainComponent.cpp +++ b/WickedEngine/MainComponent.cpp @@ -107,7 +107,7 @@ void MainComponent::run() Update(); } - getActiveComponent()->FixedUpdate((float)elapsedTime); + getActiveComponent()->Update((float)elapsedTime); Render(); @@ -127,7 +127,7 @@ void MainComponent::Update() wiLua::GetGlobal()->Update(); - getActiveComponent()->Update(); + getActiveComponent()->FixedUpdate(); fadeManager.Update(); diff --git a/WickedEngine/MainComponent_BindLua.cpp b/WickedEngine/MainComponent_BindLua.cpp index a5131be4d..1cfe202be 100644 --- a/WickedEngine/MainComponent_BindLua.cpp +++ b/WickedEngine/MainComponent_BindLua.cpp @@ -4,6 +4,7 @@ #include "Renderable2DComponent_BindLua.h" #include "DeferredRenderableComponent_BindLua.h" #include "ForwardRenderableComponent_BindLua.h" +#include "TiledForwardRenderableComponent_BindLua.h" #include "LoadingScreenComponent_BindLua.h" #include "wiResourceManager_BindLua.h" @@ -65,6 +66,14 @@ int MainComponent_BindLua::GetActiveComponent(lua_State *L) return 1; } + //return tiled forward 3d component if the active one is of that type + TiledForwardRenderableComponent* compTFwd3D = dynamic_cast(component->getActiveComponent()); + if (compTFwd3D != nullptr) + { + Luna::push(L, new TiledForwardRenderableComponent_BindLua(compTFwd3D)); + return 1; + } + //return forward 3d component if the active one is of that type ForwardRenderableComponent* compFwd3D = dynamic_cast(component->getActiveComponent()); if (compFwd3D != nullptr) diff --git a/WickedEngine/Renderable2DComponent.cpp b/WickedEngine/Renderable2DComponent.cpp index d546e38b5..9dfbf8045 100644 --- a/WickedEngine/Renderable2DComponent.cpp +++ b/WickedEngine/Renderable2DComponent.cpp @@ -62,7 +62,7 @@ void Renderable2DComponent::Start() { RenderableComponent::Start(); } -void Renderable2DComponent::Update() +void Renderable2DComponent::FixedUpdate() { for (auto& x : layers) @@ -82,7 +82,7 @@ void Renderable2DComponent::Update() GetGUI().Update(); - RenderableComponent::Update(); + RenderableComponent::FixedUpdate(); } void Renderable2DComponent::Render() { diff --git a/WickedEngine/Renderable2DComponent.h b/WickedEngine/Renderable2DComponent.h index 3c011c4be..81d4a1cde 100644 --- a/WickedEngine/Renderable2DComponent.h +++ b/WickedEngine/Renderable2DComponent.h @@ -57,7 +57,7 @@ public: virtual void Load(); virtual void Unload(); virtual void Start(); - virtual void Update(); + virtual void FixedUpdate(); virtual void Render(); virtual void Compose(); diff --git a/WickedEngine/Renderable2DComponent_BindLua.cpp b/WickedEngine/Renderable2DComponent_BindLua.cpp index 1fc8c6815..4dfddfb16 100644 --- a/WickedEngine/Renderable2DComponent_BindLua.cpp +++ b/WickedEngine/Renderable2DComponent_BindLua.cpp @@ -25,6 +25,7 @@ Luna::FunctionType Renderable2DComponent_BindLua: lunamethod(Renderable2DComponent_BindLua, Unload), lunamethod(Renderable2DComponent_BindLua, Start), lunamethod(Renderable2DComponent_BindLua, Stop), + lunamethod(Renderable2DComponent_BindLua, FixedUpdate), lunamethod(Renderable2DComponent_BindLua, Update), lunamethod(Renderable2DComponent_BindLua, Render), lunamethod(Renderable2DComponent_BindLua, Compose), diff --git a/WickedEngine/Renderable3DComponent.cpp b/WickedEngine/Renderable3DComponent.cpp index 7de255289..d049da685 100644 --- a/WickedEngine/Renderable3DComponent.cpp +++ b/WickedEngine/Renderable3DComponent.cpp @@ -162,17 +162,19 @@ void Renderable3DComponent::Start() Renderable2DComponent::Start(); } -void Renderable3DComponent::Update(){ +void Renderable3DComponent::FixedUpdate() +{ wiRenderer::Update(); wiRenderer::UpdateImages(); - Renderable2DComponent::Update(); + Renderable2DComponent::FixedUpdate(); } -void Renderable3DComponent::FixedUpdate(float dt) { +void Renderable3DComponent::Update(float dt) +{ wiRenderer::SynchronizeWithPhysicsEngine(dt); - Renderable2DComponent::FixedUpdate(dt); + Renderable2DComponent::Update(dt); } void Renderable3DComponent::Compose() diff --git a/WickedEngine/Renderable3DComponent.h b/WickedEngine/Renderable3DComponent.h index a41559e02..89de4aa74 100644 --- a/WickedEngine/Renderable3DComponent.h +++ b/WickedEngine/Renderable3DComponent.h @@ -161,8 +161,8 @@ public: virtual void Initialize() override; virtual void Load() override; virtual void Start() override; - virtual void Update() override; - virtual void FixedUpdate(float dt) override; + virtual void FixedUpdate() override; + virtual void Update(float dt) override; virtual void Compose() override; }; diff --git a/WickedEngine/Renderable3DComponent_BindLua.cpp b/WickedEngine/Renderable3DComponent_BindLua.cpp index 5b4706550..4558d5c2b 100644 --- a/WickedEngine/Renderable3DComponent_BindLua.cpp +++ b/WickedEngine/Renderable3DComponent_BindLua.cpp @@ -25,6 +25,7 @@ Luna::FunctionType Renderable3DComponent_BindLua: lunamethod(Renderable3DComponent_BindLua, Unload), lunamethod(Renderable3DComponent_BindLua, Start), lunamethod(Renderable3DComponent_BindLua, Stop), + lunamethod(Renderable3DComponent_BindLua, FixedUpdate), lunamethod(Renderable3DComponent_BindLua, Update), lunamethod(Renderable3DComponent_BindLua, Render), lunamethod(Renderable3DComponent_BindLua, Compose), diff --git a/WickedEngine/RenderableComponent.cpp b/WickedEngine/RenderableComponent.cpp index 199dae658..763063f5c 100644 --- a/WickedEngine/RenderableComponent.cpp +++ b/WickedEngine/RenderableComponent.cpp @@ -1,5 +1,13 @@ #include "Renderable2DComponent.h" +#include "wiRenderer.h" +void RenderableComponent::Update(float dt) +{ + if (wiRenderer::GetDevice()->ResolutionChanged()) + { + ResizeBuffers(); + } +} void RenderableComponent::Start() { if (onStart != nullptr) diff --git a/WickedEngine/RenderableComponent.h b/WickedEngine/RenderableComponent.h index e75e14d35..b01a77104 100644 --- a/WickedEngine/RenderableComponent.h +++ b/WickedEngine/RenderableComponent.h @@ -7,6 +7,9 @@ class RenderableComponent { +protected: + // create resolution dependant resources + virtual void ResizeBuffers() {} public: wiCVars Params; wiResourceManager Content; @@ -28,9 +31,9 @@ public: // unload temporary resources virtual void Stop(); // update logic - virtual void Update() {} + virtual void FixedUpdate() {} // update physics - virtual void FixedUpdate(float dt) {} + virtual void Update(float dt); // Render to layers, rendertargets, etc // This will be rendered offscreen virtual void Render() {} diff --git a/WickedEngine/RenderableComponent_BindLua.cpp b/WickedEngine/RenderableComponent_BindLua.cpp index a79ef1a01..c1efbdd8a 100644 --- a/WickedEngine/RenderableComponent_BindLua.cpp +++ b/WickedEngine/RenderableComponent_BindLua.cpp @@ -10,6 +10,7 @@ Luna::FunctionType RenderableComponent_BindLua::met lunamethod(RenderableComponent_BindLua, Unload), lunamethod(RenderableComponent_BindLua, Start), lunamethod(RenderableComponent_BindLua, Stop), + lunamethod(RenderableComponent_BindLua, FixedUpdate), lunamethod(RenderableComponent_BindLua, Update), lunamethod(RenderableComponent_BindLua, Render), lunamethod(RenderableComponent_BindLua, Compose), @@ -101,14 +102,30 @@ int RenderableComponent_BindLua::Stop(lua_State* L) return 0; } +int RenderableComponent_BindLua::FixedUpdate(lua_State* L) +{ + if (component == nullptr) + { + wiLua::SError(L, "FixedUpdate() component is null!"); + return 0; + } + component->FixedUpdate(); + return 0; +} + int RenderableComponent_BindLua::Update(lua_State* L) { if (component == nullptr) { - wiLua::SError(L, "Update() component is null!"); + wiLua::SError(L, "Update(opt float dt = 0) component is null!"); return 0; } - component->Update(); + float dt = 0.f; + if (wiLua::SGetArgCount(L) > 0) + { + dt = wiLua::SGetFloat(L, 1); + } + component->Update(dt); return 0; } diff --git a/WickedEngine/RenderableComponent_BindLua.h b/WickedEngine/RenderableComponent_BindLua.h index 9fc99a1e3..f0e3a725d 100644 --- a/WickedEngine/RenderableComponent_BindLua.h +++ b/WickedEngine/RenderableComponent_BindLua.h @@ -22,6 +22,7 @@ public: virtual int Unload(lua_State* L); virtual int Start(lua_State* L); virtual int Stop(lua_State* L); + virtual int FixedUpdate(lua_State* L); virtual int Update(lua_State* L); virtual int Render(lua_State* L); virtual int Compose(lua_State* L); diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index bdeed3784..41419db06 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -3357,6 +3357,7 @@ void wiRenderer::RenderMeshes(const XMFLOAT3& eye, const CulledCollection& culle GetDevice()->BindVS(nullptr, threadID); GetDevice()->BindDS(nullptr, threadID); GetDevice()->BindHS(nullptr, threadID); + GetDevice()->BindVertexBuffer(nullptr, 1, 0, threadID); // unbind the instance buffer ResetAlphaRef(threadID); diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index 61566c34c..d1dbcb55f 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -7,7 +7,7 @@ namespace wiVersion // minor features, major updates const int minor = 9; // minor bug fixes, alterations, refactors, updates - const int revision = 46; + const int revision = 47; long GetVersion()