4,153 Commits over 1,157 Days - 0.15cph!
Fixed resources / materials again..
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
TickRate Project Settings (#1134)
* TickRate project settings
* Def tick rate 50 as it was
* Obsolete Game.TickRate.set
* take tickrate stuff out of serverconfig
Defer removing entity from entities list on destroy
Don't process state update if we already processed one newer than that
IsController overload for specified player
Add Rpc support for entities it's kinda lame w/o codegen
take tickrate stuff out of serverconfig
Fix server applying double input to itself. Alter reconcile lerp speed. Add proper pings, calculate latency from average time of last 5 pings
Add AccurateMilliseconds to UniversalTime
Fix Network.ServerTime, add Ping + Ready messages. Don't create entity if already exists
Player.IsValid
SyncString + fix SyncPlayer nre
Fix input + state update intervals. Only allow public State/InputAttr properties
Obsolete Game.TickRate.set
Def tick rate 50 as it was
TickRate project settings
Remove old log, fix resource paths, have color/nocolor use simple shader, remove pixel-snap scss props
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"
Try client sending to lobby owner.... add docs
Try using broadcastmessage but that doesnt work either
Seperate ISyncVar from SyncVar
Always set Sender to Local Player before sending event
Add docs to Player
Add internal method Network.FindOrCreatePlayer
Add player wrapper use that instead of Friend everywhere publically
InputAttribute. Simulate -> Tick. Added Simulate( bool isFirstTime ). Can assign controllers to entities. When entity has controller use BuildInput to set input props to be sent in cmd to server. Add reconciliation etc. All untested lul
Fix scuffed read/write + allow override SyncVar.GetValue
Start syncvar tests
Update and read sync vars as they change
Syncvar updating
Added UniversalTime utility class
Remove EntityState and add StateAttribute
Receive destroy entity updates. Find and cache properties with StateAttribute. Write/Read State for unreliable state updates. Client-side interpolation for transform state.
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 @ChildContent because it should be
Fixed resource lists. Updated to use IInventorySystem from Remscars PR
Add Name and Desc to IInventoryItem
Fixed resource list, use ChildContent, refs broken atm
SliderEntry -> SliderControl and fixed view models that randomly got scuffed
Implemented IInventoryItem interface used in place of the raw InventoryItem
Merge pull request #1 from tech-nawar/remscar/item-interface
Implemented IInventoryItem interface
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
WIP: Impact and Scrapes (#1072)
* strip impact sound stuff from native
* put it in c# commented out for implementation there later
* Strip CPhysSurfacePropertiesSoundNames
* Add GetFrictionNotifications() to IPhysicsWorld
* Add FrictionEvent, call c# with friction notifications
* Add OnFrictionEvent c# side, add some log for test
* Add GetFrictionNotifications override to CPhysicsWorld. put note to call shutdownfrictionsounds in entity InternalDestruct for later
* Start re-impl impacts in c#
* Remove some logs, ensure impact sound plays from body position
* Strip m_audioParams / CPhysSurfacePropertiesAudio
* Add ScrapeRough/ScrapeSmooth to Surface sound def, add RoughnessFactor and RoughThreshold
* Reorganize code + implement friction sounds in theory
* Call StopFrictionSounds in entity destruct
* Add friction sound to list.... some debug logs...
* Reverse MathX.approach params (it was this way in native :S)
* Add some stuff to entity similar to StartTouch/Touch/EndTouch but for scrapes - revise later
* Use ScrapeEvent incase we need to add/change params later
* Call it ScrapeEventData like CollisionEventData and move it out of Entity
* Fix access violation
* Test
* Remove ScrapeEvent / Entity.Start/EndScrape stuff for now we can look at that later