a8abb4afc9
The sprite inherits from Poseable. It is intended to allow for pure 2D rendering or integration of sprites/particles into 3D scenes. Eventually an ImageScene should be created to test out the image loading, sprite movement and rotation, and 2D camera functionality for the builtin engine.
34 lines
833 B
C++
34 lines
833 B
C++
#pragma once
|
|
|
|
#include <glm/glm.hpp>
|
|
|
|
namespace charcoal
|
|
{
|
|
using namespace glm;
|
|
|
|
class Poseable
|
|
{
|
|
public:
|
|
// Assumes that forward, up, and right are orthogonal and normalized
|
|
Poseable(
|
|
const vec3& position = vec3(0.0f, 0.0f, 0.0f),
|
|
const vec3& forward = vec3(0.0f, 0.0f, 1.0f),
|
|
const vec3& up = vec3(0.0f, 1.0f, 0.0f),
|
|
const vec3& right = vec3(1.0f, 0.0f, 0.0f)
|
|
);
|
|
|
|
void reset_orientation();
|
|
|
|
void update_position(const vec3& position);
|
|
// Assumes that forward, up, and right are orthogonal and normalized
|
|
void update_orientation(const vec3& forward, const vec3& up, const vec3& right);
|
|
|
|
void translate(const vec3& translation);
|
|
void rotate(const vec3& axis, float angle);
|
|
|
|
const mat4& get_orientation_matrix() const { return m_orientation_matrix; }
|
|
|
|
protected:
|
|
mat4 m_orientation_matrix;
|
|
};
|
|
} |