diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2021-01-18 02:08:01 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2021-01-18 02:08:01 +0000 |
commit | 627aa88ad2559f41d5be62d36cdbf536a97e4246 (patch) | |
tree | 0e98c2e9c39db6ecc88ecf1914af608241d7c18e /game | |
parent | Helpers can be static (diff) | |
download | ilt-627aa88ad2559f41d5be62d36cdbf536a97e4246.tar.bz2 ilt-627aa88ad2559f41d5be62d36cdbf536a97e4246.tar.xz ilt-627aa88ad2559f41d5be62d36cdbf536a97e4246.zip |
Factor to support worlds, objects, windows etc
Diffstat (limited to 'game')
-rw-r--r-- | game/physical.cpp | 15 | ||||
-rw-r--r-- | game/physical.h | 31 | ||||
-rw-r--r-- | game/world.h | 11 | ||||
-rw-r--r-- | game/worldobject.h | 19 |
4 files changed, 76 insertions, 0 deletions
diff --git a/game/physical.cpp b/game/physical.cpp new file mode 100644 index 0000000..f4c17d4 --- /dev/null +++ b/game/physical.cpp @@ -0,0 +1,15 @@ +#include "physical.h" +#include <gfx/gl/shader.h> + +Physical::Physical(glm::vec3 where, const std::string & m, const std::string & t) : + location {where}, mesh {m}, texture {t} +{ +} + +void +Physical::render(const Shader & shader, const Camera & camera) const +{ + shader.Update(location, camera); + texture.Bind(); + mesh.Draw(); +} diff --git a/game/physical.h b/game/physical.h new file mode 100644 index 0000000..ff9d316 --- /dev/null +++ b/game/physical.h @@ -0,0 +1,31 @@ +#ifndef PHYSICAL_H +#define PHYSICAL_H + +#include "gfx/models/mesh.h" +#include "gfx/models/texture.h" +#include <gfx/gl/transform.h> +#include <glm/glm.hpp> +#include <string> + +class Camera; +class Shader; + +class Physical { +public: + Physical(glm::vec3 where, const std::string & m, const std::string & t); + + void render(const Shader & shader, const Camera & camera) const; + + [[nodiscard]] const auto & + getPosition() const + { + return location.GetPos(); + } + +protected: + Transform location; + Mesh mesh; + Texture texture; +}; + +#endif diff --git a/game/world.h b/game/world.h new file mode 100644 index 0000000..a0185e7 --- /dev/null +++ b/game/world.h @@ -0,0 +1,11 @@ +#ifndef WORLD_H +#define WORLD_H + +#include "worldobject.h" +#include <collection.hpp> + +class World : public Collection<WorldObject> { +public: +}; + +#endif diff --git a/game/worldobject.h b/game/worldobject.h new file mode 100644 index 0000000..6c75b8a --- /dev/null +++ b/game/worldobject.h @@ -0,0 +1,19 @@ +#ifndef WORLDOBJECT_H +#define WORLDOBJECT_H + +#include <chrono> +#include <special_members.hpp> + +class WorldObject { +public: + using TickDuration = std::chrono::milliseconds; + + WorldObject() = default; + virtual ~WorldObject() = default; + NO_COPY(WorldObject); + NO_MOVE(WorldObject); + + virtual void tick(TickDuration elapsed) = 0; +}; + +#endif |