stuff
This commit is contained in:
52
Assets/jelycho/Code/ActorSpawner.cs
Normal file
52
Assets/jelycho/Code/ActorSpawner.cs
Normal 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,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user