2012-08-04 10:54:37 +00:00
|
|
|
#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) {
|
2012-09-09 11:30:56 +00:00
|
|
|
//rent_t *rent;
|
2012-08-04 10:54:37 +00:00
|
|
|
refEntityType_t type;
|
|
|
|
|
2012-09-09 11:30:56 +00:00
|
|
|
//rent = Lua_GetRent(L, 1);
|
2012-08-04 10:54:37 +00:00
|
|
|
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
|