495 Commits over 123 Days - 0.17cph!
Add: new StringView utility
It's essentially a ReadOnlySpan that keeps alive it's referred-to string, and is able to be stored as a member variable. Only contains a smidgen of algorithms that are needed to use it as part of ServerBrowserList. Goal is to find out how much code we need to update to be able to eliminate most allocations in the browser refresh flow.
Tests: none
Merge: from main
Buildfix for camera shake
Buildfix: ifdef out ExplosionScreenBounceFade logic
Tests: built all target modes, all green
Buildfix: removing usused using declarations
Will trip up PC build
Tests: ran PC build locally
Buildfix: unexpose a variable
Leftover that I missed during cleanup, somehow tripped up the build.
Tests: Build in all modes - pass. Ran unit tests - pass
merge from Pool_Remove_FreeDynamic
Tests: ran new CompanionServerTests 10 times, all green
Bugfix: Close socket properly instead of aborting during test teardown
This is slower, but avoids tripping up the companion server that's polling on data and suddenly gets unexpected remote closure, triggering an exception.
Tests: ran the batch of tests 10 times, no failures
Merge: from main
When testing on main, suddenly discovered that 3rd test batch run would produce an error.
Tests: ran CompanionServerTests multiple times, 2 green batches, 1 red (on teardown) - will fix in next CL
Merge: From Main
Tests: Ran CompanionServerTests couple times, all green
Update: Treat Obsolete warnings as visible, potentially errors.
This allows us to clearly see when we have deprecation warnings. We can still clear the console if it's too spammy. Lastly, because they're treated as warnings and not flat-out-errors it allows us to control when we hard-deprecate via flag to [Obsolete].
Tests: marked a funciton as Obsolete - observed warnings instead of errors. Marked that func as obsolete-error - saw errors.
Merge: merge from main
Lets see how much extra work I got left now
Update: AssetStorage now respects compression settings for Save()
Originally it was doing nothing (because it picked a compression format as textureFormat, but then set textureCompression to Uncompressed), but now it'll try to compress on request. We only have 1 place where we attempted to compress the terrain normal map, but I'm disabling that explicitly (as it would lead to fudged normals).
Tests: Baked Heightmap on CraggyIsland - spat out the same formatted texture as before
Bugfix: Discard alpha channel for generated LUT
Originally it was saved as RGB24, but since my deprecation warning fix I re-enabled Alpha channel. This fixes it.
Tests: none, trivial change
Clean: Fixing depr warnings in Third Party/VertexToolsPro
- Adapted uncompressed texture pixel access, TextureImporterFormat -> TextureImporterCompression
- SceneView.onSceneGUIDelegate -> duringSceneGui
Holy guacamoly, it's there's no more deprecation warnings. Now to double check previous compression conversions, as I think I missed alpha channel handling in a couple places.
Tests: none, trivial changes
Clean: Fixing depr warnings in Third Party/PluginMaster
8 to go.
Tests: none, trivial changes
Clean: Fixing depr warnings in Third Party/CinematicEffects
10 to go
Tests: none, trivial changes
Clean: Fixing depr warnings in Assets/Editor
- Removed obsolete BuildOptions usage (they do nothing on native side)
- Using explicit EditorGUILayout.ObjectField with AllowSceneUsage parameter overload
- More PrefabUtility conversion
- TextureImporterFormat.AutomaticTruecolor -> TextureImporterCompression.Uncompressed
12 warnings to go.
Tests: none, trivial changes
Clean: Fixing depr warnings in Scripts/Audio
- Removed the method containing deprecated usage, as it was trying to call into a native method that no longer exists.
Tests: None, trivial change (no usage)
Bugfix: Prevent Scene2Prefab from always switching to default scene
I dingussed up in the previous commit by doing extra changes after testing. Reverted small part of the change because Scene handle becomes invalid when loading a new scene.
Tests: Ran "Locate Renderers with no LOD Components" - it returned back to original scene properly
Clean: Fixing depr warnings in Editor/Rust
- Added a bit of error checking to SceneToPrefabs to avoid accidents
- EditorApplication -> EditorSceneManager for all scene related work
- ListView event changes, onItemsChosen -> itemsChosen, onSelectionChange -> selectionChanged
27 warnings to go.
Tests: ran Scene2Prefab/Locate Renderers with no LOD Components - it detected a number of issues, so green. Other changes are trivial.
Clean: Fixing depr warnings in Scripts/Procedural
- EditorGUIUtility.LookLikeControls -> manual setting field and label widths
47 to go (I hope)
Tests: None, trivial changes
Bugfix: Reimplementing PowerLineWireUndo
Unity deprecated a couple Undo APIs that broke our utility, so replaced them with new API. Also upgraded PrefabUtility usage and nuked a couple unused public methods (since they used deprecated APIs).
Tests: Tested Undo-Redo when adding a new line on power line platform - works
Clean: Fixing depr warnings in LeavesBlowing.cs
- Also cleaned empty method
65 to go - I thought this was going to be 0, but turns out there's 65 more errors hiding, so the counter restarts
Tests: none, trivial changes
Clean: Fixing depr warnings in Rust.AI/
3 to go.
Tests: none, trivial changes
Clean: fixing depr warnings in Scripts/PostProcessing
Done by taking Unity's official repo upstream patches for our version of unity for these specific file segments. We should replace our source package via a core package.
5 to go.
Tests: Setup debug overlay for normals - still works (though wonky)
Clean: fixed depr warnings in Scripts/Analytics
Now outputs refresh rate as a decimal fraction
Tests: none, trivial change
Clean: fixing depr warnings in Scripts/Diagnostics
Now able to return 2GB+ values for dump convar. 8 to go.
Tests: Generated a dump, validated the padding is alright
Bugfix: KeyBindUI once more avoids modifying original prefab name
This got broken in 2018.3, about a year after our code submit. Also sneaking in depr fixing in UI/Main Menu
- Replaced obsolete PrefabUtils API calls in KeyBindUI
- WWW -> UnityWebRequest
10 errors to go
Tests: Checked main menu news still download and dispaly. checked KeyBinds prefab doesn't get polluted with bind names and options prefabs get renamed properly
Clean: Fixing depr warnings in Scripts/ConsoleCommands
`objects` and `textures` vars can return 2GB+ memory size values per object now.
- Application -> SceneManager
- refreshRate -> Round(refrestRateRatio.value)
14 to go
Tests: none, trivial changes
Clean: Fixing depr warnings in Scripts/ViewModel
- More ParticleSystem module usage
- Also removed obvious comments
19 to go - there's basically no more large groupings, so the CLs will continue to be small
Tests: none, trivial changes
Clean: Fixing depr warnings in Scripts/Client
- More ParticleSystem module usage
- Application -> SceneManager
23 to go
Tests: None, trivial changes
Clean: Fixing depr warnings in Scripts/Procedural
- Removal of dead Render.mateiralType
- Renderer.castShadows -> shadowCastingMode
- WWW -> UnityWebRequest
- Explicitly use default QueryParameters for a RaycastCommand
26 to go
Tests: None, trivial changes
BugFix: TerrainMeta now updates Terrain Material if it's missmatching
Unity's deprecation made it so that our validate-and-update logic broke with 2019.2 and it's been silently skipping it.
- Removed obsolete code (it always returned MaterialType.Custom)
- Updated Hapis TerrainConfig to reference Terrain.v3.Hapis material (so that new logic doesn't set the wrong material on validation)
Tests: Validated that all Release worlds have matching materials as in their TerrainConfig.
Clean: fixing depr warnings in Scripts/Effects
It's all just ParticleSystem module usage additions. 39 warnings to go.
Tests: none, trivial changes
Clean: fixing depr warnings in Scripts/Game/
- SceneToPrefab - using SaveAsPrefabAsset instead of ReplacePrefab
- More ClientRPC(RpcTarget) usage
- More ParticleSystem module usage
- CreatorGibSpawner now caches and restore entire Random state when changing seed
- prefabAssetPath -> assetPath
Tests: Tested SceneToPrefab workflow by building "water well" monument prefab - although it produced inconsistent diffs, original impl also did. Checked the generated prefab visually - it matched. Also walked through Unity's call tree - the controlling variables were the same.
About 55 left
Clean: fixing depr warnings in Scripts/Server
- Server performance can now report memory usage past 4GB
Tests: None, trivial changes
Clean: Fixing depr warnings in Scripts/Entity
- Deleted VehicleModuleSeating.EditorCopyIntoBaseVehicle - all prefabs had up-to-date seating (we can remove the field soon)
- Deleted not-referenced Casette.FailedNetworkFileRequest (been marked as "deleteme" for 3-4y)
- Converted more types to use IServerFileReceiver - Casette, Signage. Ran RPC codegen to clean up.
- More ParticleSystems module use
- More ClientRPC RpcTarget-overload usage
- BasePlayer - explicitly read/write u64s (was happening implicitly via obsolete api)
Tests: none, trivial changes
Clean: fixing depr warnings in Scripts/Util
- Part of AssetStorage clean added a warning when compression gets ignored (we only have 1 use case right now, Terrain normal maps)
- Remove TextureImporter obsolete field usage
- TextureImporter.linearTexture -> .sRGBTexture
- MeshRenderer.motionVectors -> .motionVectorGenerationMode
- More ParticleSystem module usage
98 warnings to go
Tests: None, trivial changes
Clean: fixed depr warnings in Assets/Prefabs
- RequestFileFromServer to use IServerFileReceiver overload + ran RPC codegen
- ClientPRCPlayer -> ClientRPC
- more using particle system modules directly
About 115 to go
Tests: checked bradley effects work, checked chainsaw effects work, checked photoframe drawing works
Clean: Fixing deprecation warnings in Content
Also did a drive-by on all the extra newlines
Tests: spawned a vehicle with the component, observed vfx in water
Clean: Fixed deprecation warnings in Third Party/Community package
Replaced obsolete RequestFileFromServer by implementing IServerFileReciever. Regenerated RPC codegen. Will need to update the public repo as well.
Tests: insufficient, booted up local session, but couldn't test the new API.
Clean: Fixing deprecated code in most of Third Party packages
- Removal of dead code dependent on SystemInfo.supportsImageEffects or SystemInfo.supportsRenderTextures
- Removal of MarkRestoreExpected calls
- Using ParticleSystem.MainModule to set multipliers
Tests: none, trivial changes
Clean: fixing deprecation warnings in Standard Assets
- Removed dead code around SystemInfo.supportsImageEffects
- Removed MarkRestoreExpected calls
- Use ParticleSystem's module to control multipliers
Tests: none, trivial changes
Clean: upgrade deprecated code in Plugins
- Replacing WWW with UnityWebRequest, also updated success checks to more generic versions
- Texture.Resize -> Texture.Reinitialize
- Mute deprecation warning when accessing a value (since we validate beforehand)
- EditorGUILayout.EnumMaskField -> EditorGUILayout.EnumFlagsField
Tests: Booted up local session - no new warnings/errors in logs, code took expected branches
Clean: Disable Obsolete warnings in TextMeshPro pkg
This is external package, so we should just ignore what happens in their pond.
Tests: none, trivial change
Update: Fixing deprecation warnings from obsolete Pool API use
Tests: none, trivial changes
Optim: Avoid unboxing in Pool.Free(ListDictionary)
Was reported by Clr Heap Allocation Analyzer and I missed it originally.
Tests: none, trivial change