Version = 1.8.4.27161; CParticleEffect $LOCAL$/Resource { EditorInfosPosition = int2(73, 52); OnSpawn = "$LOCAL$/Spawner"; CustomAttributes = "$LOCAL$/_GlobalAttributes"; Autostart = true; } CActionFactoryParticleSpawnerBase $LOCAL$/OutLightning_pCoords { EditorInfosPosition = int2(-288, -61); EditorInfosIsBlockMinimized = 0; Descriptor = "$LOCAL$/CParticleDescriptor_AE135B2A"; Infinite = true; DurationInSeconds = 2.0000000e+000; FluxFactorExpression = "Flux"; } CParticleDescriptor $LOCAL$/CParticleDescriptor_AE135B2A { EditorInfosPosition = int2(-392, -44); CustomFields = { "$LOCAL$/CParticleFieldDeclaration_2FAA954C", "$LOCAL$/CParticleFieldDeclaration_3DDDE71F", }; SpawnEvaluator = "$LOCAL$/CCompilerSyntaxNodeExpression_5566F5E7"; States = { "$LOCAL$/CParticleState_3AF8190E", }; } CActionFactoryWithChilds $LOCAL$/Spawner { EditorInfosPosition = int2(-162, -81); ChildList = { "$LOCAL$/OutLightning_pCoords", "$LOCAL$/InLightning_pCoords", "$LOCAL$/Other", }; } CParticleAttributeDeclaration $LOCAL$/CParticleAttributeDeclaration_86407B2A { AttributeName = "RGB"; AttributeType = float3; DefaultValueF4 = float4(2.5000000e-001, 5.0000000e-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); } CCompilerSyntaxNodeExpression $LOCAL$/CCompilerSyntaxNodeExpression_5566F5E7 { EditorInfosPosition = int2(-508, 22); Expression = "function void Eval() { Life = 0.25; // An great use of parametric coordinates is to set it by the spawning position of every particles, // with this you can use sampling in this place to set attributes linked by the surface of your sampler like the normal axis pCoords = Shape_0.sampleParametricCoords(); Position=Shape_0.samplePosition(pCoords)*0.9*Scale; AxisUp=Shape_0.sampleNormal(pCoords); } "; } CParticleState $LOCAL$/CParticleState_3AF8190E { EditorInfosPosition = int2(-508, 65); StateName = "State_0"; Evolvers = { "$LOCAL$/LocalSpace_6", "$LOCAL$/Trail_1", }; } CParticleEvolver_Script $LOCAL$/Script_3 { Expression = "$LOCAL$/CCompilerSyntaxNodeExpression_5F5E20FA"; } CParticleAttributeList $LOCAL$/_GlobalAttributes { EditorInfosPosition = int2(-599, -20); AttributeList = { "$LOCAL$/CParticleAttributeDeclaration_86407B2A", "$LOCAL$/CParticleAttributeDeclaration_ACB53148", "$LOCAL$/CParticleAttributeDeclaration_6D21C725", "$LOCAL$/CParticleAttributeDeclaration_E795E065", }; SamplerList = { "$LOCAL$/CParticleSamplerShape_B4A3F15A", }; } CParticleSamplerShape $LOCAL$/CParticleSamplerShape_B4A3F15A { SamplerName = "Shape_0"; Shape = "$LOCAL$/CShapeDescriptor_00485E25"; } CShapeDescriptor $LOCAL$/CShapeDescriptor_00485E25 { ShapeType = SPHERE; Radius = 2.0000000e+000; } CCompilerSyntaxNodeExpression $LOCAL$/CCompilerSyntaxNodeExpression_5F5E20FA { Expression = "function void Eval() { Size=(1-LifeRatio)*0.25*Scale; VelocityField=Turb_0.sample(Position/Scale); } "; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_2FAA954C { FieldName = "pCoords"; FieldType = int3; } CParticleEvolver_Rotation $LOCAL$/Evolver_3 { } CParticleEvolver_Script $LOCAL$/Script_5 { Expression = "$LOCAL$/CCompilerSyntaxNodeExpression_67DDAB2D"; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_3DDDE71F { FieldName = "AxisUp"; FieldType = float3; TransformFilter = rotate; } CCompilerSyntaxNodeExpression $LOCAL$/CCompilerSyntaxNodeExpression_67DDAB2D { Expression = "function void Eval() { Color=sin(LifeRatio*3)*Distortion; } "; } CParticleEvolver_Spawner $LOCAL$/Trail_1 { EditorInfosIsBlockMinimized = 0; SpawnMetric = Time; SpawnInterval = 3.9999999e-002; ForwardAxisField = "Axis"; FirstSpawnDelay = 0.0000000e+000; LocalSpaceSpawn = true; Descriptor = "$LOCAL$/CParticleDescriptor_FB247043"; } CParticleState $LOCAL$/CParticleState_61782B80 { StateName = "State_0"; Evolvers = { "$LOCAL$/LocalSpace_7", }; } CParticleDescriptor $LOCAL$/CParticleDescriptor_FB247043 { Renderer = "$LOCAL$/CParticleRenderer_Ribbon_88AD4B47"; CustomFields = { "$LOCAL$/CParticleFieldDeclaration_D3592D0B", "$LOCAL$/CParticleFieldDeclaration_66AA7FEC", "$LOCAL$/CParticleFieldDeclaration_6ED3D8FF", "$LOCAL$/CParticleFieldDeclaration_AFC47789", }; Samplers = { "$LOCAL$/CParticleSamplerProceduralTurbulence_D13BE328", }; SpawnEvaluator = "$LOCAL$/CCompilerSyntaxNodeExpression_0256E2C2"; States = { "$LOCAL$/CParticleState_61782B80", }; } CCompilerSyntaxNodeExpression $LOCAL$/CCompilerSyntaxNodeExpression_0256E2C2 { Expression = "function void Eval() { Life = 0.25*(1-spawner.LifeRatio); // Associate with an evolver spawner you can make an hairy effect directed by the normal of the surface Velocity=(parent.AxisUp*10+vrand())*Scale; Color=spawner.LifeRatio*RGB.xyz1*10; TextureID=ninja*16; Mass=Scale; } "; } CParticleRenderer_Ribbon $LOCAL$/CParticleRenderer_Ribbon_88AD4B47 { BillboardingMaterial = Additive_Soft; Diffuse = "Textures/Fx/Lightning_05.dds"; AtlasDefinition = "Textures/Fx/AtlasX4.pkat"; TextureIDField = "TextureID"; } CParticleEvolver_Physics $LOCAL$/CParticleEvolver_Physics_BA79E974 { Mass = 0.0000000e+000; Drag = 1.0000000e+000; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_66AA7FEC { FieldName = "TextureID"; } CParticleSamplerProceduralTurbulence $LOCAL$/CParticleSamplerProceduralTurbulence_D13BE328 { SamplerName = "Turb_0"; Scale = 1.5000000e+000; Strength = 5.0000000e+001; TimeScale = 1.0000000e+000; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_D3592D0B { FieldName = "Color"; FieldType = float4; } CActionFactoryParticleSpawnerBase $LOCAL$/Ball { EditorInfosIsBlockMinimized = 0; Descriptor = "$LOCAL$/CParticleDescriptor_207FBFFE"; Infinite = true; DurationInSeconds = 2.0000000e+000; SpawnCount = 2.0000000e+000; } CParticleDescriptor $LOCAL$/CParticleDescriptor_207FBFFE { Renderer = "$LOCAL$/CParticleRenderer_Mesh_31DAE3BD"; CustomFields = { "$LOCAL$/CParticleFieldDeclaration_4664FEE6", "$LOCAL$/CParticleFieldDeclaration_D58C74A1", "$LOCAL$/CParticleFieldDeclaration_1BDA079B", }; SpawnEvaluator = "$LOCAL$/CCompilerSyntaxNodeExpression_26A73F99"; States = { "$LOCAL$/CParticleState_3D5454D3", }; } CCompilerSyntaxNodeExpression $LOCAL$/CCompilerSyntaxNodeExpression_26A73F99 { Expression = "function void Eval() { Life = 1.0; Size = 2*Scale; RotationInit=vrand()*pi; } "; } CParticleRenderer_Mesh_Descriptor $LOCAL$/CParticleRenderer_Mesh_Descriptor_687E3EC4 { Mesh = "Meshes/Geosphere.pkmm"; Material = Additive_NoAlpha; MaterialParametersFields = { "DiffuseColor = Color", }; Diffuse = "Textures/EnergyBall_02.dds"; } CParticleState $LOCAL$/CParticleState_3D5454D3 { StateName = "State_0"; Evolvers = { "$LOCAL$/LocalSpace_1", }; } CParticleEvolver_Localspace $LOCAL$/LocalSpace_1 { ChildList = { "$LOCAL$/Script_2", }; } CParticleRenderer_Mesh $LOCAL$/CParticleRenderer_Mesh_31DAE3BD { Meshes = { "$LOCAL$/CParticleRenderer_Mesh_Descriptor_687E3EC4", }; ScaleField = "Size"; EulerRotationField = "Rotation"; RotationAxisAngleField = ""; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_4664FEE6 { FieldName = "Size"; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_D58C74A1 { FieldName = "Color"; FieldType = float4; } CParticleEvolver_Script $LOCAL$/Script_2 { Expression = "$LOCAL$/CCompilerSyntaxNodeExpression_71E8EF78"; } CCompilerSyntaxNodeExpression $LOCAL$/CCompilerSyntaxNodeExpression_71E8EF78 { Expression = "function void Eval() { Rotation=RotationInit+float3(0,scene.Time*10,0); Color=RGB.xyz1*sin(LifeRatio*3)*4; } "; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_1BDA079B { FieldName = "RotationInit"; FieldType = float3; TransformFilter = full; } CParticleDescriptor $LOCAL$/CParticleDescriptor_D8E1BE65 { EditorInfosPosition = int2(-392, -44); CustomFields = { "$LOCAL$/CParticleFieldDeclaration_20D35A8C", "$LOCAL$/CParticleFieldDeclaration_1694863F", "$LOCAL$/CParticleFieldDeclaration_F01DDC2E", "$LOCAL$/CParticleFieldDeclaration_E2763880", }; Samplers = { "$LOCAL$/CParticleSamplerProceduralTurbulence_7110CCC0", }; SpawnEvaluator = "$LOCAL$/CCompilerSyntaxNodeExpression_30AD0A83"; States = { "$LOCAL$/CParticleState_01226A02", }; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_20D35A8C { FieldName = "pCoords"; FieldType = int3; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_1694863F { FieldName = "AxisUp"; FieldType = float3; TransformFilter = rotate; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_F2B14DAF { FieldName = "AxisUp"; FieldType = float3; TransformFilter = rotate; } CActionFactoryWithChilds $LOCAL$/Other { ChildList = { "$LOCAL$/Ball", "$LOCAL$/Glow", "$LOCAL$/Disto", }; } CParticleSamplerProceduralTurbulence $LOCAL$/CParticleSamplerProceduralTurbulence_7110CCC0 { SamplerName = "Turb_0"; Scale = 2.0000000e+000; Strength = 1.0000000e+002; TimeScale = 1.0000000e+000; } CCompilerSyntaxNodeExpression $LOCAL$/CCompilerSyntaxNodeExpression_30AD0A83 { EditorInfosPosition = int2(-508, 22); Expression = "function void Eval() { Life = 0.25; pCoords = Shape_0.sampleParametricCoords(); Position=Shape_0.samplePosition(pCoords)*Scale; Mass=Scale; } "; } CParticleState $LOCAL$/CParticleState_01226A02 { EditorInfosPosition = int2(-508, 65); StateName = "State_0"; Evolvers = { "$LOCAL$/LocalSpace_4", "$LOCAL$/Trail_2", }; } CParticleEvolver_Script $LOCAL$/CParticleEvolver_Script_0F7E6FED { Expression = "$LOCAL$/CCompilerSyntaxNodeExpression_1C55A6B4"; } CCompilerSyntaxNodeExpression $LOCAL$/CCompilerSyntaxNodeExpression_1C55A6B4 { Expression = "function void Eval() { // In this case the sampling of the normal is set in realtime // because the trail travel along the surface and we want to match the faces of the ribbon with the surface AxisUp=Shape_0.sampleNormal(pCoords); Position=Position*Scale; VelocityField=Turb_0.sample(Position/Scale); } "; } CActionFactoryParticleSpawnerBase $LOCAL$/InLightning_pCoords { EditorInfosPosition = int2(-288, -61); EditorInfosIsBlockMinimized = 0; Descriptor = "$LOCAL$/CParticleDescriptor_D8E1BE65"; Infinite = true; DurationInSeconds = 2.0000000e+000; FluxFactorExpression = "Flux"; } CParticleEvolver_Projection $LOCAL$/Evolver_1 { Shape = "Shape_0"; OutputParametricCoordsField = "pCoords"; } CParticleEvolver_Physics $LOCAL$/Evolver_2 { Mass = 0.0000000e+000; Drag = 1.0000000e+000; } CParticleEvolver_Spawner $LOCAL$/Trail_2 { EditorInfosIsBlockMinimized = 0; SpawnMetric = Time; SpawnInterval = 2.0000000e-002; LocalSpaceSpawn = true; Descriptor = "$LOCAL$/CParticleDescriptor_7A4351D2"; } CParticleState $LOCAL$/CParticleState_E8DB9F13 { StateName = "State_0"; Evolvers = { "$LOCAL$/LocalSpace_5", }; } CParticleDescriptor $LOCAL$/CParticleDescriptor_7A4351D2 { Renderer = "$LOCAL$/CParticleRenderer_Ribbon_35782C54"; CustomFields = { "$LOCAL$/CParticleFieldDeclaration_7F906BF6", "$LOCAL$/CParticleFieldDeclaration_42738008", "$LOCAL$/CParticleFieldDeclaration_F2B14DAF", }; SpawnEvaluator = "$LOCAL$/CCompilerSyntaxNodeExpression_42CA8BFD"; States = { "$LOCAL$/CParticleState_E8DB9F13", }; } CCompilerSyntaxNodeExpression $LOCAL$/CCompilerSyntaxNodeExpression_42CA8BFD { Expression = "function void Eval() { Life = 0.1; Size = 0.2*Scale; ColorCoeff=sin(spawner.LifeRatio*3)*RGB.xyz1*10; Position=vrand()*0.1*Scale; // Simply add the normals information in the axis field of the ribbon and that\'s it! AxisUp=parent.AxisUp; } "; } CParticleRenderer_Ribbon $LOCAL$/CParticleRenderer_Ribbon_35782C54 { BillboardingMaterial = Additive_Soft; Diffuse = "Textures/Fx/Lightning_05.dds"; AtlasDefinition = "Textures/Fx/AtlasX4.pkat"; TextureIDField = "TextureID"; AxisField = "AxisUp"; } CParticleEvolver_Localspace $LOCAL$/LocalSpace_5 { ChildList = { "$LOCAL$/Script_4", }; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_7F906BF6 { FieldName = "Color"; FieldType = float4; } CParticleEvolver_Script $LOCAL$/Script_4 { Expression = "$LOCAL$/CCompilerSyntaxNodeExpression_3106DEF1"; } CCompilerSyntaxNodeExpression $LOCAL$/CCompilerSyntaxNodeExpression_3106DEF1 { Expression = "function void Eval() { Color=ColorCoeff*sin(LifeRatio*3); } "; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_42738008 { FieldName = "ColorCoeff"; FieldType = float4; } CActionFactoryParticleSpawnerBase $LOCAL$/Glow { EditorInfosIsBlockMinimized = 0; Descriptor = "$LOCAL$/CParticleDescriptor_29F3590A"; Infinite = true; DurationInSeconds = 2.0000000e+000; } CParticleDescriptor $LOCAL$/CParticleDescriptor_29F3590A { Renderer = "$LOCAL$/CParticleRenderer_Billboard_766CC37C"; CustomFields = { "$LOCAL$/CParticleFieldDeclaration_C1FAB4F9", }; SpawnEvaluator = "$LOCAL$/CCompilerSyntaxNodeExpression_32830795"; States = { "$LOCAL$/CParticleState_3A34A9EF", }; } CCompilerSyntaxNodeExpression $LOCAL$/CCompilerSyntaxNodeExpression_32830795 { Expression = "function void Eval() { Life = 1.0; Size = 2.1*Scale; Color=(RGB.xyz1*0.5+0.5)*0.2; } "; } CParticleRenderer_Billboard $LOCAL$/CParticleRenderer_Billboard_766CC37C { Diffuse = "Textures/Fx/Glow_02.dds"; } CParticleState $LOCAL$/CParticleState_3A34A9EF { StateName = "State_0"; Evolvers = { "$LOCAL$/LocalSpace_2", }; } CParticleEvolver_Localspace $LOCAL$/LocalSpace_2 { } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_C1FAB4F9 { FieldName = "Color"; FieldType = float4; } CParticleDescriptor $LOCAL$/CParticleDescriptor_78C6FECC { Renderer = "$LOCAL$/CParticleRenderer_Billboard_E542DF7F"; CustomFields = { "$LOCAL$/CParticleFieldDeclaration_B49E24AE", }; SpawnEvaluator = "$LOCAL$/CCompilerSyntaxNodeExpression_412E2A09"; States = { "$LOCAL$/CParticleState_C6F09D00", }; } CParticleRenderer_Billboard $LOCAL$/CParticleRenderer_Billboard_E542DF7F { BillboardingMaterial = AlphaBlend_Distortion; Diffuse = "Textures/Fx/Distortion_01.dds"; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_B49E24AE { FieldName = "Color"; FieldType = float4; } CCompilerSyntaxNodeExpression $LOCAL$/CCompilerSyntaxNodeExpression_412E2A09 { Expression = "function void Eval() { Life = 1.0; Size = 2.1*Scale; Color=1; Rotation=rand(-pi,pi); ScalarRotationSpeed=rand(-2,2); } "; } CParticleState $LOCAL$/CParticleState_C6F09D00 { StateName = "State_0"; Evolvers = { "$LOCAL$/LocalSpace_3", }; } CParticleEvolver_Localspace $LOCAL$/LocalSpace_3 { ChildList = { "$LOCAL$/Evolver_3", "$LOCAL$/Script_5", }; } CActionFactoryParticleSpawnerBase $LOCAL$/Disto { EditorInfosIsBlockMinimized = 0; Descriptor = "$LOCAL$/CParticleDescriptor_78C6FECC"; Infinite = true; DurationInSeconds = 2.0000000e+000; SpawnCount = 2.0000000e+000; } CParticleEvolver_Localspace $LOCAL$/LocalSpace_4 { ChildList = { "$LOCAL$/Evolver_2", "$LOCAL$/Evolver_1", "$LOCAL$/CParticleEvolver_Script_0F7E6FED", }; } CParticleEvolver_Localspace $LOCAL$/LocalSpace_6 { } CParticleEvolver_Localspace $LOCAL$/LocalSpace_7 { ChildList = { "$LOCAL$/CParticleEvolver_Physics_BA79E974", "$LOCAL$/Script_3", }; } CParticleAttributeDeclaration $LOCAL$/CParticleAttributeDeclaration_ACB53148 { AttributeName = "Flux"; DefaultValueF4 = float4(4.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); } CParticleAttributeDeclaration $LOCAL$/CParticleAttributeDeclaration_6D21C725 { AttributeName = "Scale"; DefaultValueF4 = float4(1.0000000e+000, 0.0000000e+000, 0.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); } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_6ED3D8FF { FieldName = "Mass"; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_F01DDC2E { FieldName = "Mass"; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_AFC47789 { FieldName = "VelocityField"; FieldType = float3; } CParticleFieldDeclaration $LOCAL$/CParticleFieldDeclaration_E2763880 { FieldName = "VelocityField"; FieldType = float3; } CParticleAttributeDeclaration $LOCAL$/CParticleAttributeDeclaration_E795E065 { AttributeName = "Distortion"; DefaultValueF4 = float4(1.0000000e+000, 0.0000000e+000, 0.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); }