3,108 Commits over 915 Days - 0.14cph!
Fix compile errors when putting editor in SERVER mode
- only allow SceneToPrefab to work when in CLIENT + SERVER mode (it only required CLIENT before)
merge from monument_scenes -> aux2
Scene2Scene every monument
Store prefab's path inside ScenePrefab
- used for PreProcess: not convinced it's critical but good to include
Add ability to toggle the feature on and off (until it's stable)
- convar `monument_scenes` turns it off (default enabled)
- add '_scene' onto end of cut-down prefab
- remap large monument prefab -> cut-down prefab when spawning & the convar is enabled
merge from main -> monument_scenes
Fix build compile errors
Fix loading scene by path instead of by name in standalone builds
Scene2Prefab will output prefabs disabled so monuments can be moved to correct position before OnEnable() is called
- enable the prefab once the monument scene is loaded
Package all monument scenes into `monument_scenes.bundle`
Keep components attached to AddToHeightMap and AddToWaterMap
Delete components in one sweep instead of as we are iterating through components
- also allows us to mark components as required by other components
merge from main -> monument_scenes
merge from analytics_dump_hierachy_formatting -> main
Fix components incorrectly marked as "unsupported" for enabling/disabling
- renderers
- particle systems
- LODGroup
merge from analytics_dump_hierarchy_formatting -> main
merge from analytics_asset_warmup -> main
Add ability to see what is enabled vs disabled for `GameObject.Hierarchy.Components.txt` from `dump` command
- Components show a checkmark if enabled vs disabled, they show a `~` if the component doesn't support enabling
- GameObjects show a `+` if active & `-` if disabled
Add asset warmup & world spawn timings to `dump` command
- output to csv so it can be opened in excel
- don't output if there are zero data points
- reset the world spawn timing every time a new map is loaded
- Asset.Warmup.csv
- World.Spawn.csv
Merge from fix_unity_hook -> main
Move LagSpikeProfiler.enabled into the record method
Show editor's email instead of the server name when in the editor (so it's easier to select a server in grafana)
Move uploader creation into it's own method EnssureUploadersCreated()
Ensure invokes are reset when we start recording so we don't get the cumulative stats since startup
Move Reset() methods outside of serialize methods
Improve readability of code
- move try catch & "enabled" check into each Serialize() method
- move some Serialize() methods into their profiler classes
- set default enabled state in each profiler so the convars reflect what is turned on
Add convars to all of profiling analytics
- profiling_server to enable / disable feature (instead of relying on if upload url is provided)
- profiling_{feature} for each part we measure
Fix unity hook not working by moving it from GameSetup -> Bootstrap
Include "reserved" in serverinfo to see how many reserved slots are active
Add `print_reserved_slots` to see how much time each reserved slot has left
▆▊█▄▅▉ ▋▍▅▊▄▉▄▇▄_▇▌▆██▊▄▌▋▄▇▆▌▋▍▊▄ ▅▇ ▉▍▊▇▍ ▇▇▇▉▌▆▍▊▄ ▋▆▆▅▍▋ ▇▆▌▊▄▋▇ ▌▅▆▍▍▇▊▋▅▋█ ▆▅▅▆█▍▉
- ▅▋▅ ▅▉ ▋▉▅ ▇ ▄▇▄▄▇▆▄█▅▆ & ▍▆▉▍▆ "▉█▋▌▌▉▅▋▌▄▌▄" ▅▋▊▉▇▌▄▊█▅▊ ▄▄▄▊▄▅
Commit marking more components as [MapGeneration]
Add progress of how many monuments are left when running S2P on every single monument
Implement running PreProcess at runtime on each prefab in the scene
Add support for shared scenes that have client + server components in them
- avoids adding complexity of running preprocess at build time to first release
- handles editor only spawning a single monument
- keep support for client only & server only scenes
- default to only building shared scenes rather than individual client & server scenes
- run preprocess at runtime for shared scenes instead of during build
- internally refered to as "generic" scenes because "shared" is easy to mix up with "server"
Output both scenes when running Scene2Prefab/Update All as well as the prefab
Mark more components as [MapGeneration]
Implement spawning in a scene when a monument's prefab is spawned in the world
- async loads the scene
- supports multiple scenes with same name loading at once
- unloads the scene when the monument's prefab is destroyed
- keep track of both server & client version of the prefab
Tag more components as [MapGeneration]
Allow MapGeneration to overwrite delete status (to delete MaterialSetup)
Automatically enable scene output mode if the scene represents a monument
- only enable it when running Scene2Prefab/Update All
Add ScenePrefab before removing components from output prefab
Fix compile errors
Do multiple delete passes to ensure [Required] components get deleted (as it's easier than tracking everything that is required & only done inside editor)
Mark TerrainAnchor and TerrainModified with [MapGeneration]
Cleanup for a bit more readability
Start processing output prefab in scene mode
- remove everything except for terrain generation components
- add MapGeneration attribute to tag components we want to keep
- add ScenePrefab spawner onto the output prefab once S2P is done
Add some context menu tools to calculate amount of components
- "Stats/Transform Count" shows amount of transforms and components for each selected object in heirarchy
- "Stats/Hierarchy" prints amount of gameobjects at each depth
Add ability for SceneToPrefab to output to a scene instead of a prefab
- output prefab identical to normal S2P
- after runs PreProcess on the output prefab's scene so it doesn't need to be ran during startup
- create a seperate scene for the client vs server version of the "prefab"
- can view all 3 versions of the monument / prefab at once (editor, server, client)
- applies label 'PrefabScene' in output scene
- way faster than normal S2P
Fix the pie menu not starting off at a diagonal after changes to hammer pie menu
Manually mark seeds & ladders as "don't show monument building blocked"
Keep showing monument building blocked outline for prefabs that can bypass building privledge (floors, ladders)
- instead manually mark every prefab that shouldn't show an outline
Fix teammate building guide staying visible after the teammate has disconnected
Try catch serialization so 1 error doesn't stop the entire thing from working
Fix runtime profiling hooks not being called on the server (due to UpdateHandler only bein on client)
- move hooks from UpdaetHandler -> UnityHookHandler
- ensure hooks get created in bootstrap
Fix reserved slots not being added to list when created
Fixed convar defaulting to disabled instead of enabled
Also make sure the renderer is disabled on startup
Instead of leaving largest collider null, remove from the static list