quantum-space-buddies/QSB/WorldSync/WorldObject.cs
2022-08-02 16:53:11 -07:00

23 lines
863 B
C#

using Cysharp.Threading.Tasks;
using System.Threading;
using UnityEngine;
namespace QSB.WorldSync;
public abstract class WorldObject<T> : IWorldObject
where T : MonoBehaviour
{
public int ObjectId { get; init; }
MonoBehaviour IWorldObject.AttachedObject => AttachedObject;
public T AttachedObject { get; init; }
public string Name => AttachedObject ? AttachedObject.name : "<NullObject!>";
public override string ToString() => $"{ObjectId}:{GetType().Name} ({Name})";
public virtual async UniTask Init(CancellationToken ct) { }
public virtual void OnRemoval() { }
public virtual bool ShouldDisplayDebug() => QSBWorldSync.AllObjectsReady && AttachedObject && AttachedObject.gameObject.activeInHierarchy;
public virtual string ReturnLabel() => ToString();
public virtual void DisplayLines() { }
public virtual void SendInitialState(uint to) { }
}