Spawn markers in level

This commit is contained in:
Marco 2025-09-18 10:52:22 +02:00
commit 4b65b25dcd
18 changed files with 335 additions and 197 deletions

View file

@ -1,4 +1,5 @@
using System.Linq;
using Cirno.Scripts.Actors._3D;
using Cirno.Scripts.Components.FSM._3DPlayer;
using Cirno.Scripts.Enums;
using Cirno.Scripts.Misc;
@ -223,17 +224,27 @@ public partial class GameController : Node
private Vector3 GetStartPosition()
{
if (MapResource != null)
{
if (SpawnMarkers.TryGetValue(EggStartIndex, out var spawnMarker))
{
var marker = GetNode<Node3D>(spawnMarker);
var spawners = GetTree().GetNodesInGroup("SpawnMarkers").Cast<PlayerStartMarker3D>().ToList();
return marker.Position; // Why position and not globalposition? I have no idea
}
if (spawners.Count == 0)
{
return Vector3.Zero;
}
var m = GetNode<Node3D>(SpawnMarkers.First().Value);
return m.GlobalPosition;
var spawnerToUse = spawners.FirstOrDefault(x => x.MarkerId == EggStartIndex) ?? spawners[0];
return spawnerToUse.GlobalPosition;
// if (MapResource != null)
// {
// if (SpawnMarkers.TryGetValue(EggStartIndex, out var spawnMarker))
// {
// var marker = GetNode<Node3D>(spawnMarker);
//
// return marker.Position; // Why position and not globalposition? I have no idea
// }
// }
//
// var m = GetNode<Node3D>(SpawnMarkers.First().Value);
// return m.GlobalPosition;
}
}