mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-09 04:49:39 -10:00
58 lines
1.2 KiB
C++
58 lines
1.2 KiB
C++
//
|
|
//
|
|
|
|
#ifndef FS2_OPEN_VECMATH_H
|
|
#define FS2_OPEN_VECMATH_H
|
|
|
|
#include "globalincs/pstypes.h"
|
|
#include "scripting/ade.h"
|
|
#include "scripting/ade_api.h"
|
|
#include "math/vecmat.h"
|
|
|
|
namespace scripting {
|
|
namespace api {
|
|
|
|
DECLARE_ADE_OBJ(l_Vector, vec3d);
|
|
|
|
//WMC - Due to the exorbitant times required to store matrix data,
|
|
//I initially store the matrix in this struct.
|
|
enum class MatrixState {
|
|
Fine,
|
|
MatrixOutOfdate,
|
|
AnglesOutOfDate
|
|
};
|
|
struct matrix_h {
|
|
private:
|
|
MatrixState status;
|
|
|
|
matrix mtx;
|
|
angles ang;
|
|
|
|
//WMC - Call these to make sure what you want
|
|
//is up to date
|
|
void ValidateAngles();
|
|
|
|
void ValidateMatrix();
|
|
public:
|
|
matrix_h();
|
|
explicit matrix_h(const matrix* in);
|
|
explicit matrix_h(const angles* in);
|
|
explicit matrix_h(const vec3d *fvec, const vec3d *uvec = nullptr, const vec3d *rvec = nullptr);
|
|
|
|
angles* GetAngles();
|
|
|
|
matrix* GetMatrix();
|
|
|
|
void SetStatus(MatrixState n_status);
|
|
|
|
static void serialize(lua_State* /*L*/, const scripting::ade_table_entry& /*tableEntry*/, const luacpp::LuaValue& value, ubyte* data, int& packet_size);
|
|
static void deserialize(lua_State* /*L*/, const scripting::ade_table_entry& /*tableEntry*/, char* data_ptr, ubyte* data, int& offset);
|
|
};
|
|
|
|
DECLARE_ADE_OBJ(l_Matrix, matrix_h);
|
|
|
|
}
|
|
}
|
|
|
|
#endif //FS2_OPEN_VECMATH_H
|