mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-12 02:01:29 -10:00
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.
116 lines
1.7 KiB
C++
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);
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|