Version = 1.8.2.25321;
CParticleEffect	$LOCAL$/Resource
{
	EditorInfosPosition = int2(73, 52);
	OnSpawn = "$LOCAL$/Spawner";
	CustomAttributes = "$LOCAL$/_GlobalAttributes";
	SpatialLayers = "$LOCAL$/CParticleSpatialLayerList_00FF9C5B";
	Autostart = true;
}
CActionFactoryParticleSpawnerBase	$LOCAL$/Fish_Flocking
{
	EditorInfosPosition = int2(-288, -61);
	Descriptor = "$LOCAL$/CParticleDescriptor_AE135B2A";
	FluxFactorExpression = "FishCount";
}
CParticleDescriptor	$LOCAL$/CParticleDescriptor_AE135B2A
{
	EditorInfosPosition = int2(-392, -44);
	CustomFields = 
	{
		"$LOCAL$/CParticleFieldDeclaration_6C7620FC",
	};
	Samplers = 
	{
		"$LOCAL$/CParticleSamplerProceduralTurbulence_9FDF449B",
	};
	SpawnEvaluator = "$LOCAL$/CCompilerSyntaxNodeExpression_5566F5E7";
	States = 
	{
		"$LOCAL$/CParticleState_3AF8190E",
	};
}
CActionFactoryWithChilds	$LOCAL$/Spawner
{
	EditorInfosPosition = int2(-162, -81);
	ChildList = 
	{
		"$LOCAL$/Fish_Flocking",
	};
}
CParticleEvolver_Localspace	$LOCAL$/LocalSpace_1
{
	ChildList = 
	{
		"$LOCAL$/Evolver_2",
	};
}
CCompilerSyntaxNodeExpression	$LOCAL$/CCompilerSyntaxNodeExpression_5566F5E7
{
	EditorInfosPosition = int2(-508, 22);
	Expression = "function void	Eval()
{
	//	The flocking evolver allows to simulate complex autonomous flocking behaviors.
	//	Useful if you want to create a flock of fish, birds, ants, flies, etc.. out of particles.
	//	You can associate it with an \"containment evolver\" for force the travel zone.
	
	Life = infinity;
	
	Position = vrand();
	Velocity = vrand() * 0.5;
}
";
}
CParticleState	$LOCAL$/CParticleState_3AF8190E
{
	EditorInfosPosition = int2(-508, 65);
	StateName = "State_0";
	Evolvers = 
	{
		"$LOCAL$/LocalSpace_1",
		"$LOCAL$/Evolver_3",
		"$LOCAL$/Evolver_1",
		"$LOCAL$/CParticleEvolver_Physics_36D6D4BD",
		"$LOCAL$/Fish",
	};
}
CParticleEvolver_Physics	$LOCAL$/CParticleEvolver_Physics_36D6D4BD
{
	EditorInfosPosition = int2(-590, 86);
	Drag = 1.0000000e+000;
	VelocityFieldSampler = "Fish_Turb";
}
CParticleAttributeList	$LOCAL$/_GlobalAttributes
{
	EditorInfosPosition = int2(-599, -20);
	AttributeList = 
	{
		"$LOCAL$/CParticleAttributeDeclaration_9DFDA1FA",
		"$LOCAL$/CParticleAttributeDeclaration_D6BAB8EC",
		"$LOCAL$/CParticleAttributeDeclaration_4FA6141F",
	};
}
CParticleAttributeDeclaration	$LOCAL$/CParticleAttributeDeclaration_4FA6141F
{
	AttributeName = "RGB";
	AttributeType = float3;
	DefaultValueF4 = float4(7.5000000e-001, 7.5000000e-001, 1.0000000e+000, 0.0000000e+000);
	HasMin = true;
	HasMax = true;
	MaxValueF4 = float4(1.0000000e+000, 1.0000000e+000, 1.0000000e+000, 1.0000000e+000);
	MaxValueI4 = int4(10, 10, 10, 10);
}
CParticleEvolver_Spawner	$LOCAL$/Fish
{
	SpawnInterval = 2.0000000e-002;
	FirstSpawnDelay = 0.0000000e+000;
	LocalSpaceSpawn = true;
	Descriptor = "$LOCAL$/CParticleDescriptor_92833C2A";
}
CParticleState	$LOCAL$/CParticleState_C2A4AA0B
{
	StateName = "State_0";
	Evolvers = 
	{
		"$LOCAL$/Script_1",
	};
}
CParticleDescriptor	$LOCAL$/CParticleDescriptor_92833C2A
{
	Renderer = "$LOCAL$/CParticleRenderer_Ribbon_B9C430FE";
	CustomFields = 
	{
		"$LOCAL$/CParticleFieldDeclaration_FD2818BD",
		"$LOCAL$/CParticleFieldDeclaration_BEB7E946",
	};
	SpawnEvaluator = "$LOCAL$/CCompilerSyntaxNodeExpression_05311935";
	States = 
	{
		"$LOCAL$/CParticleState_C2A4AA0B",
	};
}
CCompilerSyntaxNodeExpression	$LOCAL$/CCompilerSyntaxNodeExpression_05311935
{
	Expression = "function void	Eval()
{
	Life = 0.125;
	Size = 0.025;
	
	TextureID  = FishID;
}
";
}
CParticleRenderer_Ribbon	$LOCAL$/CParticleRenderer_Ribbon_B9C430FE
{
	BillboardingMaterial = AlphaBlend_Additive_Soft;
	Diffuse = "Textures/Fx/Fish_01.png";
	AtlasDefinition = "Textures/Fx/AtlasX2.pkat";
	TextureIDField = "TextureID";
	TextureUField = "TextureU";
}
CParticleSamplerProceduralTurbulence	$LOCAL$/CParticleSamplerProceduralTurbulence_9FDF449B
{
	SamplerName = "Fish_Turb";
	Scale = 1.0000000e+000;
	TimeScale = 1.0000000e+000;
}
CParticleAttributeDeclaration	$LOCAL$/CParticleAttributeDeclaration_D6BAB8EC
{
	AttributeName = "FishID";
	AttributeType = int;
	AttributeDescription = "Selected a fish with an ID: 0, 1, 2 or 3";
	HasMin = true;
	HasMax = true;
	MaxValueF4 = float4(3.0000000e+000, 1.0000000e+000, 1.0000000e+000, 1.0000000e+000);
	MaxValueI4 = int4(3, 10, 10, 10);
}
CParticleEvolver_Containment	$LOCAL$/Evolver_2
{
	WorldRadius = 2.0000000e+000;
	BorderThickness = 1.0000000e+000;
}
CParticleFieldDeclaration	$LOCAL$/CParticleFieldDeclaration_FD2818BD
{
	FieldName = "TextureID";
}
CParticleAttributeDeclaration	$LOCAL$/CParticleAttributeDeclaration_9DFDA1FA
{
	AttributeName = "FishCount";
	DefaultValueF4 = float4(2.0000000e+002, 0.0000000e+000, 0.0000000e+000, 0.0000000e+000);
	HasMin = true;
	MaxValueF4 = float4(1.0000000e+003, 1.0000000e+000, 1.0000000e+000, 1.0000000e+000);
	MaxValueI4 = int4(10, 10, 10, 10);
}
CParticleEvolver_Flocking	$LOCAL$/Evolver_1
{
	SpatialLayer = "$LOCAL$/CParticleSpatialDescriptor_7FB4F4BA";
	MaxSpeed = 1.5000000e+000;
	SeparationFactor = 2.5000000e-001;
	MaxNeighborCount = 100;
}
CParticleSpatialLayerList	$LOCAL$/CParticleSpatialLayerList_00FF9C5B
{
	LayerList = 
	{
		"$LOCAL$/CParticleSpatialDescriptor_7FB4F4BA",
	};
}
CParticleSpatialDescriptor	$LOCAL$/CParticleSpatialDescriptor_7FB4F4BA
{
	CellSize = 4.0000000e+000;
	LayerName = "FishSpatialLayer";
}
CParticleEvolver_SpatialInsertion	$LOCAL$/Evolver_3
{
	SpatialLayer = "$LOCAL$/CParticleSpatialDescriptor_7FB4F4BA";
}
CParticleEvolver_Script	$LOCAL$/Script_1
{
	Expression = "$LOCAL$/CCompilerSyntaxNodeExpression_FA60CBB7";
}
CCompilerSyntaxNodeExpression	$LOCAL$/CCompilerSyntaxNodeExpression_FA60CBB7
{
	Expression = "function void	Eval()
{
	// stretchs the texture U of UV over the entire ribbon
	TextureU = LifeRatio;
}
";
}
CParticleFieldDeclaration	$LOCAL$/CParticleFieldDeclaration_BEB7E946
{
	FieldName = "TextureU";
}
CParticleFieldDeclaration	$LOCAL$/CParticleFieldDeclaration_6C7620FC
{
	FieldName = "Size";
}
