mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-09 04:49:39 -10:00
* Add automatic lua obj serialization function dispatch * Implement fundamental and object de/serialization * Proper default case for package deserialization * Add No Multi func * Add Serialization part * Fix max encoding size for userdata * Implement exception handling * Start Implementing lua RPC * Prepare waitAsync for RPC * Add packet order enforcing and forwarding * Add RPC registry * Make RPCs callable * Add waitRPC * Add serializers * Fix GCC error * Explicitly specify lua_net_exception * Fix Warnings * Replace Seriliaze fundamental with cross-platform data types * Appease Clang * Prevent serialization CTD on invalid objects * Actually use the temporaries assigned * Fix OSWPT shadow * Fix table deserialize order * Incorporate Feedback * Fix Warnigs * ix WArnings 2 * Add sanity checks for OSWPT wing serialization * Multi Bump * Forgot we have american-style dates there
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);
|
|
|
|
void serialize(lua_State* /*L*/, const scripting::ade_table_entry& /*tableEntry*/, const luacpp::LuaValue& value, ubyte* data, int& packet_size);
|
|
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
|