//
// Asura_PFX_Enums.h
//
// Created by KOR - 09/06/2005
//
// Copyright (C) 2005 Rebellion, All Rights Reserved.
//

#ifdef ASURA_USE_PRAGMA_ONCE
	#pragma once
#endif

#ifndef __ASURA_PFX_ENUMS_H__
#define __ASURA_PFX_ENUMS_H__

/// DEFINES ///////////////////////////////////////////////////////////////////////////////////////

// Override max number of effects in engine configuration.
#ifndef ASURA_PFX_MAX_ACTIVE_EFFECTS
    #define ASURA_PFX_MAX_ACTIVE_EFFECTS (1024)
#endif

#ifndef ASURA_MAX_NO_OF_PFX_HEATHAZE_SOURCES
	#define ASURA_MAX_NO_OF_PFX_HEATHAZE_SOURCES 16
#endif

#define ASURA_PFX_INVALID_EFFECT_ID (0)

enum ASURA_PFX_RENDER_TYPE
{
	ASURA_PFX_RENDER_TYPE_INVALID = -1,
	ASURA_PFX_RENDER_NORMAL,
	ASURA_PFX_RENDER_HUD,
	ASURA_PFX_RENDER_SKYBOX,
	ASURA_PFX_RENDER_PROJECT,
	ASURA_PFX_RENDER_WATER_DISTORTER,
	NUM_ASURA_PFX_RENDER_TYPES
};

enum 
{
	ASURA_PFX_EFFECT_CAMERA_FLAGS				= 0x000f,			// Bits reserved for camera render flags.
	ASURA_PFX_EFFECT_HUD_EFFECT					= 0x0010,			// HUD effects are rendered after the z-buffer clear.
	ASURA_PFX_EFFECT_IGNORE_MOD_LINKS			= 0x0020,			// Ignore the modlinking for this effect.
	// (AW - 22.10.2004) - The following flags are actually used by Asura_PFX_Entity_Effect 
	// so perhaps these should be in a seperate bitfield.
	ASURA_PFX_EFFECT_DONT_CREATE_LIGHT			= 0x0040,			// Don't create the photon.
	ASURA_PFX_EFFECT_MOVE_PARTICLES_WITH_EFFECT	= 0x0080,			// When the effect is moved, offset the particles, too.
	
	ASURA_PFX_EFFECT_PRESERVE_WHILE_INACTIVE    = 0x0100,			// Don't automatically kill the effect when inactive
	ASURA_PFX_EFFECT_START_INACTIVE				= 0x0200,
	ASURA_PFX_EFFECT_SKYBOX						= 0x0400,			// Effect is skybox-relative
	ASURA_PFX_EFFECT_ALWAYS_ON_TOP				= 0x0800,
	ASURA_PFX_EFFECT_ENTITY_EFFECT				= 0x1000,			// Effect is an Asura_PFX_Entity_Effect. Used for sanity-checking.
	ASURA_PFX_EFFECT_PROJECT_EFFECT				= 0x2000,
	ASURA_PFX_EFFECT_WATER_DISTORTER			= 0x4000,			// Effect is used to create ripples in the SM3.0 water
	ASURA_PFX_EFFECT_FORCE_RENDER_ON_MAIN_THREAD= 0x8000,			// Effect is rendered on the main thread to avoid lag.
	// KOR - 03/04/2006 - if we run out of bits in the short, the PFX flags could easily be raised to a u_int;
	// a couple of bytes per effect wouldn't have a huge impact.
};

enum ASURA_PFX_EFFECT_STATE
{
	ASURA_PFX_EFFECT_RUNNING,
	ASURA_PFX_EFFECT_STOPPING,
	ASURA_PFX_EFFECT_STANDBY,
	ASURA_PFX_EFFECT_DESTROYED,
};


#endif//__ASURA_PFX_ENUMS_H__
