This repository has been archived on 2025-03-10. You can view files and clone it, but cannot push or open issues or pull requests.
Grayson Riffe (Laptop) b4c704f5ec Basic physics with boxes
2021-10-25 00:40:44 -05:00

60 lines
1.2 KiB
C++

#pragma once
#include "Assets.h"
#include "NFObject.h"
#include "Utility.h"
#ifdef NFENGINE
#include "glm/glm.hpp"
#endif
namespace nf {
class Shader;
class Model;
class Entity : public NFObject {
public:
enum class Type {
STATIC,
DYNAMIC,
DETAIL
};
Entity();
void create(Asset* modelAsset, Type type = Type::STATIC);
bool isConstructed();
void setType(Type type);
Type getType();
void setPosition(double x, double y, double z);
void setPosition(const Vec3& position);
void setPositionPhysics(const Vec3& position);
void setRotation(double x, double y, double z);
void setRotation(const Vec3& rotation);
void setRotationPhysics(const Vec4& rotation);
void setScale(double x);
void setScale(double x, double y, double z);
void setScale(const Vec3& scale);
bool needsPhysicsUpdate();
const Vec3& getPosition();
const Vec4& getRotation();
void render(Shader* shader, bool onlyDepth);
Model* getModel() const;
#ifdef NFENGINE
const glm::mat4 getModelMatrix();
#endif
void destroy() override;
~Entity();
private:
bool m_constructed;
Type m_type;
Model* m_model;
Vec3 m_position;
Vec4 m_rotation;
Vec3 m_scale;
bool m_update;
};
}