g_func.c
来自「著名物理引擎Hawk的源代码」· C语言 代码 · 共 149 行
C
149 行
/* G_func.c, HAWK game engine
*
* Copyright 1997-1998 by Phil Frisbie, Jr.
* for Hawk Software
*
*/
#include "G_main.h"
#include "G_math.h"
int getModelNumber(entity_t *entity)
{
char *mstring, *temp;
mstring = ValueForKey(entity, "model");
if(!mstring)
return 0;
temp = mstring;
temp++;
return atoi(temp);
}
void SP_func_plat (entity_t *entity)
{
}
void func_rotatingUpdate(OBJECT *obj)
{
if(obj->movedir[X] > 0.0f)
obj->angles[X] += (float)Frames/30.0f * obj->turn;
else if(obj->movedir[Y] > 0.0f)
obj->angles[Y] += (float)Frames/30.0f * obj->turn;
else if(obj->movedir[Z] > 0.0f)
obj->angles[Z] += (float)Frames/30.0f * obj->turn;
}
void SP_func_rotating (entity_t *entity)
{
OBJECT *item;
int flags;
item = gi.ObjectAdd();
flags = IntForKey(entity, "spawnflags");
GetVectorForKey (entity, "origin", item->origin);
item->type = O_BSPMODEL;
item->classname = "func_rotating";
item->next = NULL;
item->animation = NO_ANIMATION;
item->model = getModelNumber(entity);
item->update = func_rotatingUpdate;
item->turn = FloatForKey(entity, "speed");
if(item->turn < 0.01f)
item->turn = 100.0f;
if(flags&2)
item->turn = -item->turn;
if(flags&4)
item->movedir[X] = 1.0f;
else if(flags&8)
item->movedir[Y] = 1.0f;
else
item->movedir[Z] = 1.0f;
}
void SP_func_button (entity_t *entity)
{
OBJECT *item;
int flags;
item = gi.ObjectAdd();
flags = IntForKey(entity, "spawnflags");
GetVectorForKey (entity, "origin", item->origin);
item->type = O_BSPMODEL;
item->classname = "func_button";
item->next = NULL;
item->animation = NO_ANIMATION;
item->model = getModelNumber(entity);
item->update = NULL;
}
void SP_func_door (entity_t *entity)
{
}
void SP_func_door_secret (entity_t *entity)
{
}
void SP_func_door_rotating (entity_t *entity)
{
}
void SP_func_water (entity_t *entity)
{
}
void SP_func_train (entity_t *entity)
{
OBJECT *item;
int flags;
item = gi.ObjectAdd();
flags = IntForKey(entity, "spawnflags");
GetVectorForKey (entity, "origin", item->origin);
item->type = O_BSPMODEL;
item->classname = "func_train";
item->next = NULL;
item->animation = NO_ANIMATION;
item->model = getModelNumber(entity);
item->update = NULL;
}
void SP_func_conveyor (entity_t *entity)
{
}
void SP_func_wall (entity_t *entity)
{
}
void SP_func_object (entity_t *entity)
{
}
void SP_func_explosive (entity_t *entity)
{
}
void SP_func_timer (entity_t *entity)
{
}
void SP_func_areaportal (entity_t *entity)
{
}
void SP_func_clock (entity_t *entity)
{
}
void SP_func_killbox (entity_t *entity)
{
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?