Merge remote-tracking branch 'origin/master' into deffered_rendering

Conflicts:
	src/GUI/GameFrame.h
	src/GameWorld.cpp
	vs11/Returngeance/Returngeance.vcxproj.filters
This commit is contained in:
Tleety
2014-05-31 17:16:29 +02:00
16 changed files with 401 additions and 510 deletions
+17 -1
View File
@@ -32,12 +32,14 @@ public:
, Rectangle()
, m_Name("UIParent")
, m_Layer(0)
, m_Hidden(false)
{ }
// Create a frame as a child
Frame(Frame* parent, std::string name)
: m_Name(name)
, m_Layer(0)
, m_Hidden(false)
{ SetParent(std::shared_ptr<Frame>(parent)); }
::RenderQueuePair RenderQueue;
@@ -74,6 +76,9 @@ public:
std::string Name() const { return m_Name; }
void SetName(std::string val) { m_Name = val; }
int Layer() const { return m_Layer; }
bool Hidden() const { return m_Hidden; }
void Hide() { m_Hidden = true; }
void Show() { m_Hidden = false; }
int Left() const override
{
@@ -105,6 +110,9 @@ public:
void UpdateLayered(double dt)
{
if (this->Hidden())
return;
// Update ourselves
this->Update(dt);
@@ -115,6 +123,8 @@ public:
for (auto &pairChild : children)
{
auto child = pairChild.second;
if (child->Hidden())
continue;
child->Update(dt);
}
}
@@ -123,6 +133,9 @@ public:
void DrawLayered(std::shared_ptr<Renderer> renderer)
{
if (this->Hidden())
return;
// Draw ourselves
renderer->SetViewport(AbsoluteRectangle());
this->Draw(renderer);
@@ -134,6 +147,8 @@ public:
for (auto &pairChild : children)
{
auto child = pairChild.second;
if (child->Hidden())
continue;
Rectangle rect = child->AbsoluteRectangle();
renderer->SetViewport(rect);
child->Draw(renderer);
@@ -149,7 +164,8 @@ protected:
std::string m_Name;
int m_Layer;
bool m_Hidden;
std::shared_ptr<Frame> m_Parent;
typedef std::multimap<std::string, std::shared_ptr<Frame>> Children_t; // name -> frame
std::map<int, Children_t> m_Children; // layer -> Children_t
+20 -5
View File
@@ -18,32 +18,47 @@ public:
GameFrame(Frame* parent, std::string name)
: Frame(parent, name)
{
EVENT_SUBSCRIBE_MEMBER(m_EKeyUp, &GameFrame::OnKeyUp);
m_World = std::make_shared<GameWorld>(EventBroker, ResourceManager);
auto worldFrame = new WorldFrame(this, "GameWorldFrame", m_World);
{
vp1 = new Viewport(worldFrame, "Viewport1", m_World);
vp1->X = 0;
vp1->Width = 640;
vp1->Height = 720 / 2;
//new PlayerHUD(vp1, "PlayerHUD", m_World, 1);
vp2 = new Viewport(worldFrame, "Viewport2", m_World);
vp2->X = vp1->Right();
vp2->Width = 640;
vp2->Height = 720 / 2;
//new PlayerHUD(vp2, "PlayerHUD", m_World, 2);
auto vpc = new Viewport(worldFrame, "ViewportFreeCam", m_World);
vpc->Y = 720 / 2;
vpc->Height = 720 / 2;
m_FreeCamViewport = new Viewport(worldFrame, "ViewportFreeCam", m_World);
m_FreeCamViewport->Show();
}
m_World->Initialize();
}
private:
EventRelay<Frame, Events::KeyUp> m_EKeyUp;
std::shared_ptr<GameWorld> m_World;
Viewport* vp1;
Viewport* vp2;
Viewport* m_FreeCamViewport;
bool OnKeyUp(const Events::KeyUp &event)
{
if (event.KeyCode == GLFW_KEY_1)
{
if (m_FreeCamViewport->Hidden())
m_FreeCamViewport->Show();
else
m_FreeCamViewport->Hide();
}
return true;
}
};
}
+8
View File
@@ -16,6 +16,13 @@ namespace GUI
, m_PlayerID(playerID)
{
m_HealthOverlay = new HealthOverlay(this, "HealthOverlay", m_World, m_PlayerID);
m_Crosshair = new TextureFrame(this, "Crosshair");
m_Crosshair->Width = 45;
m_Crosshair->Height = 45;
m_Crosshair->X = this->Width / 2.f - m_Crosshair->Width / 2.f;
m_Crosshair->Y = this->Height / 2.f - m_Crosshair->Height / 2.f;
m_Crosshair->SetTexture("Textures/GUI/crosshair.png");
m_Crosshair->SetColor(glm::vec4(1.f, 1.f, 1.f, 0.75f));
}
protected:
@@ -23,6 +30,7 @@ namespace GUI
int m_PlayerID;
HealthOverlay* m_HealthOverlay;
TextureFrame* m_Crosshair;
};
}