namespace BP
{
	const array<int> ENEMY_TYPES =
	{
		kActor_AI_Raptoid,
		kActor_AI_Endtrail,
		kActor_AI_EndtrailStationary,
		kActor_AI_Raptor,
		kActor_AI_Leaper,
		kActor_AI_Compsognathus,
		kActor_AI_AraissiSoldier,
		
		kActor_AI_Deadman,
		kActor_AI_DeadmanHalf,
		kActor_AI_LordoftheDead,
		kActor_AI_SisterofDespair,

		kActor_AI_WarClub,
		kActor_AI_Gunner,
		kActor_AI_GunnerStationary,
		kActor_AI_Juggernaut,
		kActor_AI_CaveWorm,
		kActor_AI_FleshWorm,
		kActor_AI_SwampWasp,

		kActor_AI_Fireborn,
		kActor_AI_FirebornStationary,
		kActor_AI_Nala,
		kActor_AI_Sentinel,
		kActor_AI_Guardian,
		kActor_AI_GuardianStationary,
		kActor_AI_SpiderHatchling,
		kActor_AI_CaveSpider,
		
		kActor_AI_Mite,
		kActor_AI_Worker,
		kActor_AI_Drone,
		kActor_AI_DroneStationary,
		kActor_AI_HiveSoldier,
		kActor_AI_HiveSoldierStationary,
		kActor_AI_Grub,
		
		kActor_AI_PrimagenTrooper,
		kActor_AI_PrimagenTrooperStationary,
		kActor_AI_BioBot,
		kActor_AI_PrimagenGuard,
		kActor_AI_PrimagenGuardStationary,
		kActor_AI_PrimagenDrone,
		
		kActor_AI_FleshSentinel,
		kActor_AI_DeathGuard,
		kActor_AI_DeathGuardStationary,
		kActor_AI_LordoftheFlesh,
		kActor_AI_LordoftheFleshStationary
	};

	namespace Spawn
	{
		//------------------------------------------------------------------------------------------------------------------------
		kActor@ Enemy(const int32 actorID, const kVec3& in origin, const float health = 100.0f, const float yaw = 0.0f)
		{
			kActor @actor = ActorFactory.Spawn(actorID, origin, yaw, 0, 0);
			actor.Health() = health;
			//can also set helath with Definition()
			actor.TriggerMessageID() = TRIGGER_MSG_SPAWN;
			actor.Trigger(null);
			return @actor;
		}
		//------------------------------------------------------------------------------------------------------------------------
		kParticle@ Particle(const int particleID, kActor@ actor, const kVec3&in origin = Math::vecZero, const kQuat&in rotation = QUAT_IDENTITY)
		{
			return ParticleFactory.Spawn(particleID, @actor, origin, rotation, Math::vecZero);
		}
		//------------------------------------------------------------------------------------------------------------------------
		kParticle@ Particle(const kStr&in path, kActor@ owner, const kVec3&in origin = Math::vecZero, const kQuat&in rotation = QUAT_IDENTITY)
		{
			kParticle @particle = ParticleFactory.Spawn(path, @owner, rotation, Math::vecZero);
			if (particle !is null)
			{
				particle.Origin() = origin;
			}
			return @particle;
		}
		//------------------------------------------------------------------------------------------------------------------------
		kActor@ Actor(const int32 actorID, const kVec3& in origin, const float yaw = 0.0f)
		{
			return ActorFactory.Spawn(actorID, origin, yaw, 0.0f, 0.0f);
		}
		//------------------------------------------------------------------------------------------------------------------------
	}
}
