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 + -
显示快捷键?