|
DefineClass.ParticleBehaviorGravityWind = |
|
{ |
|
__parents = { "ParticleBehavior" }, |
|
EditorName = "Gravity Wind", |
|
|
|
properties = |
|
{ |
|
{ id = "direction", name = "Direction", editor = "point", scale = guim, dynamic = true }, |
|
{ id = "start_vel", name = "Initial velocity (m/s)", editor = "number", scale = 1000, dynamic = true }, |
|
{ id = "acceleration", name = "Acceleration (m/ss)", editor = "number", scale = 1000, dynamic = true }, |
|
{ id = "max_vel", name = "Max velocity (m/s)", editor = "number", scale = 1000, dynamic = true }, |
|
{ id = "world_space", name = "World space", editor = "bool" } |
|
}, |
|
|
|
direction = point(0, 0, guim), |
|
start_vel = 0, |
|
acceleration = 900, |
|
max_vel = 10000, |
|
world_space = false, |
|
} |
|
|
|
DefineClass.ParticleBehaviorGravityWell = { |
|
__parents = { "ParticleBehavior" }, |
|
EditorName = "Gravity Well", |
|
|
|
properties = |
|
{ |
|
{ id = "position", name = "Position", editor = "point", scale = guim }, |
|
{ id = "start_vel", name = "Initial velocity (m/s)", editor = "number", scale = 1000 }, |
|
{ id = "acceleration", name = "Acceleration (m/ss)", editor = "number", scale = 1000 }, |
|
{ id = "max_vel", name = "Max velocity (m/s)", editor = "number", scale = 1000 }, |
|
}, |
|
|
|
position = point30, |
|
start_vel = 0, |
|
acceleration = 900, |
|
max_vel = 10000, |
|
} |
|
|
|
DefineClass.ParticleBehaviorRandomSpeedSphere = { |
|
__parents = { "ParticleBehavior" }, |
|
EditorName = "Random Speed: Sphere", |
|
properties = { |
|
{ id = "vel_min", name = "Min velocity (m/s)", editor = "number", scale = 1000 }, |
|
{ id = "vel_max", name = "Max velocity (m/s)", editor = "number", scale = 1000 }, |
|
}, |
|
vel_min = 1000, |
|
vel_max = 1500, |
|
} |
|
|
|
DefineClass.ParticleBehaviorRandomSpeedSpray = { |
|
__parents = { "ParticleBehavior" }, |
|
EditorName = "Random Speed: Spray", |
|
properties = { |
|
{ id = "direction", name = "Direction", editor = "point", scale = guim }, |
|
{ id = "spread_angle_min", name = "Min spread angle (degrees)", editor = "number", scale = 100 }, |
|
{ id = "spread_angle", name = "Max spread angle (degrees)", editor = "number", scale = 100 }, |
|
{ id = "vel_min", name = "Min velocity (m/s)", editor = "number", scale = 1000, dynamic = true }, |
|
{ id = "vel_max", name = "Max velocity (m/s)", editor = "number", scale = 1000, dynamic = true }, |
|
}, |
|
direction = point(0, 0, guim), |
|
spread_angle_min = 0, |
|
spread_angle = 3000, |
|
vel_min = 1000, |
|
vel_max = 1500, |
|
} |
|
|
|
|
|
DefineClass.ParticleBehaviorFriction = { |
|
__parents = { "ParticleBehavior" }, |
|
EditorName = "Friction", |
|
properties = { |
|
{ id = "friction", name = "Friction multiplier", editor = "curve4", help = "Speed multiplier, 1.0 = no change", |
|
min = 600, max = 1200, scale = 1000, scale_x = 1000, max_x = 1000, }, |
|
}, |
|
|
|
friction = MakeLine(900, 900, 1000), |
|
} |
|
|
|
DefineClass.ParticleBehaviorTornado = { |
|
__parents = { "ParticleBehavior" }, |
|
EditorName = "Tornado", |
|
properties = { |
|
{ id = "position", name = "Position", editor = "point", scale = guim }, |
|
{ id = "direction", name = "Direction", editor = "point", scale = guim }, |
|
{ id = "start_rpm", name = "Start rpm", editor = "number", scale = 100 }, |
|
{ id = "mid_rpm", name = "Middle rpm", editor = "number", scale = 100 }, |
|
{ id = "end_rpm", name = "End rpm", editor = "number", scale = 100 }, |
|
{ id = "mid_point", name = "Middle point", editor = "number", scale = 1000 }, |
|
{ id = "centrifugal", name = "Centrifugal", editor = "number", scale = 1000, min = -50, max = 50, slider = true }, |
|
{ id = "max_friction", name = "Max Friction", editor = "number", scale = 1000, min = 100, max = 100000 }, |
|
{ id = "max_distance", name = "Max Distance", editor = "number", scale = 1000, min = 100, max = 50000 }, |
|
{ id = "friction_by_distance", name = "Friction", editor = "curve4", scale = 1000, scale_x = 1000, min = 0, max = function(o) return o.max_friction end, max_x = function(o) return o.max_distance end, }, |
|
}, |
|
position = point30, |
|
direction = point(0, 0, guim), |
|
start_rpm = 2000, |
|
mid_rpm = 2000, |
|
end_rpm = 2000, |
|
mid_point = 500, |
|
centrifugal = 0, |
|
max_friction = 100000, |
|
max_distance = 2000, |
|
friction_by_distance = MakeLine(100000, 100000, 2000), |
|
} |
|
|
|
DefineClass.ParticleBehaviorTurbulence = { |
|
__parents = { "ParticleBehavior" }, |
|
EditorName = "Turbulence", |
|
properties = { |
|
{ id = "friction", name = "Friction multiplier", editor = "number", scale = 1000, help = "Speed multiplier, 1.0 = no change" }, |
|
}, |
|
|
|
friction = 900, |
|
} |
|
|
|
DefineClass.ParticleBehaviorWind = { |
|
__parents = { "ParticleBehavior" }, |
|
EditorName = "Wind", |
|
properties = { |
|
{ id = "wind_mode", name = "Wind Mode", editor = "choice", items = { "windfield_per_obj", "windfield_per_particle" }, }, |
|
{ id = "multiplier", name = "Multiplier", editor = "number", scale = 1000, help = "Controls Max Wind Speed" }, |
|
{ id = "friction", name = "Friction", editor = "number", scale = 1000, max = 10000, min = 0, help = "Percent of velocity to transfer in 1 second. Use 0 to disable relative wind speed." }, |
|
}, |
|
wind_mode = "windfield_per_obj", |
|
multiplier = 1000, |
|
friction = 0, |
|
} |
|
|
|
|
|
DefineClass.ParticleBehaviorCollision = { |
|
__parents = { "ParticleBehavior" }, |
|
EditorName = "Collision", |
|
|
|
properties = { |
|
{ id = "_", editor = "help", default = false, help = |
|
[[Quality levels: |
|
Perfect - Every particle performs a full test with the collision system. High performance cost - keep particle count low. |
|
High/Low - Every tick a local cache(VGrid, scales with parsys' box) is prepared and particles are tested against it. If a particle is close to a surface, full test is performed. Scales well with particle count. Keep area low - see max_distance_from_system. |
|
Terrain - Particles are tested against the terrain only. |
|
Use hr.DebugRenderParticleCollisions to see particle collision status & VGrids: |
|
Red - Full test |
|
Green - Terrain test |
|
Blue - Freezed particle (can't move & doesn't do any tests) |
|
Black - VGrid test, no collision test]]}, |
|
{ id = "quality", name = "Quality", editor = "choice", items = {"perfect", "high", "medium", "terrain"}, default = "medium" }, |
|
{ id = "friction", name = "Friction multiplier", editor = "number", scale = 1000, help = "Speed multiplier, 1.0 = no change", default = 900 }, |
|
{ id = "xorbins", name = "Change Bins on collision", editor = "set", items = { "A", "B", "C", "D", "E", "F", "G", "H" }, default = set() }, |
|
{ id = "clearbins", name = "Clear Bins on collision", editor = "set", items = { "A", "B", "C", "D", "E", "F", "G", "H" }, default = set() }, |
|
{ id = "setbins", name = "Set Bins on collision", editor = "set", items = { "A", "B", "C", "D", "E", "F", "G", "H" }, default = set() }, |
|
{ id = "radius", name = "Radius (m)", editor = "number", scale = 1000, max = 1000, min = 0, default = 0 }, |
|
{ id = "rest_velocity_treshold", name = "Rest Velocity Treshold", editor="number", min = 0, max = 10000, scale = 1000, default = 1000, help = "In meters/sec. Freezes particle position." }, |
|
{ id = "max_distance_from_system", name = "Max distance from system (m)", editor="number", min = 0, max = 75000, scale = 1000, default = 10000, help = "Control Particle-Env collision. Particle-Terrain collision is always performed" }, |
|
}, |
|
} |
|
|
|
DefineClass.ParticleBehaviorSurfaceCollision = { |
|
__parents = { "ParticleBehavior" }, |
|
EditorName = "SurfaceCollision", |
|
|
|
properties = { |
|
{ id = "xorbins", name = "Change Bins on collision", editor = "set", items = { "A", "B", "C", "D", "E", "F", "G", "H" }, default = set() }, |
|
{ id = "walkable_surface", name = "Walkable", editor = "bool", help = "Whether collision is triggered when the particle is under walkable surface" }, |
|
{ id = "terrain_surface", name = "Terrain", editor = "bool", help = "Whether collision is triggered when the particle is under terrain" }, |
|
{ id = "kill", name = "Kill", editor = "bool", help = "Whether upon collision the particle is going to die" }, |
|
{ id = "offset", name = "Offset from surface", editor = "number", scale = "m", help = "At what distance this behavior should get triggered" }, |
|
}, |
|
kill = false, |
|
offset = 0, |
|
walkable_surface = false, |
|
terrain_surface = false, |
|
} |