rpgxef/code/cgame/lua_refent.c

476 lines
8.5 KiB
C

#include "cg_lua.h"
#ifdef CG_LUA
#include "cg_lua.h"
#ifdef CG_LUA
static int Refent_GC(lua_State * L)
{
return 0;
}
static int Refent_ToString(lua_State * L)
{
rent_t *rent;
refEntity_t *ent;
char buf[MAX_STRING_CHARS];
rent = Lua_GetRent(L, 1);
ent = rent->r;
Com_sprintf(buf, sizeof(buf), "centity: pointer=%p\n", ent);
lua_pushstring(L, buf);
return 1;
}
static int Refent_GetRenderfx(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
lua_pushinteger(L, rent->r->renderfx);
return 1;
}
static int Refent_SetRenderfx(lua_State *L) {
rent_t *rent;
int renderfx;
rent = Lua_GetRent(L, 1);
renderfx = (int)luaL_checknumber(L, 2);
rent->r->renderfx = renderfx;
return 1;
}
static int Refent_GetType(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
lua_pushinteger(L, rent->r->reType);
return 1;
}
static int Refent_SetType(lua_State *L) {
//rent_t *rent;
refEntityType_t type;
//rent = Lua_GetRent(L, 1);
type = (refEntityType_t)((int)luaL_checknumber(L, 2));
if(type < 0 || type >= RT_MAX_REF_ENTITY_TYPE)
return 1;
return 1;
}
static int Refent_GetHmodel(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
lua_pushinteger(L, rent->r->hModel);
return 1;
}
static int Refent_SetHmodel(lua_State *L) {
rent_t *rent;
int hmodel;
rent = Lua_GetRent(L, 1);
hmodel = (int)luaL_checknumber(L, 2);
rent->r->hModel = hmodel;
return 1;
}
static int Refent_GetLightingOrigin(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
Lua_PushVector(L, rent->r->lightingOrigin);
return 1;
}
static int Refent_SetLightingOrigin(lua_State *L) {
rent_t *rent;
vec_t *origin;
rent = Lua_GetRent(L, 1);
origin = Lua_GetVector(L, 2);
VectorCopy(origin, rent->r->lightingOrigin);
return 1;
}
static int Refent_GetShadowPlane(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
lua_pushnumber(L, rent->r->shadowPlane);
return 1;
}
static int Refent_SetShadowPlane(lua_State *L) {
rent_t *rent;
float sp;
rent = Lua_GetRent(L, 1);
sp = (float)luaL_checknumber(L, 2);
rent->r->shadowPlane = sp;
return 1;
}
static int Refent_GetAxis0(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
Lua_PushVector(L, rent->r->axis[0]);
return 1;
}
static int Refent_SetAxis0(lua_State *L) {
rent_t *rent;
vec_t *axis;
rent = Lua_GetRent(L, 1);
axis = Lua_GetVector(L, 2);
VectorCopy(axis, rent->r->axis[0]);
return 1;
}
static int Refent_GetAxis1(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
Lua_PushVector(L, rent->r->axis[1]);
return 1;
}
static int Refent_SetAxis1(lua_State *L) {
rent_t *rent;
vec_t *axis;
rent = Lua_GetRent(L, 1);
axis = Lua_GetVector(L, 2);
VectorCopy(axis, rent->r->axis[1]);
return 1;
}
static int Refent_GetAxis2(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
Lua_PushVector(L, rent->r->axis[2]);
return 1;
}
static int Refent_SetAxis2(lua_State *L) {
rent_t *rent;
vec_t *axis;
rent = Lua_GetRent(L, 1);
axis = Lua_GetVector(L, 2);
VectorCopy(axis, rent->r->axis[2]);
return 1;
}
static int Refent_UseNormAxis(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
lua_pushboolean(L, (int)(!(rent->r->nonNormalizedAxes)));
return 1;
}
static int Refent_SetUseNormAxis(lua_State *L) {
rent_t *rent;
qboolean b;
rent = Lua_GetRent(L, 1);
b = (qboolean)lua_toboolean(L, 2);
rent->r->nonNormalizedAxes = (qboolean)(!b);
return 1;
}
static int Refent_GetOrigin(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
Lua_PushVector(L, rent->r->origin);
return 1;
}
static int Refent_SetOrigin(lua_State *L) {
rent_t *rent;
vec_t *origin;
rent = Lua_GetRent(L, 1);
origin = Lua_GetVector(L, 1);
VectorCopy(origin, rent->r->origin);
return 1;
}
static int Refent_GetFrame(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
lua_pushinteger(L, rent->r->frame);
return 1;
}
static int Refent_SetFrame(lua_State *L) {
rent_t *rent;
int frame;
rent = Lua_GetRent(L, 1);
frame = (int)luaL_checknumber(L, 2);
rent->r->frame = frame;
return 1;
}
static int Refent_GetOldOrigin(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
Lua_PushVector(L, rent->r->oldorigin);
return 1;
}
static int Refent_SetOldOrigin(lua_State *L) {
rent_t *rent;
vec_t *vec;
rent = Lua_GetRent(L, 1);
vec = Lua_GetVector(L, 2);
VectorCopy(vec, rent->r->oldorigin);
return 1;
}
static int Refent_GetOldFrame(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
lua_pushinteger(L, rent->r->oldframe);
return 1;
}
static int Refent_SetOldFrame(lua_State *L) {
rent_t *rent;
int of;
rent = Lua_GetRent(L, 1);
of = (int)luaL_checknumber(L, 2);
rent->r->oldframe = of;
return 1;
}
static int Refent_GetBacklerp(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
lua_pushnumber(L, rent->r->backlerp);
return 1;
}
static int Refent_SetBacklerp(lua_State *L) {
rent_t *rent;
float bl;
rent = Lua_GetRent(L, 1);
bl = (float)luaL_checknumber(L, 2);
rent->r->backlerp = bl;
return 1;
}
static int Refent_GetSkinNum(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
lua_pushinteger(L, rent->r->skinNum);
return 1;
}
static int Refent_SetSkinNum(lua_State *L) {
rent_t *rent;
int sn;
rent = Lua_GetRent(L, 1);
sn = (int)luaL_checknumber(L, 2);
rent->r->skinNum = sn;
return 1;
}
static int Refent_GetCustomSkin(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
lua_pushinteger(L, rent->r->customSkin);
return 1;
}
static int Refent_SetCustomSkin(lua_State *L) {
rent_t *rent;
int cs;
rent = Lua_GetRent(L, 1);
cs = (int)luaL_checknumber(L, 2);
rent->r->customSkin = cs;
return 1;
}
static int Refent_GetCustomShader(lua_State *L) {
rent_t *rent;
rent = Lua_GetRent(L, 1);
lua_pushinteger(L, rent->r->customShader);
return 1;
}
static int Refent_SetCustomShader(lua_State *L) {
rent_t *rent;
int cs;
rent = Lua_GetRent(L, 1);
cs = (int)luaL_checknumber(L, 2);
rent->r->customShader = cs;
return 1;
}
static const luaL_Reg Refentity_ctor[] = {
{NULL, NULL}
};
static const luaL_Reg Refentity_meta[] = {
{"__gc", Refent_GC},
{"__tostring", Refent_ToString},
{"GetType", Refent_GetType},
{"SetType", Refent_SetType},
{"GetRenderfx", Refent_GetRenderfx},
{"SetRenderfx", Refent_SetRenderfx},
{"GetHmodel", Refent_GetHmodel},
{"SetHmodel", Refent_SetHmodel},
{"GetLightingOrigin", Refent_GetLightingOrigin},
{"SetLightingOrigin", Refent_SetLightingOrigin},
{"GetShadowPlane", Refent_GetShadowPlane},
{"SetShadowPlane", Refent_SetShadowPlane},
{"GetAxis0", Refent_GetAxis0},
{"SetAxis0", Refent_SetAxis0},
{"GetAxis1", Refent_GetAxis1},
{"SetAxis1", Refent_SetAxis1},
{"GetAxis2", Refent_GetAxis2},
{"SetAxis2", Refent_SetAxis2},
{"UseNormalizedAxis", Refent_UseNormAxis},
{"SetUseNormalizedAxis", Refent_SetUseNormAxis},
{"GetOrigin", Refent_GetOrigin},
{"GetBeamFrom", Refent_GetOrigin},
{"SetOrigin", Refent_SetOrigin},
{"SetBeamFrom", Refent_SetOrigin},
{"GetFrame", Refent_GetFrame},
{"GetModelBeamDiameter", Refent_GetFrame},
{"SetFrame", Refent_SetFrame},
{"SetModelBeamDiameter", Refent_SetFrame},
{"GetOldOrigin", Refent_GetOldOrigin},
{"GetModelBeamTo", Refent_GetOldOrigin},
{"SetOldOrigin", Refent_SetOldOrigin},
{"SetModelBeamTo", Refent_SetOldOrigin},
{"GetOldFrame", Refent_GetOldFrame},
{"SetOldFrame", Refent_SetOldFrame},
{"GetBacklerp", Refent_GetBacklerp},
{"SetBacklerp", Refent_SetBacklerp},
{"GetSkinNum", Refent_GetSkinNum},
{"SetSkinNum", Refent_SetSkinNum},
{"GetCustomSkin", Refent_GetCustomSkin},
{"SetCustomSkin", Refent_SetCustomSkin},
{"GetCustomShader", Refent_GetCustomShader},
{"SetCustomShader", Refent_SetCustomShader},
{NULL, NULL}
};
int Luaopen_Rent(lua_State * L)
{
luaL_newmetatable(L, "cgame.refentity");
lua_pushstring(L, "__index");
lua_pushvalue(L, -2);
lua_settable(L, -3);
luaL_register(L, NULL, Refentity_meta);
luaL_register(L, "refentity", Refentity_ctor);
return 1;
}
void Lua_PushRent(lua_State * L, refEntity_t * rent)
{
rent_t *refent;
if(!rent)
lua_pushnil(L);
else {
refent = (rent_t *)lua_newuserdata(L, sizeof(cent_t));
luaL_getmetatable(L, "cgame.refentity");
lua_setmetatable(L, -2);
refent->r = rent;
}
}
rent_t *Lua_GetRent(lua_State * L, int argNum)
{
void *ud;
ud = luaL_checkudata(L, argNum, "cgame.refentity");
luaL_argcheck(L, ud != NULL, argNum, "\'refentity\' expected");
return (rent_t *) ud;
}
#endif
#endif