| 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, | |
| } |