#pragma once

#include <Redacted3D/types/entity/entity.h>

///A "Movable Object". Things that will move often are derived from this.
class Moby : public Entity {
public:
    Moby(): Entity(), velAngle({0,0,0})
    {

    }
    ///The angle of velocity.
    Vector3 velAngle = {0,0,0};
    ///Horizontal speed.
    float hVelocity;
    ///Vertical speed.
    float vVelocity;
    Vector3 upVector = {0.0f,1.0f,0.0f};
    virtual void hMove(Vector3 a, float vel);
    void vMove(float vel);
    Vector3 simulateHMove(Vector3 a, float speed);
    Vector3 simulateVMove(Vector3 position, float speed);
    /// forward angle
    Vector3 fAngle();
    /// back angle
    Vector3 bAngle();
    /// left angle
    Vector3 lAngle();
    /// right angle
    Vector3 rAngle();
};

