14 Commits over 30 Days - 0.02cph!
Add an Intensity named control point value (0-1) for scrape particle effects to use
Make EnableScrapeEffects and EnableImpactEffects internal for now
Make FrictionEffects a dictionary
Call PhysicsGameSystem.Shutdown on GameLoop shutdown to ensure vars cleared
Store friction hit surface (last) and if we've changed hit surface stop any previous effects and sounds
Add Mass and Direction named control points for friction particles. Mass is body mass, direction is body velocity normal. CP0 is already setting position and contact normal
Lower destroy time for effects
Reorganize scrape data in surface def, lower default values. Don't fallback to rough by default. If it's a smooth scrape and there's no effects for that - do nothing by default
Surface is considered smooth by default, can set roughness factor higher for rough surfaces...
Get material for triangle by index for shape 2 on friction events should fix all friction events against world surfaces having hit surface be "default"
Add props to Surface for impact decal and scrape effects / decals
Use ContactPoint + SurfaceNormal to pass into AddImpactSound
Let's add decals and particle effects for impacts but try only doing it if speed > 30 - maybe we configure this per surface?
Add PhysicsImpact struct and use that to seperate effects for Hard and Soft impacts in Surface description (decals + fx)
Correctly spawn soft or hard physics impact particles + decals based on squared speed
Add normal from first valid manifold on contact to friction events to pass to C#
Enable/Disable physics impacts and scrape events as props for now, pass normal from fiction event to AddFrictionSound and create effects where necessary
Also grab contact center from first manifold and pass to C#
Use contact pos for decals + effects, try to base effect frequency on energy volume scale, fix decal placement remove particles on friction effect stop
Set destroy time to 0.5 (this is a failsafe anyway)
Don't have particles follow entity, do it ourselves so we can set to actual contact pos
Set forward for scrape particles to contact normal
Use method for getting inherited surface values if necessary to avoid repeating same code
Use method for getting inherited surface values if necessary to avoid repeating same code
Set forward for scrape particles to contact normal
Also grab contact center from first manifold and pass to C#
Use contact pos for decals + effects, try to base effect frequency on energy volume scale, fix decal placement remove particles on friction effect stop
Set destroy time to 0.5 (this is a failsafe anyway)
Don't have particles follow entity, do it ourselves so we can set to actual contact pos
Add normal from first valid manifold on contact to friction events to pass to C#
Enable/Disable physics impacts and scrape events as props for now, pass normal from fiction event to AddFrictionSound and create effects where necessary
Add PhysicsImpact struct and use that to seperate effects for Hard and Soft impacts in Surface description (decals + fx)
Correctly spawn soft or hard physics impact particles + decals based on squared speed
Use ContactPoint + SurfaceNormal to pass into AddImpactSound
Let's add decals and particle effects for impacts but try only doing it if speed > 30 - maybe we configure this per surface?
Add props to Surface for impact decal and scrape effects / decals