Files
fs2open.github.com/code/scripting/api/objs/model.h
T
Goober5000 89f4fe54c3 convert model_h and submodel_h to use indexes
Indexes are a more robust way than pointers to manage model and submodel handles, and in the event that models are made dynamic in the future, indexes will be necessary anyway.
2024-04-11 15:15:44 -04:00

116 lines
1.7 KiB
C++

#pragma once
#include "scripting/ade_api.h"
#include "model/model.h"
namespace scripting {
namespace api {
//**********HANDLE: model
class model_h
{
protected:
int model_num;
public:
explicit model_h(int n_modelnum);
explicit model_h(polymodel *n_model);
model_h();
polymodel *Get() const;
int GetID() const;
bool isValid() const;
};
DECLARE_ADE_OBJ(l_Model, model_h);
class submodel_h
{
protected:
int model_num;
int submodel_num;
public:
explicit submodel_h(int n_modelnum, int n_submodelnum);
explicit submodel_h(polymodel *n_model, int n_submodelnum);
submodel_h();
polymodel *GetModel() const;
int GetModelID() const;
bsp_info *GetSubmodel() const;
int GetSubmodelIndex() const;
bool isValid() const;
};
DECLARE_ADE_OBJ(l_Submodel, submodel_h);
DECLARE_ADE_OBJ(l_ModelSubmodels, model_h);
DECLARE_ADE_OBJ(l_ModelTextures, model_h);
DECLARE_ADE_OBJ(l_ModelEyepoints, model_h);
// Thrusters:
DECLARE_ADE_OBJ(l_ModelThrusters, model_h);
// Thrusterbank:
struct thrusterbank_h
{
thruster_bank *bank;
thrusterbank_h();
thrusterbank_h(thruster_bank* ba);
thruster_bank *Get() const;
bool isValid() const;
};
DECLARE_ADE_OBJ(l_Thrusterbank, thrusterbank_h);
// Glowpoint:
struct glowpoint_h
{
glow_point *point;
glowpoint_h();
glowpoint_h(glow_point* np);
glow_point* Get() const;
bool isValid() const;
};
DECLARE_ADE_OBJ(l_Glowpoint, glowpoint_h);
// Docking bays:
DECLARE_ADE_OBJ(l_ModelDockingbays, model_h);
class dockingbay_h
{
private:
model_h modelh;
int dock_id;
public:
dockingbay_h(polymodel *pm, int dock_idx);
dockingbay_h();
bool isValid() const;
model_h* getModelH() const;
dock_bay* getDockingBay() const;
};
DECLARE_ADE_OBJ(l_Dockingbay, dockingbay_h);
}
}