1,149 Commits over 1,310 Days - 0.04cph!
IzTriangleHull calculates center with doubles, I have no idea why this fixes triangle collision but it does
handlebar_moustache small adjustments
studdle colour adjustments
Allow easy access to graph inputs from node menu, including "This"
https://files.facepunch.com/ziks/2024-03-11/RkOMLQmLlN.png
Facepunch/sbox-issues#5082
Fix copy/pasting nodes referencing graph target input.
Fix NRE when deleting items from serialized list in inspector
Fix removing dictionary entries not marking scene unsaved
Get rid of redraw flicker when adding/removing from lists and dicts
Proper fix for hull vs mesh at large coordinates (thanks dirk)
Handle exceptions thrown when discovering reflection-based nodes
Fixes Facepunch/sbox-issues#5157
Remove last references to lightbinnervr
Readd Dynamic/Baked light settings on hammer
Add Scene.Render to unify scene rendering - should fix sbox-issues/issues/4924
Strip out menu resources/startup resources - more trouble than it's worth
Fix OnPreRender always getting called, even if execute in editor is false
Tick UI right before render, after other updates
Make ComponentTypeSelector slightly taller (fixes sbox-issues/issues/5155)
Component selector search is scored, uses classname and description too
Add tooltip to component selector
Rename Particle System to Legacy Particle System
Asset preview for fbx, obj, smd https://files.facepunch.com/layla/1b1211b1/sbox-dev_uPe3bKuNAh.png
Don't preview smd for now
SerializedProperty and ControlSheet support nullable values
BoolControlWidget fade property when disabled
Fbx serializer is too spammy
Ignore unknown color formats in CMesh::CalculateInputLayoutFromAttributes
Don't create model for preview mesh if there's no valid meshes
Add Vector3.CatmullRomSpline, Vector3.TcbSpline
Add SceneLineObject
Add LineRenderer component
Add line prefab
Fix NRE
Make joint more robust in finding physics bodies, improve the gizmos a bit
Better anchor points for spring joint
Fix async warning in PreviewMesh
Izabu: Move triangle shifting further up the callstack so the fix gets applied to sphere and capsules too
ICollisionListener & ITriggerListener have default interface methods + docs
Resolves sbox-issues/issues/4852
Fix game setup's Launch Mode always falling back to default LaunchMode.Normal
Resolves sbox-issues/issues/4923
Add RigidBody.MotionEnabled
Fix prismatic disabling limit when it shouldn't
Create slider with 2 pivots and an axis, this makes the most sense
Base joint passes two physics points for joint creation
Do a pass on all joints to make sure their local frames make sense
Fixed joint keeps the bodies fixed where they are at the moment of joint creation instead of snapping
Joint gizmo just draws a line from self to target game object
Drag & drop components to change their order
Resolves sbox-issues/issues/4254
EditLogs for when a component is moved
Tick UI before resetting input - fixes sbox-issues/issues/5169
Fix ParticleGradient defaults not saving properly - fixes sbox-issues/issues/5144
Store lobby owner in lobby data, for access from list - fixes sbox-issues/issues/5141
Try to store package revision id in lobby
Completely strip PackageDownloadMode
Cancelling loading cancels properly - fixes sbox-issues/issues/4623
Make download cancelling more convincing, add more download lanes
Add Panel.TooltipClass - fixes sbox-issues/issues/4746
FileSystem.Write/ReadJson - add AllowNamedFloatingPointLiterals to options
Fix some Assets not loading properly from cloud folder on startup
Allow both Sync and HostSync on a property. It means that both the Owner and the Host can control the value. Fixes Facepunch/sbox-issues#5153
Fix exception when deleting object in update
SoundPoint can override distance attenuation, occlusion, reflection
Refresh physics contacts on tag change https://files.facepunch.com/layla/1b1311b1/sbox-dev_PEDseyvLqF.mp4
Don't include special name methods in TypeLibrary (getter/setterr spam)
SerializedObject can handle methods
ControlSheet supports buttons/methods
Add [Button]
https://files.facepunch.com/garry/85519e72-553c-4d0c-9ece-42f371fd31d3.png
Add break button to Prop component
Simplified ComponentSheet, makes use of ControlSheet logic more
Editor style tweaks
Fix unit tests, add SerializedProperty method test
Component Ids (#1501)
* Component id + prune those for refresh as well
* Serialize id properly
* Add unit tests for component id serialization / deserialization - make sure references to Components with Property are properly restored to the correct components by id
* Update GameObjectInspector to use Component.Id to determine already seen components. This makes it rebuild properly for multiple components of the same type
* Serialize as Id not __id so also picked up by MakeGameObjectsUnique
* Scene unique component ids - update serialization test accordingly
* Phase out storing GO guid and component type
* MakeGameObjectsUnique -> MakeIdGuidsUnique (make old method Obsolete and redirect to MakeIdGuidsUnique)
* Unit test for clone with references
* When adding component or game object to Directory - check is there a component or game object with that id already, if so, force change it to a new one and spit a warning out. No component or game object should ever be able to share the same guid anyway but this makes sure
* Add test for loading old reference model type from prefab / json
* Test both old and new formats
* Let's not make this elseif - always check both
Revert comp ids on this branch
Merge branch 'master' into snapshot-refresh
Component Ids (#1501)
* Component id + prune those for refresh as well
* Serialize id properly
* Add unit tests for component id serialization / deserialization - make sure references to Components with Property are properly restored to the correct components by id
* Update GameObjectInspector to use Component.Id to determine already seen components. This makes it rebuild properly for multiple components of the same type
* Serialize as Id not __id so also picked up by MakeGameObjectsUnique
* Scene unique component ids - update serialization test accordingly
* Phase out storing GO guid and component type
* MakeGameObjectsUnique -> MakeIdGuidsUnique (make old method Obsolete and redirect to MakeIdGuidsUnique)
* Unit test for clone with references
* When adding component or game object to Directory - check is there a component or game object with that id already, if so, force change it to a new one and spit a warning out. No component or game object should ever be able to share the same guid anyway but this makes sure
* Add test for loading old reference model type from prefab / json
* Test both old and new formats
* Let's not make this elseif - always check both
Let's not make this elseif - always check both
Test both old and new formats
Add test for loading old reference model type from prefab / json
Allow both Sync and HostSync on a property. It means that both the Owner and the Host can control the value. Fixes Facepunch/sbox-issues#5153
Phase out storing GO guid and component type
MakeGameObjectsUnique -> MakeIdGuidsUnique (make old method Obsolete and redirect to MakeIdGuidsUnique)
Unit test for clone with references
When adding component or game object to Directory - check is there a component or game object with that id already, if so, force change it to a new one and spit a warning out. No component or game object should ever be able to share the same guid anyway but this makes sure
Serialize as Id not __id so also picked up by MakeGameObjectsUnique
Scene unique component ids - update serialization test accordingly
Update GameObjectInspector to use Component.Id to determine already seen components. This makes it rebuild properly for multiple components of the same type
Add unit tests for component id serialization / deserialization - make sure references to Components with Property are properly restored to the correct components by id
Component id + prune those for refresh as well
Serialize id properly
Initial commit
Component id + prune those for refresh as well
Serialize id properly
OnRefresh
Fix refresh for bones
OnDestroyInternal should be internal
Game Object Network Mode Selection https://files.facepunch.com/conna/1b0711b1/sbox-dev_G97N4pdA3q.png (#1495)
Fixes local interpolation jitter
Game Object Network Mode Selection https://files.facepunch.com/conna/1b0711b1/sbox-dev_G97N4pdA3q.png
ComponentFlags.NotNetworked. When a component has this flag, it won't be serialized in the scene snapshot or with a networked object when sent to other clients
Don't EditLog if we're not in the Editor. EditLog separate from BreakFromPrefab because we don't wanna do that just because we're spawning a networked object in a running scene.
Interpolation Fixes w/ Ownership Change (#1494)
🤞
This doesn't need to be internal anymore, was leftover from testing
Only interp here if we're a proxy?
Test comment something out
Initial commit to fix interp issues and ownership change
Finally fixes Facepunch/sbox-issues#4716 - reloading Map Instance when recompiled in Hammer
Add support for expression bodied methods for CodeGen. Fixes Facepunch/sbox-issues#5025
Add test for expression bodied CodeGen method
When joing via new instance, Project.Current is null - this can break <style> because it can't get relative path of current file. Fix that by just using absolute path in that case.
Remove unnecessary assert
Host can always drop ownership of a networked object
Host can always network destroy a networked object
wasted 2 days on this, works-ish but absolutely horrific, stashing anyway
Fixed [Sync] vars on private properties in base classes not being registered. What a strange one! Fixes Facepunch/sbox-issues#4916
Determine fate of network objects when owner disconnects (#1463)
* Can specify what happens to a network object when owner disconnects - don't love the naming
* Unused usings
* Some cleanup
* DisconnectAction -> NetworkOrphaned. Same terms everywhere else. Add NetworkOrphaned.Random - randomly assign owner when owner disconnects - route this through the host though
DisconnectAction -> NetworkOrphaned. Same terms everywhere else. Add NetworkOrphaned.Random - randomly assign owner when owner disconnects - route this through the host though
Might not have an active scene
Testing something but its shit, stash it though
Can specify what happens to a network object when owner disconnects - don't love the naming
Fixed Sync vars on derived component types not working
Host Sync Vars (#1462)
* NetworkTable.Entry.HasControl test. Separate sending network table changes from main update. Host or Owner can send table changes (only send entries they _control_)
* When using WriteAll always write all regardless of control. Make it so unless YOU control a Sync property you can't physically change its value
* Revert that for now - let people change Sync var value locally as it was before, we can try to find a better way to prevent this later. Complication comes from INetworkCustom
* Remove redundant call
* Let''s have each entry define if it has changes now that each one can be potentially controlled by different clients. Make sure we clear changed flag on entry when reading it. NetworkTable.HasChanges will now return true if any entry we have control over is dirty
* Clarify comment
* Let's call it HostSync
* Prevent actual setting of Sync property, modification of NetList, or NetDictionary if you don't have control over it. Non-owner, non-host can't change the values locally, they _must_ be what the synchronized value is
* We can always set the property if network not initialized
* Default HasControl to true for NetList/NetDictionary in-case not set
Default HasControl to true for NetList/NetDictionary in-case not set
Let's call it HostSync
Prevent actual setting of Sync property, modification of NetList, or NetDictionary if you don't have control over it. Non-owner, non-host can't change the values locally, they _must_ be what the synchronized value is
We can always set the property if network not initialized
Let''s have each entry define if it has changes now that each one can be potentially controlled by different clients. Make sure we clear changed flag on entry when reading it. NetworkTable.HasChanges will now return true if any entry we have control over is dirty
Revert that for now - let people change Sync var value locally as it was before, we can try to find a better way to prevent this later. Complication comes from INetworkCustom