#include "Enemies.h"#include "WorldManager.h"#define EnemySpeed 0.001void TestAI(void * Enemy, AIEvent Event, float interval){	#pragma unused (Event)	VEnemy * e;	VWorld * w;	Vector Angle;	e = (VEnemy *) Enemy;	w = (VWorld *) e->Data;	SubtractVector(&w->Camera.Position, &e->Object.Position, &Angle);	NormalizeVector(&Angle);	Angle.x *= PYRAMIDROTSPEED / interval;	Angle.y *= PYRAMIDROTSPEED / interval;	Angle.z *= PYRAMIDROTSPEED / interval;	AddVector(&e->Object.Front, &Angle, &e->Object.Front);	NormalizeVector(&e->Object.Front);	CrossProduct(&e->Object.Front, &e->Object.Right, &e->Object.Up);	CrossProduct(&e->Object.Up, &e->Object.Front, &e->Object.Right);	NormalizeVector(&e->Object.Right);	NormalizeVector(&e->Object.Up);		if(fabs(	((e->Object.Position.x - w->Camera.Position.x) * (e->Object.Position.x - w->Camera.Position.x) + 	(e->Object.Position.y - w->Camera.Position.y) * (e->Object.Position.y - w->Camera.Position.y) + 	(e->Object.Position.z - w->Camera.Position.z) * (e->Object.Position.z - w->Camera.Position.z))	 > PYRAMIDRANGE))	{		Angle = e->Object.Front;		NormalizeVector(&Angle);		Angle.x *= PYRAMIDMOVESPEED / interval;		Angle.y *= PYRAMIDMOVESPEED / interval;		Angle.z *= PYRAMIDMOVESPEED / interval;		AddVector(&e->Object.Position, &Angle, &e->Object.Position);	} else	{		e->Idle += interval;		if(e->Idle > PYRAMIDSHOOTSPEED)		{			VWeapon * theWeapon;						e->Idle = 0;					    			theWeapon = (VWeapon *) NewPtr(sizeof(VWeapon));			if (theWeapon != NULL) {				InitWeapon(theWeapon, WEAPONTYPEBULLET);				theWeapon->next = w->Weapons;				w->Weapons = theWeapon;								StartWeapon(theWeapon, &e->Object.Position, NULL, &e->Object.Front, &e->Object.Up);				theWeapon->Speed = BULLETSPEED / 2;			}		}	}}void InitEnemy(VEnemy * e, EnemyAIModule aiMod, void * Data){	e->Callback = aiMod;	e->Data = Data;	e->Idle = 0;	e->next = NULL;	InitObject(&e->Object);	e->Object.Front.z = -1;	BuildEnemyModel(&e->Object.Model);	CalculateRadius(&e->Object);	e->Object.Position.z = -10;	e->Object.Position.x = -2;	e->Object.Position.y = -2;}void CleanUpEnemy(VEnemy * e){	CleanUpObject(&e->Object);}void DrawEnemy(VEnemy * e){	DrawObject(&e->Object);}void EnemyEvent(VEnemy * e, float interval){	e->Callback(e, blah, interval);}