generated from max/template-unity-project
ScenePartitionObject
- Loading - Partial loading - Saving
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
@ -24,5 +25,32 @@ namespace VertexColor.ScenePartition.Editor
|
||||
|
||||
return scenePath;
|
||||
}
|
||||
|
||||
public static SortedSet<uint> FindDeeplyLinkedObjects(SortedList<uint, ScenePartition> scenePartitions, uint partitionId)
|
||||
{
|
||||
SortedSet<uint> linkedObjects = new SortedSet<uint>();
|
||||
FindDeeplyLinkedObjectsRecursive(scenePartitions, partitionId, linkedObjects);
|
||||
return linkedObjects;
|
||||
}
|
||||
|
||||
private static void FindDeeplyLinkedObjectsRecursive(SortedList<uint, ScenePartition> scenePartitions, uint partitionId, SortedSet<uint> linkedObjects)
|
||||
{
|
||||
if (linkedObjects.Contains(partitionId)) return;
|
||||
if (!scenePartitions.TryGetValue(partitionId, out ScenePartition partition)) return;
|
||||
|
||||
linkedObjects.Add(partitionId);
|
||||
|
||||
foreach (uint reference in partition.references)
|
||||
{
|
||||
FindDeeplyLinkedObjectsRecursive(scenePartitions, reference, linkedObjects);
|
||||
if (scenePartitions.TryGetValue(reference, out ScenePartition referencedPartition))
|
||||
{
|
||||
foreach (uint subReference in referencedPartition.references)
|
||||
{
|
||||
FindDeeplyLinkedObjectsRecursive(scenePartitions, subReference, linkedObjects);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user