Merge remote-tracking branch 'origin/master' into LevelSystemAndSuch
This commit is contained in:
+20
-2
@@ -37,6 +37,7 @@
|
||||
#include "Rendering/CModel.h"
|
||||
#include "Rendering/CSprite.h"
|
||||
#include "Rendering/CPointLight.h"
|
||||
#include "Rendering/CCamera.h"
|
||||
#include "Transform/TransformSystem.h"
|
||||
#include "Sound/SoundSystem.h"
|
||||
#include "Sound/CCollisionSound.h"
|
||||
@@ -67,6 +68,7 @@
|
||||
|
||||
#include "Game/BrickComponents.h"
|
||||
|
||||
#include "Game/ScreenShakeSystem.h"
|
||||
#include "Game/EScreenShake.h"
|
||||
|
||||
#include "Physics/PhysicsSystem.h"
|
||||
@@ -147,6 +149,7 @@ public:
|
||||
|
||||
m_World->ComponentFactory.Register<Components::Sprite>();
|
||||
|
||||
m_World->ComponentFactory.Register<Components::Camera>();
|
||||
m_World->ComponentFactory.Register<Components::RectangleShape>();
|
||||
m_World->ComponentFactory.Register<Components::Physics>();
|
||||
m_World->ComponentFactory.Register<Components::Ball>();
|
||||
@@ -209,6 +212,9 @@ public:
|
||||
m_World->SystemFactory.Register<Systems::LifeSystem>(
|
||||
[this]() { return new Systems::LifeSystem(m_World.get(), m_EventBroker); });
|
||||
m_World->AddSystem<Systems::LifeSystem>();
|
||||
m_World->SystemFactory.Register<Systems::ScreenShakeSystem>(
|
||||
[this]() { return new Systems::ScreenShakeSystem(m_World.get(), m_EventBroker); });
|
||||
m_World->AddSystem<Systems::ScreenShakeSystem>();
|
||||
|
||||
m_World->ComponentFactory.Register<Components::Model>();
|
||||
m_World->ComponentFactory.Register<Components::Template>();
|
||||
@@ -271,8 +277,6 @@ public:
|
||||
TEMPAddToRenderQueue();
|
||||
}
|
||||
|
||||
std::unique_ptr<dd::Camera> defaultCamera = nullptr;
|
||||
|
||||
// Render scene
|
||||
//TODO send renderqueue to draw.
|
||||
m_Renderer->Draw(m_RendererQueue);
|
||||
@@ -292,6 +296,20 @@ public:
|
||||
{
|
||||
if (!m_TransformSystem)
|
||||
m_TransformSystem = m_World->GetSystem<Systems::TransformSystem>();
|
||||
|
||||
// HACK: How do we handle multiple cameras? Maybe view and projection matrices in render queue...
|
||||
auto cameras = m_World->GetComponentsOfType<Components::Camera>();
|
||||
if (cameras != nullptr) {
|
||||
for (auto& component : *cameras) {
|
||||
auto camera = static_cast<Components::Camera*>(component.get());
|
||||
auto transform = m_World->GetComponent<Components::Transform>(camera->Entity);
|
||||
m_Renderer->Camera()->SetPosition(transform->Position);
|
||||
m_Renderer->Camera()->SetOrientation(transform->Orientation);
|
||||
m_Renderer->Camera()->SetFOV(camera->FOV);
|
||||
m_Renderer->Camera()->SetNearClip(camera->NearClip);
|
||||
m_Renderer->Camera()->SetFarClip(camera->FarClip);
|
||||
}
|
||||
}
|
||||
|
||||
for (auto &pair : *m_World->GetEntities())
|
||||
{
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
#include "Physics/ECreateParticleSequence.h"
|
||||
#include "Sound/CCollisionSound.h"
|
||||
#include "Sound/EPlaySound.h"
|
||||
#include "Rendering/EAnimationComplete.h"
|
||||
|
||||
namespace dd
|
||||
{
|
||||
@@ -145,6 +146,7 @@ private:
|
||||
dd::EventRelay<BallSystem, dd::Events::ActionButton> m_EActionButton;
|
||||
dd::EventRelay<BallSystem, dd::Events::StageCleared> m_EStageCleared;
|
||||
dd::EventRelay<BallSystem, dd::Events::ArrivedAtNewStage> m_EArrivedAtNewStage;
|
||||
dd::EventRelay<BallSystem, dd::Events::AnimationComplete> m_EAnimationComplete;
|
||||
|
||||
bool Contact(const Events::Contact &event);
|
||||
bool OnMultiBallLost(const dd::Events::MultiBallLost &event);
|
||||
@@ -160,6 +162,7 @@ private:
|
||||
bool OnActionButton(const dd::Events::ActionButton &event);
|
||||
bool OnStageCleared(const dd::Events::StageCleared &event);
|
||||
bool OnArrivedToNewStage(const dd::Events::ArrivedAtNewStage &event);
|
||||
bool OnAnimationComplete(const dd::Events::AnimationComplete &event);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ struct Ball : Component
|
||||
bool Waiting = true;
|
||||
bool InkBlaster = false;
|
||||
bool Sticky = false;
|
||||
bool Loaded = false;
|
||||
glm::vec3 StickyPlacement = glm::vec3(0, 0, 0);
|
||||
glm::vec3 SavedSpeed = glm::vec3(0, 1, 0);
|
||||
|
||||
|
||||
@@ -15,9 +15,9 @@ namespace Events
|
||||
|
||||
struct ScreenShake : Event
|
||||
{
|
||||
float Time;
|
||||
int Intensity;
|
||||
float TimeTakenToCoolDown;
|
||||
float Time = 1.f;
|
||||
float Intensity = 1.f;
|
||||
float TimeTakenToCoolDown = 1.f;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "Game/CKraken.h"
|
||||
#include "Game/CBall.h"
|
||||
#include "Game/CProjectile.h"
|
||||
#include "Game/EScreenShake.h"
|
||||
#include "Sound/CCollisionSound.h"
|
||||
#include "Rendering/CAnimation.h"
|
||||
#include "Rendering/CSprite.h"
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "Rendering/CSprite.h"
|
||||
#include "Rendering/CModel.h"
|
||||
#include "Rendering/CPointLight.h"
|
||||
#include "Rendering/CCamera.h"
|
||||
|
||||
#include "Transform/EMove.h"
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "Game/CProjectile.h"
|
||||
#include "Game/CBall.h"
|
||||
#include "Rendering/CSprite.h"
|
||||
#include "Rendering/CAnimation.h"
|
||||
|
||||
namespace dd
|
||||
{
|
||||
|
||||
@@ -37,8 +37,8 @@ public:
|
||||
void SetFullscreen(bool fullscreen) { m_Fullscreen = fullscreen; }
|
||||
bool VSYNC() const { return m_VSYNC; }
|
||||
void SetVSYNC(bool vsync) { m_VSYNC = vsync; }
|
||||
const dd::Camera* Camera() const { return m_Camera; }
|
||||
void SetCamera(const dd::Camera* camera)
|
||||
dd::Camera* Camera() const { return m_Camera; }
|
||||
void SetCamera(dd::Camera* camera)
|
||||
{
|
||||
if (camera == nullptr) {
|
||||
m_Camera = m_DefaultCamera.get();
|
||||
@@ -55,7 +55,7 @@ protected:
|
||||
bool m_Fullscreen = false;
|
||||
bool m_VSYNC = false;
|
||||
std::unique_ptr<dd::Camera> m_DefaultCamera = nullptr;
|
||||
const dd::Camera* m_Camera = nullptr;
|
||||
dd::Camera* m_Camera = nullptr;
|
||||
GLFWwindow* m_Window = nullptr;
|
||||
};
|
||||
|
||||
|
||||
@@ -30,14 +30,9 @@ namespace Components
|
||||
|
||||
struct Camera : Component
|
||||
{
|
||||
Camera()
|
||||
: FOV(glm::radians(45.f))
|
||||
, NearClip(0.1f)
|
||||
, FarClip(100.f) { }
|
||||
|
||||
float FOV;
|
||||
float NearClip;
|
||||
float FarClip;
|
||||
float FOV = glm::radians(45.f);
|
||||
float NearClip = 0.01f;
|
||||
float FarClip = 100.f;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace dd
|
||||
namespace Events
|
||||
{
|
||||
|
||||
struct AnimationComplete
|
||||
struct AnimationComplete : Event
|
||||
{
|
||||
EntityID Entity;
|
||||
std::string Animation;
|
||||
|
||||
@@ -43,7 +43,6 @@ class Renderer : public BaseRenderer
|
||||
public:
|
||||
void Initialize() override;
|
||||
void Draw(RenderQueueCollection& rq) override;
|
||||
void PlaceCamera(glm::vec3 position);
|
||||
|
||||
private:
|
||||
int m_GLVersion[2];
|
||||
@@ -97,12 +96,6 @@ private:
|
||||
void DrawWater(RenderQueue &objects);
|
||||
void DrawGUI(RenderQueue& rq);
|
||||
void DebugKeys();
|
||||
|
||||
dd::EventRelay<Renderer, dd::Events::ScreenShake> m_EScreenShake;
|
||||
bool OnScreenShake(dd::Events::ScreenShake &event);
|
||||
bool m_ScreenShake = false;
|
||||
float m_ShakeIntensity = 0;
|
||||
float m_ShakeTimer = 0;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user