(07-23-2021, 12:28 PM)_Aka_ Wrote: 1- After digging in this subject, I see that ScanConnections is not set to be executed every frame. It is supposed to execute only when the hierarchy changes. Does your hierarchy change every frame?
Yes, because we're loading and unloading assets dynamically (the level is large). Right now we're using SECTR_Stream, but it's just additively loading scenes and terrains. But at edit time, obviously we're only changing the hierarchy every time we click the mouse, so not quite every frame.
(07-23-2021, 12:28 PM)_Aka_ Wrote:
2- I tested with 20k cubes, and ScanConnections did not show any significant CPU usage. Maybe it is because your game objects are way more complex?
Yes, I'd say that's right. But our use case would be typical of a modern open-world game. We try to keep the hierarchy as flat as possible but still any kind of FindAll() is going to take several milliseconds.
(07-23-2021, 12:28 PM)_Aka_ Wrote:
3- Here is an optimization to ScanConnections:
replace
CurvyConnection[] o = GameObject.FindObjectsOfType<CurvyConnection>();
with
CurvyConnection[] o = CurvyGlobalManager.Instance.GetComponentsInChildren<CurvyConnection>();
Since I couldn't reproduce the issue, I wasn't able to test how efficient this optimization is, but it is theoretically efficient. Can you please apply it on your project and tell me what was the result? Thanks
Sure, we'll give it a try.