999 Commits over 1,096 Days - 0.04cph!
Native doesn't automatically mount everything from config/addons.json
Menu shouldn't care about local packages/projects - non-editor doesn't load any of that
Remove JumpList - we can try this again when we have a concrete idea of project workflow
Remove "Content Mode", remove skip start screen - all content should be in a project, so why wouldn't you create/open a project
New Game Project -> New Project - these are workspaces for any content really
AssetSystem: Defer scanning new projects until they've all been added, and fix the counter
Remove Change Project - there's not much sanity in trying to reset the entire engine state when we could simply restart the process
-project command line is part of editor bootstrap not engine
Hacky mark all games as inactive on bootstrap
Consolidate project filesystem logic, call native directly instead of saving json and relying on it reading it
File -> Quit prompts unsaved changes
Dirty editor window title when scene modified, add renderer
Move editor only code out of engine Project class
Make sure we still mount content projects on startup
Support opening non-game projects
Batch rebuild content path / update assetsystem on bootstrap
Native resource Load methods should only be called from main thread, the resourcesystem has no idea what to do with a blocking load on a thread and will just crash
Each SceneMap has a unique SpawnGroupHandle, fixes crashes with multiple map instances (including 3d skyboxes) in scenes
AssetSystem.CreateResource - create empty json not kv3 since I removed the legacy kv3 path
TerrainEditorTool use EditorTypeLibrary for paint tools
Fix a `ERROR: Reentrant call to CResourceSystem::FrameUpdate()` caused by some resource compilers using g_pRenderDevice->Present() to clean up resources, this was cascading into swapchain updates when the window was resized (which always happens at startup) - which then make another call to the resource system to free previous swapchain resources.
Fix infinite loop compiling games, sorry!
Check typedef before we try and use it
PackageLoader: Don't add a package to loaded until we know the assemblies aren't going to throw
Graphics.Draw (RenderTools::DrawSceneObject) passes non-uniform scale to shader
Input action keybinds accept Tab
Input actions setup MOUSE buttons correctly, also uppercase everything so it's consistent
Fix map 3d skyboxes lifecycle by making them map components
Offset 3d skybox camera by skybox_reference position
git-blame-ignore dotnet format commit
LineEdit: Enter key blurs the widget
Bounding box editor tool
Add ITerrainPaintTool for easily extensible terrain painting tools
Fix imprecise degrees <-> radians which was causing bad quat <-> euler
Rotation.Angles(): at singularities pitch should always be +-(π/2)
A few more tests around euler angles at singularities
Time out if we can't connect to a host when joining a lobby
Delete all vmat_c except a few required ones - should build correctly on CI since contentbuilder fixes
Registering textures here shouldn't be needed anymore
Less spaghetti on project initialization: only load user projects in editor mode, add & compile built-in first and only error then, remove dead code paths
EditorSplashScreen remove StaysOnTopHint - intrusive to all other OS windows and hides exception dialogs
Bail starting tools if our base projects fail to compile because nothing will work and it's impossible to recover
Actually use the sky_camera offset/angle/scale in native
Delete unused 2d skybox tracking CSceneWorld::m_skyboxes
Restore deleted 3d skybox view layers
Delete SceneCamera.Skybox - this was a stupid way to do it
Add internal SceneSkybox3D, create this from skybox_reference in SceneMapLoader using its own MapLoader
SkyboxMapLoader loads 2d skybox
New project wizard creates a directory in your selected location instead of you explicitly selecting the location
Change EditorWindow.StateCookie so everyone on main gets a sane default layout reset on them when staging is flipped
Unused networking engine events
Delete some unused VR specific stuff from scenesystem
Remove GameResources able to load from keyvalues
Fix asserts/trying to make 0 width&height render targets on startup
TryLoadGameResource catches exceptions as expected, doesn't brick your game if you have a malformed gameresource now
Terrain: Move mode selection to EditorTool overlay, component inspector is settings only
dotnet format
Terrain: Import heightmaps PNG 8bit :( or RAW 8 or 16 bit
Terrain.RayIntersects transforms ray into local space
Move brush list out of component editor, popup menu on brush preview
Terrain: transform local normal by terrain world transform
Editor tools can use SkiaSharp
Add wireframe button to scene toolbar
MapComponentMapLoader: prop_static is never in entity lump
SceneMapLoader: don't create disabled lights
MapComponentMapLoader: Static prop_physics are static
SceneSunLight -> SceneDirectionalLight - consistent with component and native name
Terrain: Brush strength/invert to compute shader
Revert "Imply console apps want rendersystemempty, maybe revisit this in the future if we want them to do any kind of GPU compute"
This reverts commit e9ddbb31c58de3596aeecacae6f1b77d45c2c338.
CI or whatever should opt out of this, Hammer running resourcecompiler
and probably other stuff needs a valid one.
Null check model in AssetVideo
Hammer entity definitions can live on life support in Sandbox.Tools
Terrain size is stored on TerrainData, specify the total world size instead of confusing units per texel
Fix grid axis colors being the wrong way
Use Gizmo colors for grid axis & add SrgbGammaToLinear so the colors aren't fucked
Document ComputeShader, remove obsolete, Dispatch throws exception for bad parameters instead of silently failing
Terrain shader write to depth
Brush preview works again
Use compute shader to modify terrain heightmap instead of shitty interpolations on CPU
Terrain: Use ShadowRenderType
Lighter terrain grid
Implement attributes on ReflectionSerializedObject.SerializedProperty
Move Terrain editor into an EditorTool
ReflectionSerializedObject property SetValue<T> will convert value, catch exceptions
TypeSerializedObject SerializedProperty.TryGetAsObject don't throw if null
Brush settings widget window
FloatControlWidget blurs entry on range slider drag
Only modify terrain on mouse drag
Change brush order, circle first
SceneOverlayWidget updates position when window is moved too
Fixes sbox-issues/#4378
Gizmo shaders display in ToolsVis mode
█▅▆▆▍▍/█▍▆█▌▅ ▅▉█▆▋ ▆▅▇▌ ▄▆▉▄▄ ▋-▍▊-▆_
Fix and tidy up terrain data serialization
Clear QPixmap on create so it's not full of uninitialized data
Compress TerrainData heightmap/controlmap data with deflate, simple rle is probably best
Shadergraph: Transform Normal can output in tangent or world space (default is tangent to match material output)
Don't save the file 9 times everytime in Asset.SaveToDisk
Store TerrainData in a versioned gameresource with custom serialization, so we can reuse it in multiple scenes and not have absurd file sizes
When we dispose of a SceneCamera, queue the native volumetric fog to be disposed of at frame end since a render view with it is likely already queued
Unused server/client methods and gizmo instances
Unused physics trace filters
Language.Init() after we mount filesystem
File watch for hotloading textures and localization files too
Fix ResolveTargetD3D11 srcBox limiting not accounting for offset on dest width min
Graphics.GrabFrameTexture uses Graphics.Viewport
Fix typos and inconsistent screen uv calc in postprocess shader
OnAwake/OnDestroy respect Component.ExecuteInEditor
Add InputContext for Scene.FixedUpdate so inputs are reliable when FPS is higher than the fixed update rate
Grid shader: Don't lose all our interpolation precision by multiplying grid scale in vertex stage. Also tessellate mesh a little for better depth bias
Updater for "snaprotationangle" int -> float, so it stops fucking spamming
Rewrite font manager to not use filename, instead uses font family name like normal css
All ttf and otf font files are loaded from /fonts/ folder and mapped to
their font family name, weight, style.
This is likely to be a breaking change if you had weird named fonts.
Stop scene first person camera shaking from continuous quaternion <-> angle conversions
Move CodeGenerator to Sandbox.System
CodeGen: Set MemberIdent on wrapped properties
Rewrite to [ConCmd] [ConVar], use new codegen, make scene games able to use them
Load fonts from scene games filesystem too
Log when can't find font, should help some people debug
TransformControlWidget: Non-uniform scaling
Apply a depth bias to grid to stop z-fighting and make it render double sided
https://files.facepunch.com/matt/1b1511b1/sbox-dev_vUfVeC7hKH.png
TabWidget.AddPage allow optional null properly
Don't create a CVolumetricFogRenderer if enabled but there's no fog volumes
SceneCamera is disposable, CameraComponent disposes it OnDestroy(), frees native resources mainly volumetric fog clipmaps
Editor doesn't use volumetric clipmaps
Check scene fog volumes not legacy ones
Terrain shader includes in terrain folder
Terrain obeys its transform
https://files.facepunch.com/matt/1b1511b1/sbox-dev_a95eXdB3HZ.png