From 7644b740e87053838f3c7a80e88ad192fcf1a5e2 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Sat, 21 Oct 2017 13:50:04 -0400 Subject: [PATCH] lightsgit status! fireflies --- assets/style/classic/bg/insideWoodHouse.png | Bin 23738 -> 8078 bytes include/components/all.hpp | 1 + include/components/light.hpp | 26 +++++++++ include/systems/light.hpp | 34 +++++++++++ src/engine.cpp | 3 + src/render.cpp | 2 + src/systems/light.cpp | 60 ++++++++++++++++++++ src/world.cpp | 2 + xcf/insideWoodHouse.xcf | Bin 42953 -> 12756 bytes xml/entities.xml | 1 + 10 files changed, 129 insertions(+) create mode 100644 include/components/light.hpp create mode 100644 include/systems/light.hpp create mode 100644 src/systems/light.cpp diff --git a/assets/style/classic/bg/insideWoodHouse.png b/assets/style/classic/bg/insideWoodHouse.png index 47d391844004ddceb3346d1834f2dea33b2ef987..f926cb2ee3c782ff7a3c7db3c6c5c1b63f5d2c0c 100644 GIT binary patch literal 8078 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 literal 23738 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 VYH9m`Ad!&+wD0L@l&Dz;{vRn?AZ7pn diff --git a/include/components/all.hpp b/include/components/all.hpp index 7c4e0d1..3c243a7 100644 --- a/include/components/all.hpp +++ b/include/components/all.hpp @@ -13,6 +13,7 @@ #include "hit.hpp" #include "hop.hpp" #include "itemdrop.hpp" +#include "light.hpp" #include "name.hpp" #include "physics.hpp" #include "player.hpp" diff --git a/include/components/light.hpp b/include/components/light.hpp new file mode 100644 index 0000000..95fe6ec --- /dev/null +++ b/include/components/light.hpp @@ -0,0 +1,26 @@ +#ifndef COMPONENTS_LIGHT_HPP_ +#define COMPONENTS_LIGHT_HPP_ + +#include +#include +#include +#include + +struct Illuminate : public Component { + int index; + + Illuminate(vec2 pos, float radius, Color color) { + index = LightSystem::addLight(pos, radius, color); + } + Illuminate(XMLElement* imp, XMLElement* def) { + fromXML(imp, def); + } + + void fromXML(XMLElement* imp, XMLElement* def) final { + (void)imp; + float radius = def->FloatAttribute("radius"); + index = LightSystem::addLight(vec2(), radius, Color(1, 1, 0)); + } +}; + +#endif // COMPONENTS_LIGHT_HPP_ diff --git a/include/systems/light.hpp b/include/systems/light.hpp new file mode 100644 index 0000000..71c541a --- /dev/null +++ b/include/systems/light.hpp @@ -0,0 +1,34 @@ +#ifndef SYSTEM_LIGHT_HPP_ +#define SYSTEM_LIGHT_HPP_ + +#include +#include +#include + +#include +#include + +struct Light { + vec2 pos; + float radius; + Color color; + + Light(vec2 p = vec2(), float r = 0, Color c = Color()) + : pos(p), radius(r), color(c) {} +}; + +class LightSystem : public entityx::System { +private: + static std::vector lights; + +public: + void update(entityx::EntityManager& en, entityx::EventManager& ev, entityx::TimeDelta dt) override; + + static void render(void); + + static int addLight(vec2 pos, float radius, Color color = Color(1, 1, 1)); + static void updateLight(int index, vec2 pos, float radius = -1); + static void removeLight(int index); +}; + +#endif // SYSTEM_LIGHT_HPP_ diff --git a/src/engine.cpp b/src/engine.cpp index bf0bca9..232d11c 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -13,6 +13,7 @@ #include #include #include +#include Engine::Engine(void) : shouldRun(true), systems(game::entities, game::events) @@ -40,6 +41,7 @@ void Engine::init(void) { systems.add(); systems.add(); + systems.add(); systems.add(); systems.configure(); @@ -69,6 +71,7 @@ void Engine::update(entityx::TimeDelta dt) systems.update(dt); systems.update(dt); systems.update(dt); + systems.update(dt); //systems.update(dt); } diff --git a/src/render.cpp b/src/render.cpp index 85384ce..f9f84c9 100644 --- a/src/render.cpp +++ b/src/render.cpp @@ -7,6 +7,7 @@ #include #include #include +#include extern vec2 offset; @@ -198,5 +199,6 @@ void render(const int& fps) FontSystem::setFontZ(); } + LightSystem::render(); WindowSystem::render(); } diff --git a/src/systems/light.cpp b/src/systems/light.cpp new file mode 100644 index 0000000..361099d --- /dev/null +++ b/src/systems/light.cpp @@ -0,0 +1,60 @@ +#include + +#include +#include +#include + +std::vector LightSystem::lights; + +void LightSystem::update(entityx::EntityManager& en, entityx::EventManager& ev, entityx::TimeDelta dt) { + (void)ev; + (void)dt; + + en.each([&](entityx::Entity e, Illuminate& ill, Position& pos, + Solid& dim) { + (void)e; + vec2 p (pos.x, pos.y); + vec2 d (dim.width, dim.height); + LightSystem::updateLight(ill.index, p + d / 2); + }); +} + +void LightSystem::render(void) { + auto coords = new GLfloat[lights.size() * 4]; + auto colors = new GLfloat[lights.size() * 4]; + + unsigned int offset = 0; + for (const auto& l : lights) { + coords[offset] = l.pos.x, coords[offset + 1] = l.pos.y, + coords[offset + 2] = 0, coords[offset + 3] = l.radius; + colors[offset] = l.color.red, colors[offset + 1] = l.color.green, + colors[offset + 2] = l.color.blue, colors[offset + 3] = 1.0f; + offset += 4; + } + + Render::worldShader.use(); + Render::worldShader.enable(); + + glUniform4fv(Render::worldShader.uniform[WU_light], lights.size(), coords); + glUniform4fv(Render::worldShader.uniform[WU_light_color], lights.size(), colors); + glUniform1i(Render::worldShader.uniform[WU_light_size], lights.size()); + + Render::worldShader.disable(); + Render::worldShader.unuse(); +} + +int LightSystem::addLight(vec2 pos, float radius, Color color) { + lights.emplace_back(pos, radius, color); + return lights.size() - 1; +} + +void LightSystem::updateLight(int index, vec2 pos, float radius) { + lights[index].pos = pos; + if (radius >= 0) + lights[index].radius = radius; +} + +void LightSystem::removeLight(int index) { + lights.erase(lights.begin() + index); +} + diff --git a/src/world.cpp b/src/world.cpp index b163979..ea2566a 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -371,6 +371,8 @@ void WorldSystem::loader(void) entity.assign(wxml, abcd); else if (tname == "Drop") entity.assign(wxml, abcd); + else if (tname == "Illuminate") + entity.assign(wxml, abcd); abcd = abcd->NextSiblingElement(); } diff --git a/xcf/insideWoodHouse.xcf b/xcf/insideWoodHouse.xcf index f08dff8043a05da6ffbfe258282c0f58428b2381..c0a2fcd6d2fc3c432536bf9c39f24f57e5492b7f 100644 GIT binary patch literal 12756 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 literal 42953 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 z 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 + countdown = 0 -- 2.39.5