This commit is contained in:
2025-07-16 23:04:04 +02:00
parent 5751cfec80
commit c8b66ed3af
212 changed files with 9332 additions and 1812 deletions

View File

@@ -0,0 +1,52 @@
using RebootKit.Engine.Main;
using RebootKit.Engine.Simulation;
using UnityEngine;
using UnityEngine.AddressableAssets;
using Logger = RebootKit.Engine.Foundation.Logger;
namespace RebootReality.jelycho {
public class ActorSpawner : Actor {
static readonly Logger s_Logger = new Logger(nameof(ActorSpawner));
[SerializeField] AssetReferenceGameObject m_ActorPrefabReference;
[TriInspector.InfoBox("If empty will use this object transform as spawn point.")]
[SerializeField] Transform[] m_SpawnPoints;
protected override IActorData CreateActorData() {
return new NoActorData();
}
protected override void OnActorCommandServer(ActorCommand actorCommand) {
base.OnActorCommandServer(actorCommand);
if (actorCommand.CommandID == (ushort) ActorSpawnerCommands.SpawnActor) {
(Vector3 spawnPoint, Quaternion spawnRotation) = GetSpawnPoint();
RR.SpawnActor(m_ActorPrefabReference, spawnPoint, spawnRotation);
}
}
public void SpawnActor() {
if (m_ActorPrefabReference == null) {
s_Logger.Error("ActorPrefabReference is not set. Cannot spawn actor.");
return;
}
SendActorCommand((ushort) ActorSpawnerCommands.SpawnActor);
}
(Vector3, Quaternion) GetSpawnPoint() {
if (m_SpawnPoints.Length == 0) {
return (transform.position, transform.rotation);
}
int index = Random.Range(0, m_SpawnPoints.Length);
return (m_SpawnPoints[index].position, m_SpawnPoints[index].rotation);
}
}
public enum ActorSpawnerCommands : ushort {
None = 0x0000,
SpawnActor = 0x0001,
}
}