Files
BlockSpace-v1.5.0b/Assets/Scripts/Assembly-CSharp/BlockSpace/Nodes/NodeWorldDefaultSpawner.cs
T
2026-06-01 17:19:55 +02:00

58 lines
1.6 KiB
C#

using System.Collections.Generic;
using BlockSpace.Worlds;
using UnityEngine;
namespace BlockSpace.Nodes
{
public sealed class NodeWorldDefaultSpawner : MonoBehaviour
{
[SerializeField]
private NodeGraphManager nodeGraphManager;
[SerializeField]
private float startX;
[SerializeField]
private float y = 5f;
[SerializeField]
private float z = 10f;
[SerializeField]
private float xSpacing = 0.45f;
private void Reset()
{
nodeGraphManager = GetComponent<NodeGraphManager>();
}
public void EnsureDefaultNodesSpawnedIfEmpty(List<WorldGroupsCodec.WorldNodeRecord> nodeRecords, bool broadcast)
{
if (nodeGraphManager == null)
{
nodeGraphManager = GetComponent<NodeGraphManager>();
}
if (nodeGraphManager == null || (nodeRecords != null && nodeRecords.Count > 0) || nodeGraphManager.GetAllNodesSnapshot().Count > 0)
{
return;
}
List<NodeDefinition> allDefinitionsSnapshot = nodeGraphManager.GetAllDefinitionsSnapshot();
if (allDefinitionsSnapshot == null || allDefinitionsSnapshot.Count == 0)
{
return;
}
allDefinitionsSnapshot.Sort((NodeDefinition a, NodeDefinition b) => string.CompareOrdinal((a != null) ? a.name : string.Empty, (b != null) ? b.name : string.Empty));
float num = startX;
for (int num2 = 0; num2 < allDefinitionsSnapshot.Count; num2++)
{
NodeDefinition nodeDefinition = allDefinitionsSnapshot[num2];
if (!(nodeDefinition == null))
{
nodeGraphManager.SpawnNodeSystem(nodeDefinition, new Vector3(num, y, z), Quaternion.identity, broadcast);
num += xSpacing;
}
}
}
}
}