From 627aa88ad2559f41d5be62d36cdbf536a97e4246 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Mon, 18 Jan 2021 02:08:01 +0000 Subject: Factor to support worlds, objects, windows etc --- game/physical.cpp | 15 +++++++++++++++ game/physical.h | 31 +++++++++++++++++++++++++++++++ game/world.h | 11 +++++++++++ game/worldobject.h | 19 +++++++++++++++++++ 4 files changed, 76 insertions(+) create mode 100644 game/physical.cpp create mode 100644 game/physical.h create mode 100644 game/world.h create mode 100644 game/worldobject.h (limited to 'game') 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 + +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 +#include +#include + +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 + +class World : public Collection { +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 +#include + +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 -- cgit v1.2.3