4,313 Commits over 1,552 Days - 0.12cph!
Add GraphicsView.SelectionRect, add selection box to graph https://files.facepunch.com/layla/1b0511b1/sbox_AT7exzHrxn.mp4
Restore preview textures when preview model changes
Node result just has component count instead of generic type
Restore preview textures on hotload
Allow texture nodes to set a vtex to preview https://files.facepunch.com/layla/1b0411b1/sbox_f1zmhN87os.mp4
Serialize texture as string, load when needed (ResourceJsonConvert is internal)
Lerp node casts fraction to largest of the two components unless it's a float fraction
Make sure any coord input passed to texture node is casted to float2 in generated code
Make shadergraph a IAssetEditor
Use dockwindow
Setup shadergraph project the same way as prefab editor
Use NativeRenderingWidget
Make node editor graph an interface
Add shader graph game resource
Keep node position up to date with node ui
Hook up shader graph saving
Don't open save dialog if we have an asset to save to
Hook up shader graph open
put graph nodes in dictionary, can't save nodes to game resources yet anyway so fuck it
Add compiler ref System.Memory for tool addons
Add simple asset type for shader graph
Don't use game resource for shader graph, serialize json from graph asset instead
Deserialize graph
Add preview dock
Add skybox and cubemap to preview
Add background to graph view
Delete selected nodes on delete key
Remove connections of deleted nodes
Delete selected connections too
Fix ui hotload
Undo redo system
Add undo redo shortcuts
Move node undo op
Grid snap newly created nodes
Undo ops for create/drop/change connection
Don't perform undo redo if there's a pending redo
Status text for undo redo options
Title graph view to asset name
Write graph file before registering it
Don't open graph that is already open
Clear undo stack on new or open graph
Mark session as dirty when an undo op is pushed so title can be changed to show as edited
Menu bar shortcuts
Dirty session when performing undo or redo
Allow input and output attributes to decide handle config type, property type is rarely going to be handle type
Don't allow output connections to input of self
Remove existing input connections, inputs can only have 1 connection
Set node connection property when creating connection
Rebuild graph connections from serialized node connections
Reset input connection on remove
Only set input property if it's node connection type
Use node connection type for all node inputs
Clear preview and drop target when rebuilding graph
Clear connections on graph rebuild
Don't serialize node properties that don't have setters
First attempt at codegen from graph
Time, cosine, multiply nodes
Add toolbar to preview
Add more toolbar options for main window
Add properties dock to edit properties of nodes
Hide node properties we dont want to see
Add color node
Dirty session when property values change
Hook up preview primitive types
Open asset picker for preview model
Don't reconstruct new graph object on undo, just clear nodes and deserialize
Save and load does full serialization, not just nodes, we may have settings we want to save
Save preview model
Rename NodeConnection to NodeInput and make it IValid
Target graph properties when no node is selected
Base class unary node because it's gonna be the same shit for each
Abs node
Add node types automatically
Show compile errors in output
Copy error to clipboard
Add menu option to focus node with error
Selecting error selects node
Center on selected error node
Use orbit cam for preview, makes more sense
Open context menu after dragging an unconnected wire
Some cleanup
Use default a and b values for binary nodes when input isn't valid
Cut down on file reading in CreateFromVfxFile so eventually it can be created from memory
Rename vfx create functions to make more sense
Write generated shader to temp dir
Don't generate code if graph compiler has errors
Run shader compiler process for generated shader
Write generated shader to bullshit placeholder resource for now
Make color node use color property
Make color node use color property
Add lerp node
Add lerp node
Don't serialize NodeInput.IsValid
Log program type when spewing shader stats so I can see what's what
Remove all dynamic shader compiling code, we don't use it and it's over complicating everything
Remove all dynamic shader compiling code, we don't use it and it's over complicating everything
CVfx cleanup
Hacky dynamic shader compile test
Start vfxc process to compile single shader we need to update preview, output bytecode to temp dir
Replace render shader from bytecode
Change preview material while shader is compiling
Only recompile shader if generated code has changed
Remove shader compile dll loading from material system again, no longer needed
Add -fast cmd line option to vfxc to disable optimizations
Add recent files to file menu
Recompile shader after compile has finished if we're pending a compile so preview is always up to date
Write generated shader next to shader graph on save until we can safely generate shader resource from temp dir
Add compile timings
Don't read and mask shader file twice in vfxc
Don't include material inputs in shader template
Don't include material inputs in shader template
Remake dev sphere
Clear cached generated code on new or open
Only add existing files that exist
Add saved file to recent files
Only write generated shader to tempdir before invoking compile so we don't stomp on it while compiling
Remove hlsl output
tolower all recent file paths
Draw spinning circle to show when preview shader is compiling
Texture node
Generate code for textures
Cleanup template shader and material used in shader editor
Set toolView attribute so depth prepass gets disabled (wireframe doesn't render correctly with depth prepass enabled)
Optional texcoords on texture node
Add Vector2 node
Add console tab for convenience
Add sampler properties to texture node
Serialize other properties of graph, handle node serialization separately
Reset properties target when there's a new graph
Fill out shader description from graph
Add texcoord node
Display g_flTime in properties
Some more unary nodes
Add dock restoring
Use a more detailed cubemap and skybox
Serialize compiled shader info to temp dir
Recreate static combo data from serialized compiled shader info
Plug texture filter into generated code to test preview updating
Ask vfxc to output compiled shader info instead of bytecode
Create connection to new node when created through drag + context menu
Add undo history ui
Don't apply same undo level
Add filter edit to node context menu and sort into category submenus
Give nodes better categories
Sort by category
Prompt user to save when trying to create new or opening new graph while current graph has unsaved changes
Prompt save when opening from recent files also
Fix net write writing 0 for null entities, -1 is null, 0 is world entity
Particle networking writes entity directly, null entity should be networked properly now
Move particle creation and set particle control to managed global rpc
Particle destroy rpc
Implement rpc for every particle function
Remove particle protobufs
Remove prediction logs
ModelDoc: Render break piece models to make it easier to offset them https://files.facepunch.com/layla/1b0211b1/sbox-dev_yJRscNkzfJ.mp4
ModelDoc: Add custom map option to lighting mode
Implement rpc for every particle function
Remove particle protobufs
Remove prediction logs
Move particle creation and set particle control to managed global rpc
Revert 1D blend changes - it's fucked
Attempt to fix 1D blendspace not syncing properly when children aren't looping and have different playback speeds https://files.facepunch.com/layla/1b3111b1/sbox-dev_rq4MMzHzRQ.mp4
ModelDoc: Copy bone merged flexes from parent
Support tags in scene world tracing
Add DockManager.Clear() - to clear and reset to default values
Add [EditorForAssetType] - used in conjunction with IAssetEditor, means we can have different editors to the inspector editor
Update cached resource value when saving to disk/memory
Add Namespace, FullName to TypeDescription
ComboBox correctly changes the CurrentIndex when changing CurrentText
Made DockWindow.CreateDynamicViewMenu public
Make PropertySheet.AddProperty public
Fix crash in ToolWindowManager.Clear
Make Json.Serialize and Json.Deserialize return the string value when dealing with Resources
This only really needs to be like this because it can't be a string in a string, because then the resource system won't detect the resources so dependencies won't get added
EntityPrefab GameResource
EntityPrefab tool addon
Mark Model as a EntityPrefab.Property
Can define csproj name in project settings
Don't save package in addons..js
Add EntityPrefabEditor not as an addon
Re-organize addon
Model preview, entity positions
Set local positions when spawning
Add BBox.AddBBox
Zoom out to focus on all of the sceneobjects
Fix backwards compatibilty
Support Entity Tags
Added SceneObject Model setter
Transform.ToWorld & ToLocal use Scale, added tests
Transform.ToWorld/ToLocal takes scale into account when transforming position
Indicate save status
Entity copy/paste
Fix wrong name in def file
Changing the path here - because obj.ResourcePath doesn't work?? Might need @handsomematt to review this logic
Fix entity guids not serializing
Debounce the change function
Add Entity.Prefab, PrefabRoot,, PrefabGuid
Add extensions
Fix regular c++ tools not opening
Fix treeview selection stopping short
Clean up entity node
Add SceneWorld.Trace https://files.facepunch.com/layla/1b2711b1/sbox_PO0xzq1ukb.mp4
Don't create these unless we need them
Only return valid sceneobjects
Keep tree in sync with the scene
Highlight renderer
Add some api comments on tracing
Add TypeDescription.HasAttribute
Classes that can be used as prefabs need to be marked with an attribute
Can add/remove components
Component spawning/updating in game
Can select by clicking in the sceneview
Set up scene object tracing ready to be filtered by tags
Set up scene object tracing ready to be filtered by tags
Add some api comments on tracing
Add SceneWorld.Trace https://files.facepunch.com/layla/1b2711b1/sbox_PO0xzq1ukb.mp4
Output voip on voice layer, add voip_volume convar
Predict sound hash instead of guid for some sound functions, prediction probably hasn't been working on them
Remove voice ban (?) and team behavior from particle message
Strip obvious unused protobufs, dota demo protobufs and tempents
CheckOverlap should support prim vs mesh and mesh vs prim (just not mesh vs mesh)
Rubikon: Add support for meshes in CheckOverlap
Reapply named values in particle editor when restarting particle system
Fix named values not being applied to children
Keep named preview values updated on name change
Default named value on control point info change until I figure out a way to restore them
Add Particles.Set for named vector
Create slider for named float editor
Add named vector
Rename Named Value to Named Float, move it below Literal Float
Support remapping for named values
Initial impl of named values for particle editor https://files.facepunch.com/layla/1b2411b1/sbox-dev_aRI4OtqUEU.mp4
Hammer: Draw 3D Skybox Render Option https://files.facepunch.com/layla/1b2311b1/sbox-dev_4ldF399N38.mp4
Add PhysicsBody.CheckOverlap to check if another body overlaps at a given transform, ignoring all collision rules
Prompt save when opening from recent files also
Prompt user to save when trying to create new or opening new graph while current graph has unsaved changes
Add filter edit to node context menu and sort into category submenus
Give nodes better categories
Sort by category
Don't apply same undo level
Create connection to new node when created through drag + context menu
Ask vfxc to output compiled shader info instead of bytecode
Serialize compiled shader info to temp dir
Recreate static combo data from serialized compiled shader info
Plug texture filter into generated code to test preview updating