diff --git a/WickedEngine/DeferredRenderableComponent.cpp b/WickedEngine/DeferredRenderableComponent.cpp index 8b8b9f40f..da51530c6 100644 --- a/WickedEngine/DeferredRenderableComponent.cpp +++ b/WickedEngine/DeferredRenderableComponent.cpp @@ -8,21 +8,18 @@ #include "wiTextureHelper.h" DeferredRenderableComponent::DeferredRenderableComponent(){ -} -DeferredRenderableComponent::~DeferredRenderableComponent(){ -} -void DeferredRenderableComponent::Initialize() -{ - Renderable3DSceneComponent::Initialize(); + Renderable3DSceneComponent::setProperties(); setSSREnabled(true); setSSAOEnabled(true); setPreferredThreadingCount(0); } -void DeferredRenderableComponent::Load() +DeferredRenderableComponent::~DeferredRenderableComponent(){ +} +void DeferredRenderableComponent::Initialize() { - Renderable3DSceneComponent::Load(); + Renderable3DSceneComponent::Initialize(); rtGBuffer.Initialize( screenW, screenH @@ -38,6 +35,10 @@ void DeferredRenderableComponent::Load() , DXGI_FORMAT_R11G11B10_FLOAT ); } +void DeferredRenderableComponent::Load() +{ + Renderable3DSceneComponent::Load(); +} void DeferredRenderableComponent::Start() { Renderable3DSceneComponent::Start(); diff --git a/WickedEngine/ForwardRenderableComponent.cpp b/WickedEngine/ForwardRenderableComponent.cpp index 60314aeed..89afdb8a4 100644 --- a/WickedEngine/ForwardRenderableComponent.cpp +++ b/WickedEngine/ForwardRenderableComponent.cpp @@ -7,12 +7,7 @@ #include "wiHelper.h" ForwardRenderableComponent::ForwardRenderableComponent(){ -} -ForwardRenderableComponent::~ForwardRenderableComponent(){ -} -void ForwardRenderableComponent::Initialize() -{ - Renderable3DSceneComponent::Initialize(); + Renderable3DSceneComponent::setProperties(); setSSREnabled(false); setSSAOEnabled(false); @@ -20,11 +15,18 @@ void ForwardRenderableComponent::Initialize() setPreferredThreadingCount(0); } +ForwardRenderableComponent::~ForwardRenderableComponent(){ +} +void ForwardRenderableComponent::Initialize() +{ + Renderable3DSceneComponent::Initialize(); + + rtMain.Initialize(screenW, screenH, 1, true); +} void ForwardRenderableComponent::Load() { Renderable3DSceneComponent::Load(); - rtMain.Initialize(screenW, screenH, 1, true); } void ForwardRenderableComponent::Start() { diff --git a/WickedEngine/MainComponent.cpp b/WickedEngine/MainComponent.cpp new file mode 100644 index 000000000..2d7ff19bd --- /dev/null +++ b/WickedEngine/MainComponent.cpp @@ -0,0 +1,83 @@ +#include "MainComponent.h" +#include "RenderableComponent.h" +#include "frameskipDEF.h" +#include "wiRenderer.h" +#include "wiHelper.h" + + +MainComponent::MainComponent() +{ + screenW = 800; + screenH = 600; + + activeComponent = new RenderableComponent(); +} + + +MainComponent::~MainComponent() +{ + activeComponent->Unload(); +} + +void MainComponent::activateComponent(RenderableComponent* component) +{ + if (component == nullptr) + { + return; + } + + activeComponent->Stop(); + + activeComponent = component; + activeComponent->Start(); +} + +void MainComponent::run() +{ + FRAMESKIP_START(getFrameSkip(), 10) + + Update(); + + FRAMESKIP_END + + Render(); + + wiRenderer::Present(bind(&MainComponent::Compose, this)); +} + +void MainComponent::Update() +{ + getActiveComponent()->Update(); +} + +void MainComponent::Render() +{ + getActiveComponent()->Render(); +} + +void MainComponent::Compose() +{ + getActiveComponent()->Compose(); +} + +#ifndef WINSTORE_SUPPORT +bool MainComponent::setWindow(HWND hWnd, HINSTANCE hInst) +{ + window = hWnd; + instance = hInst; + + RECT rect = RECT(); + GetClientRect(hWnd, &rect); + screenW = rect.right - rect.left; + screenH = rect.bottom - rect.top; + + if (FAILED(wiRenderer::InitDevice(window, screenW, screenH, true))) + { + wiHelper::messageBox("Could not initialize D3D device!", "Fatal Error!", window); + return false; + } + + return true; +} +#endif + diff --git a/WickedEngine/MainComponent.h b/WickedEngine/MainComponent.h new file mode 100644 index 000000000..1d66ec5cd --- /dev/null +++ b/WickedEngine/MainComponent.h @@ -0,0 +1,38 @@ +#pragma once +#include "CommonInclude.h" + +class RenderableComponent; + +class MainComponent +{ +private: + RenderableComponent* activeComponent; + bool frameskip; +public: + MainComponent(); + ~MainComponent(); + + int screenW, screenH; + + void run(); + + void activateComponent(RenderableComponent* component); + RenderableComponent* getActiveComponent(){ return activeComponent; } + + void setFrameSkip(bool value){ frameskip = value; } + bool getFrameSkip(){ return frameskip; } + + virtual void Initialize(){}; + virtual void Update(); + virtual void Render(); + virtual void Compose(); + + +#ifndef WINSTORE_SUPPORT + HWND window; + HINSTANCE instance; + bool setWindow(HWND hWnd, HINSTANCE hInst); +#endif + +}; + diff --git a/WickedEngine/Renderable3DSceneComponent.cpp b/WickedEngine/Renderable3DSceneComponent.cpp index ec358ceec..6dde5bfac 100644 --- a/WickedEngine/Renderable3DSceneComponent.cpp +++ b/WickedEngine/Renderable3DSceneComponent.cpp @@ -9,7 +9,6 @@ Renderable3DSceneComponent::Renderable3DSceneComponent() { - Initialize(); } Renderable3DSceneComponent::~Renderable3DSceneComponent() { @@ -19,10 +18,8 @@ Renderable3DSceneComponent::~Renderable3DSceneComponent() } } -void Renderable3DSceneComponent::Initialize() +void Renderable3DSceneComponent::setProperties() { - RenderableComponent::Initialize(); - setLightShaftQuality(0.4f); setBloomDownSample(4.0f); setAlphaParticleDownSample(1.0f); @@ -52,9 +49,9 @@ void Renderable3DSceneComponent::Initialize() setPreferredThreadingCount(4); } -void Renderable3DSceneComponent::Load() +void Renderable3DSceneComponent::Initialize() { - RenderableComponent::Load(); + RenderableComponent::Initialize(); rtSSR.Initialize( (UINT)(screenW * getSSRQuality()), (UINT)(screenH * getSSRQuality()) @@ -134,17 +131,18 @@ void Renderable3DSceneComponent::Load() for (unsigned int i = 1; i + @@ -363,11 +364,11 @@ - + diff --git a/WickedEngine/WickedEngine.vcxproj.filters b/WickedEngine/WickedEngine.vcxproj.filters index 66d7097f2..5a9bbac9c 100644 --- a/WickedEngine/WickedEngine.vcxproj.filters +++ b/WickedEngine/WickedEngine.vcxproj.filters @@ -605,15 +605,15 @@ Source Files - - Source Files - Source Files ComponentTemplates + + ComponentTemplates + @@ -1432,6 +1432,9 @@ Header Files + + ComponentTemplates + diff --git a/WickedEngine/frameskipDEF.h b/WickedEngine/frameskipDEF.h index 14aa4114c..804d5c59b 100644 --- a/WickedEngine/frameskipDEF.h +++ b/WickedEngine/frameskipDEF.h @@ -1,6 +1,8 @@ #ifndef DEFINED_FRAMESKIP #define DEFINED_FRAMESKIP +#include "wiTimer.h" + //MUST CALL FRAMESKIP_END ! #define FRAMESKIP_START(enabled,idlethreshold) const bool frameskip = enabled; static Timer timer = Timer(); static const double dt = 1.0 / 60.0; static double accumulator = 0.0; accumulator += timer.elapsed() / 1000.0;if (accumulator>idlethreshold)accumulator = 0;timer.record();while (accumulator >= dt){ #define FRAMESKIP_END accumulator -= dt;if (!frameskip) break; } diff --git a/WickedEngine/wiBULLET.cpp b/WickedEngine/wiBULLET.cpp index c62db2324..0ede7235a 100644 --- a/WickedEngine/wiBULLET.cpp +++ b/WickedEngine/wiBULLET.cpp @@ -93,7 +93,7 @@ void BULLET::addBox(const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& po , float newMass, float newFriction, float newRestitution, float newDamping, bool kinematic){ btCollisionShape* shape = new btBoxShape(btVector3(sca.x,sca.y,sca.z)); - shape->setMargin(0.05); + shape->setMargin(btScalar(0.05)); collisionShapes.push_back(shape); btTransform shapeTransform; @@ -203,7 +203,7 @@ void BULLET::addSphere(float rad, const XMFLOAT3& pos }*/ btCollisionShape* shape = new btSphereShape(btScalar(rad)); - shape->setMargin(0.05); + shape->setMargin(btScalar(0.05)); collisionShapes.push_back(shape); btTransform shapeTransform; @@ -254,7 +254,7 @@ void BULLET::addCapsule(float rad, float hei, const XMFLOAT4& rot, const XMFLOAT , float newMass, float newFriction, float newRestitution, float newDamping, bool kinematic){ btCollisionShape* shape = new btCapsuleShape(btScalar(rad),btScalar(hei)); - shape->setMargin(0.05); + shape->setMargin(btScalar(0.05)); collisionShapes.push_back(shape); btTransform shapeTransform; @@ -308,7 +308,7 @@ void BULLET::addConvexHull(const vector& vertices, const XMFLOAT3 for (unsigned int i = 0; iaddPoint(btVector3(vertices[i].pos.x,vertices[i].pos.y,vertices[i].pos.z)); shape->setLocalScaling(btVector3(sca.x,sca.y,sca.z)); - shape->setMargin(0.05); + shape->setMargin(btScalar(0.05)); collisionShapes.push_back(shape); @@ -388,7 +388,7 @@ void BULLET::addTriangleMesh(const vector& vertices, const vector bool useQuantizedAabbCompression = true; btCollisionShape* shape = new btBvhTriangleMeshShape(indexVertexArrays,useQuantizedAabbCompression); - shape->setMargin(0.05); + shape->setMargin(btScalar(0.05)); shape->setLocalScaling(btVector3(sca.x,sca.y,sca.z)); collisionShapes.push_back(shape); @@ -542,7 +542,7 @@ void BULLET::addSoftBodyTriangleMesh(const Mesh* mesh, const XMFLOAT3& sca, cons // btSoftBody::fCollision::CL_RS // ; //softBody->generateClusters(tCount/4); - softBody->getCollisionShape()->setMargin(0.2); + softBody->getCollisionShape()->setMargin(btScalar(0.2)); //softBody->m_cfg.collisions = // btSoftBody::fCollision::SDF_RS+btSoftBody::fCollision::VF_SS diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index 860b4ce84..351296b74 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -432,7 +432,7 @@ void wiRenderer::SetUpStaticComponents() wiEmittedParticle::SetUpStatic(); GameSpeed=1; - shBias = 9.99995464e-005; + shBias = 9.99995464e-005f; resetVertexCount(); resetVisibleObjectCount(); @@ -599,6 +599,9 @@ void wiRenderer::CleanUpStaticTemp(){ if (physicsEngine) physicsEngine->ClearWorld(); + enviroMap = nullptr; + colorGrading = nullptr; + wiRenderer::resetVertexCount(); for (wiSprite* x : images) diff --git a/WickedEngine/wiWaterPlane.cpp b/WickedEngine/wiWaterPlane.cpp deleted file mode 100644 index 5d0aa3124..000000000 --- a/WickedEngine/wiWaterPlane.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include "wiWaterPlane.h" - -