mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-20 15:41:01 +00:00
new generic system
This commit is contained in:
parent
3887dd962e
commit
b44269fa86
@ -21,13 +21,7 @@ namespace QSB.ElevatorSync
|
||||
|
||||
private void OnSceneLoaded(OWScene scene, bool isInUniverse)
|
||||
{
|
||||
_elevators = Resources.FindObjectsOfTypeAll<Elevator>().ToList();
|
||||
for (var id = 0; id < _elevators.Count; id++)
|
||||
{
|
||||
var qsbElevator = QSBWorldSync.GetWorldObject<QSBElevator>(id) ?? new QSBElevator();
|
||||
qsbElevator.Init(_elevators[id], id);
|
||||
QSBWorldSync.AddWorldObject(qsbElevator);
|
||||
}
|
||||
QSBWorldSync.Init<QSBElevator, Elevator>(ref _elevators);
|
||||
}
|
||||
|
||||
public int GetId(Elevator elevator) => _elevators.IndexOf(elevator);
|
||||
|
@ -21,7 +21,7 @@ namespace QSB.ElevatorSync.Events
|
||||
|
||||
public override void OnReceiveRemote(bool server, BoolWorldObjectMessage message)
|
||||
{
|
||||
var elevator = QSBWorldSync.GetWorldObject<QSBElevator>(message.ObjectId);
|
||||
var elevator = QSBWorldSync.GetWorldObject<QSBElevator, Elevator>(message.ObjectId);
|
||||
elevator?.RemoteCall(message.State);
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ using UnityEngine;
|
||||
|
||||
namespace QSB.ElevatorSync
|
||||
{
|
||||
public class QSBElevator : WorldObject
|
||||
public class QSBElevator : WorldObject<Elevator>
|
||||
{
|
||||
private Elevator _elevator;
|
||||
private Vector3 _startLocalPos;
|
||||
@ -14,7 +14,7 @@ namespace QSB.ElevatorSync
|
||||
private OWAudioSource _owAudioSourceOneShot;
|
||||
private OWAudioSource _owAudioSourceLP;
|
||||
|
||||
public void Init(Elevator elevator, int id)
|
||||
public override void Init(Elevator elevator, int id)
|
||||
{
|
||||
_elevator = elevator;
|
||||
ObjectId = id;
|
||||
|
@ -22,7 +22,7 @@ namespace QSB.GeyserSync.Events
|
||||
|
||||
public override void OnReceiveRemote(bool server, BoolWorldObjectMessage message)
|
||||
{
|
||||
var geyser = QSBWorldSync.GetWorldObject<QSBGeyser>(message.ObjectId);
|
||||
var geyser = QSBWorldSync.GetWorldObject<QSBGeyser, GeyserController>(message.ObjectId);
|
||||
geyser?.SetState(message.State);
|
||||
}
|
||||
}
|
||||
|
@ -18,16 +18,8 @@ namespace QSB.GeyserSync
|
||||
QSBPatchManager.OnPatchType -= OnPatchType;
|
||||
}
|
||||
|
||||
private void OnSceneLoaded(OWScene scene, bool isInUniverse)
|
||||
{
|
||||
var geyserControllers = Resources.FindObjectsOfTypeAll<GeyserController>();
|
||||
for (var id = 0; id < geyserControllers.Length; id++)
|
||||
{
|
||||
var qsbGeyser = QSBWorldSync.GetWorldObject<QSBGeyser>(id) ?? new QSBGeyser();
|
||||
qsbGeyser.Init(geyserControllers[id], id);
|
||||
QSBWorldSync.AddWorldObject(qsbGeyser);
|
||||
}
|
||||
}
|
||||
private void OnSceneLoaded(OWScene scene, bool isInUniverse)
|
||||
=> QSBWorldSync.Init<QSBGeyser, GeyserController>();
|
||||
|
||||
public void OnPatchType(QSBPatchTypes type)
|
||||
{
|
||||
|
@ -1,20 +1,20 @@
|
||||
using QSB.Events;
|
||||
using QSB.WorldSync;
|
||||
using QuantumUNET;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.GeyserSync
|
||||
{
|
||||
public class QSBGeyser : WorldObject
|
||||
public class QSBGeyser : WorldObject<GeyserController>
|
||||
{
|
||||
private GeyserController _geyserController;
|
||||
|
||||
public void Init(GeyserController geyserController, int id)
|
||||
public override void Init(GeyserController geyserController, int id)
|
||||
{
|
||||
ObjectId = id;
|
||||
_geyserController = geyserController;
|
||||
|
||||
geyserController.OnGeyserActivateEvent += () => HandleEvent(true);
|
||||
geyserController.OnGeyserDeactivateEvent += () => HandleEvent(false);
|
||||
_geyserController.OnGeyserActivateEvent += () => HandleEvent(true);
|
||||
_geyserController.OnGeyserDeactivateEvent += () => HandleEvent(false);
|
||||
}
|
||||
|
||||
private void HandleEvent(bool state)
|
||||
|
@ -22,7 +22,7 @@ namespace QSB.OrbSync.Events
|
||||
|
||||
public override void OnReceiveRemote(bool server, OrbSlotMessage message)
|
||||
{
|
||||
var orbSlot = QSBWorldSync.GetWorldObject<QSBOrbSlot>(message.SlotId);
|
||||
var orbSlot = QSBWorldSync.GetWorldObject<QSBOrbSlot, NomaiInterfaceSlot>(message.SlotId);
|
||||
orbSlot?.SetState(message.SlotState, message.OrbId);
|
||||
}
|
||||
}
|
||||
|
@ -15,15 +15,8 @@ namespace QSB.OrbSync
|
||||
|
||||
private void BuildOrbSlots()
|
||||
{
|
||||
QSBWorldSync.RemoveWorldObjects<QSBOrbSlot>();
|
||||
var orbSlots = Resources.FindObjectsOfTypeAll<NomaiInterfaceSlot>();
|
||||
for (var id = 0; id < orbSlots.Length; id++)
|
||||
{
|
||||
var qsbOrbSlot = QSBWorldSync.GetWorldObject<QSBOrbSlot>(id) ?? new QSBOrbSlot();
|
||||
qsbOrbSlot.Init(orbSlots[id], id);
|
||||
}
|
||||
|
||||
DebugLog.DebugWrite($"Finished orb slot build with {orbSlots.Length} slots.", MessageType.Success);
|
||||
QSBWorldSync.RemoveWorldObjects<QSBOrbSlot, NomaiInterfaceSlot>();
|
||||
QSBWorldSync.Init<QSBOrbSlot, NomaiInterfaceSlot>();
|
||||
}
|
||||
|
||||
public void BuildOrbs()
|
||||
|
@ -4,17 +4,16 @@ using QSB.WorldSync;
|
||||
|
||||
namespace QSB.OrbSync
|
||||
{
|
||||
public class QSBOrbSlot : WorldObject
|
||||
public class QSBOrbSlot : WorldObject<NomaiInterfaceSlot>
|
||||
{
|
||||
public NomaiInterfaceSlot InterfaceSlot { get; private set; }
|
||||
public bool Activated { get; private set; }
|
||||
|
||||
private bool _initialized;
|
||||
|
||||
public void Init(NomaiInterfaceSlot slot, int id)
|
||||
public override void Init(NomaiInterfaceSlot slot, int id)
|
||||
{
|
||||
ObjectId = id;
|
||||
InterfaceSlot = slot;
|
||||
AttachedObject = slot;
|
||||
_initialized = true;
|
||||
QSBWorldSync.AddWorldObject(this);
|
||||
}
|
||||
@ -34,9 +33,9 @@ namespace QSB.OrbSync
|
||||
return;
|
||||
}
|
||||
var occOrb = state ? QSBWorldSync.OldOrbList[orbId] : null;
|
||||
InterfaceSlot.SetValue("_occupyingOrb", occOrb);
|
||||
AttachedObject.SetValue("_occupyingOrb", occOrb);
|
||||
var ev = state ? "OnSlotActivated" : "OnSlotDeactivated";
|
||||
QSBWorldSync.RaiseEvent(InterfaceSlot, ev);
|
||||
QSBWorldSync.RaiseEvent(AttachedObject, ev);
|
||||
Activated = state;
|
||||
}
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ namespace QSB.Player.Events
|
||||
{
|
||||
return;
|
||||
}
|
||||
var sector = QSBWorldSync.GetWorldObject<QSBSector>(message.ObjectId);
|
||||
var sector = QSBWorldSync.GetWorldObject<QSBSector, Sector>(message.ObjectId);
|
||||
|
||||
if (sector == null)
|
||||
{
|
||||
|
@ -206,10 +206,10 @@ namespace QSB
|
||||
|
||||
QSBPlayerManager.RemoveAllPlayers();
|
||||
|
||||
QSBWorldSync.RemoveWorldObjects<QSBOrbSlot>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBElevator>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBGeyser>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBSector>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBOrbSlot, NomaiInterfaceSlot>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBElevator, Elevator>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBGeyser, GeyserController>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBSector, Sector>();
|
||||
QSBWorldSync.OrbSyncList.Clear();
|
||||
QSBWorldSync.OldDialogueTrees.Clear();
|
||||
|
||||
@ -241,10 +241,10 @@ namespace QSB
|
||||
DebugLog.ToConsole("Server stopped!", MessageType.Info);
|
||||
QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove());
|
||||
|
||||
QSBWorldSync.RemoveWorldObjects<QSBOrbSlot>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBElevator>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBGeyser>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBSector>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBOrbSlot, NomaiInterfaceSlot>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBElevator, Elevator>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBGeyser, GeyserController>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBSector, Sector>();
|
||||
|
||||
base.OnStopServer();
|
||||
}
|
||||
|
@ -28,8 +28,8 @@ namespace QSB.QuantumSync.Events
|
||||
{
|
||||
return;
|
||||
}
|
||||
var obj = QSBWorldSync.GetWorldObject<QSBSocketedQuantumObject>(message.ObjectId).AttachedObject;
|
||||
var socket = QSBWorldSync.GetWorldObject<QSBQuantumSocket>(message.SocketId).AttachedSocket;
|
||||
var obj = QSBWorldSync.GetWorldObject<QSBSocketedQuantumObject, SocketedQuantumObject>(message.ObjectId).AttachedObject;
|
||||
var socket = QSBWorldSync.GetWorldObject<QSBQuantumSocket, QuantumSocket>(message.SocketId).AttachedSocket;
|
||||
obj.GetType().GetMethod("MoveToSocket", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(obj, new object[] { socket });
|
||||
obj.transform.localRotation = message.LocalRotation;
|
||||
}
|
||||
|
@ -1,6 +1,14 @@
|
||||
namespace QSB.QuantumSync
|
||||
using QSB.WorldSync;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.QuantumSync
|
||||
{
|
||||
internal class QSBMultiStateQuantumObject
|
||||
public class QSBMultiStateQuantumObject : WorldObject<MultiStateQuantumObject>
|
||||
{
|
||||
public override void Init(MultiStateQuantumObject attachedObject, int id)
|
||||
{
|
||||
ObjectId = id;
|
||||
AttachedObject = attachedObject;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,11 +3,11 @@ using QSB.WorldSync;
|
||||
|
||||
namespace QSB.QuantumSync
|
||||
{
|
||||
internal class QSBQuantumSocket : WorldObject
|
||||
internal class QSBQuantumSocket : WorldObject<QuantumSocket>
|
||||
{
|
||||
public QuantumSocket AttachedSocket { get; private set; }
|
||||
|
||||
public void Init(QuantumSocket quantumSocket, int id)
|
||||
public override void Init(QuantumSocket quantumSocket, int id)
|
||||
{
|
||||
ObjectId = id;
|
||||
AttachedSocket = quantumSocket;
|
||||
|
@ -2,11 +2,9 @@
|
||||
|
||||
namespace QSB.QuantumSync
|
||||
{
|
||||
internal class QSBSocketedQuantumObject : WorldObject
|
||||
internal class QSBSocketedQuantumObject : WorldObject<SocketedQuantumObject>
|
||||
{
|
||||
public SocketedQuantumObject AttachedObject { get; private set; }
|
||||
|
||||
public void Init(SocketedQuantumObject quantumObject, int id)
|
||||
public override void Init(SocketedQuantumObject quantumObject, int id)
|
||||
{
|
||||
ObjectId = id;
|
||||
AttachedObject = quantumObject;
|
||||
|
@ -1,4 +1,5 @@
|
||||
using QSB.WorldSync;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
@ -10,6 +11,7 @@ namespace QSB.QuantumSync
|
||||
public static QuantumManager Instance { get; private set; }
|
||||
|
||||
private List<SocketedQuantumObject> _socketedQuantumObjects;
|
||||
private List<MultiStateQuantumObject> _multiStateQuantumObjects;
|
||||
private List<QuantumSocket> _quantumSockets;
|
||||
|
||||
public void Awake()
|
||||
@ -18,26 +20,17 @@ namespace QSB.QuantumSync
|
||||
QSBSceneManager.OnSceneLoaded += OnSceneLoaded;
|
||||
}
|
||||
|
||||
public void OnDestroy() => QSBSceneManager.OnSceneLoaded -= OnSceneLoaded;
|
||||
|
||||
private void OnSceneLoaded(OWScene scene, bool isInUniverse)
|
||||
{
|
||||
_socketedQuantumObjects = Resources.FindObjectsOfTypeAll<SocketedQuantumObject>().ToList();
|
||||
for (var id = 0; id < _socketedQuantumObjects.Count; id++)
|
||||
{
|
||||
var qsbSocketQuantumObj = QSBWorldSync.GetWorldObject<QSBSocketedQuantumObject>(id) ?? new QSBSocketedQuantumObject();
|
||||
qsbSocketQuantumObj.Init(_socketedQuantumObjects[id], id);
|
||||
QSBWorldSync.AddWorldObject(qsbSocketQuantumObj);
|
||||
}
|
||||
|
||||
_quantumSockets = Resources.FindObjectsOfTypeAll<QuantumSocket>().ToList();
|
||||
for (var id = 0; id < _quantumSockets.Count; id++)
|
||||
{
|
||||
var qsbQuantumSocket = QSBWorldSync.GetWorldObject<QSBQuantumSocket>(id) ?? new QSBQuantumSocket();
|
||||
qsbQuantumSocket.Init(_quantumSockets[id], id);
|
||||
QSBWorldSync.AddWorldObject(qsbQuantumSocket);
|
||||
}
|
||||
QSBWorldSync.Init<QSBSocketedQuantumObject, SocketedQuantumObject>(ref _socketedQuantumObjects);
|
||||
QSBWorldSync.Init<QSBQuantumSocket, QuantumSocket>(ref _quantumSockets);
|
||||
QSBWorldSync.Init<QSBMultiStateQuantumObject, MultiStateQuantumObject>(ref _multiStateQuantumObjects);
|
||||
}
|
||||
|
||||
public int GetId(SocketedQuantumObject obj) => _socketedQuantumObjects.IndexOf(obj);
|
||||
public int GetId(MultiStateQuantumObject obj) => _multiStateQuantumObjects.IndexOf(obj);
|
||||
public int GetId(QuantumSocket obj) => _quantumSockets.IndexOf(obj);
|
||||
}
|
||||
}
|
@ -3,18 +3,17 @@ using UnityEngine;
|
||||
|
||||
namespace QSB.SectorSync
|
||||
{
|
||||
public class QSBSector : WorldObject
|
||||
public class QSBSector : WorldObject<Sector>
|
||||
{
|
||||
public Sector Sector { get; private set; }
|
||||
public Sector.Name Type => Sector.GetName();
|
||||
public string Name => Sector.name;
|
||||
public Transform Transform => Sector.transform;
|
||||
public Sector.Name Type => AttachedObject.GetName();
|
||||
public string Name => AttachedObject.name;
|
||||
public Transform Transform => AttachedObject.transform;
|
||||
public Vector3 Position => Transform.position;
|
||||
|
||||
public void Init(Sector sector, int id)
|
||||
public override void Init(Sector sector, int id)
|
||||
{
|
||||
Sector = sector;
|
||||
ObjectId = id;
|
||||
AttachedObject = sector;
|
||||
}
|
||||
}
|
||||
}
|
@ -29,11 +29,11 @@ namespace QSB.SectorSync
|
||||
public void RebuildSectors()
|
||||
{
|
||||
DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning);
|
||||
QSBWorldSync.RemoveWorldObjects<QSBSector>();
|
||||
QSBWorldSync.RemoveWorldObjects<QSBSector, Sector>();
|
||||
var sectors = Resources.FindObjectsOfTypeAll<Sector>().ToList();
|
||||
for (var id = 0; id < sectors.Count; id++)
|
||||
{
|
||||
var qsbSector = QSBWorldSync.GetWorldObject<QSBSector>(id) ?? new QSBSector();
|
||||
var qsbSector = QSBWorldSync.GetWorldObject<QSBSector, Sector>(id) ?? new QSBSector();
|
||||
qsbSector.Init(sectors[id], id);
|
||||
QSBWorldSync.AddWorldObject(qsbSector);
|
||||
}
|
||||
@ -43,7 +43,7 @@ namespace QSB.SectorSync
|
||||
public QSBSector GetClosestSector(Transform trans) // trans rights \o/
|
||||
{
|
||||
return QSBWorldSync.GetWorldObjects<QSBSector>()
|
||||
.Where(sector => sector.Sector != null
|
||||
.Where(sector => sector.AttachedObject != null
|
||||
&& !_sectorBlacklist.Contains(sector.Type)
|
||||
&& sector.Transform.gameObject.activeInHierarchy)
|
||||
.OrderBy(sector => Vector3.Distance(sector.Position, trans.position))
|
||||
|
@ -63,7 +63,7 @@ namespace QSB.TransformSync
|
||||
DebugLog.ToConsole($"DisabledSocket is null for {AttachedNetId}! (ProbeLauncher null? : {Player.ProbeLauncher == null})", MessageType.Error);
|
||||
return;
|
||||
}
|
||||
if (Player.GetState(State.ProbeActive) || ReferenceSector?.Sector == null)
|
||||
if (Player.GetState(State.ProbeActive) || ReferenceSector?.AttachedObject == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -86,7 +86,7 @@ namespace QSB.TransformSync
|
||||
{
|
||||
if (HasAuthority) // If this script is attached to the client's own body on the client's side.
|
||||
{
|
||||
if (ReferenceSector == null || ReferenceSector.Sector == null)
|
||||
if (ReferenceSector == null || ReferenceSector.AttachedObject == null)
|
||||
{
|
||||
DebugLog.ToConsole($"Error - ReferenceSector has null value for {Player.PlayerId}.{GetType().Name}", MessageType.Error);
|
||||
return;
|
||||
|
@ -3,9 +3,11 @@ using QSB.OrbSync;
|
||||
using QSB.TransformSync;
|
||||
using QSB.Utility;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.WorldSync
|
||||
{
|
||||
@ -17,36 +19,43 @@ namespace QSB.WorldSync
|
||||
public static Dictionary<string, bool> DialogueConditions { get; } = new Dictionary<string, bool>();
|
||||
public static List<FactReveal> ShipLogFacts { get; } = new List<FactReveal>();
|
||||
|
||||
private static readonly List<WorldObject> WorldObjects = new List<WorldObject>();
|
||||
private static readonly List<object> WorldObjects = new List<object>();
|
||||
|
||||
public static void AddWorldObject(WorldObject worldObject)
|
||||
public static void AddWorldObject(object worldObject)
|
||||
{
|
||||
if (WorldObjects.Contains(worldObject))
|
||||
{
|
||||
return;
|
||||
}
|
||||
DebugLog.DebugWrite($"adding {worldObject.GetType().Name}");
|
||||
WorldObjects.Add(worldObject);
|
||||
}
|
||||
|
||||
public static IEnumerable<T> GetWorldObjects<T>() => WorldObjects.OfType<T>();
|
||||
|
||||
public static T GetWorldObject<T>(int id) where T : WorldObject => GetWorldObjects<T>().FirstOrDefault(x => x.ObjectId == id);
|
||||
public static T GetWorldObject<T, U>(int id) where T : WorldObject<U> where U : UnityEngine.Object
|
||||
=> GetWorldObjects<T>().FirstOrDefault(x => x.ObjectId == id);
|
||||
|
||||
public static void RemoveWorldObjects<T>() where T : WorldObject => WorldObjects.RemoveAll(x => x.GetType() == typeof(T));
|
||||
public static void RemoveWorldObjects<T, U>() where T : WorldObject<U> where U : UnityEngine.Object
|
||||
=> WorldObjects.RemoveAll(x => x.GetType() == typeof(T));
|
||||
|
||||
public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state)
|
||||
public static void Init<QSBType, BaseType>(ref List<BaseType> list)
|
||||
where QSBType : WorldObject<BaseType>
|
||||
where BaseType : UnityEngine.Object
|
||||
=> list = Init<QSBType, BaseType>();
|
||||
|
||||
public static List<BaseType> Init<QSBType, BaseType>()
|
||||
where QSBType : WorldObject<BaseType>
|
||||
where BaseType : UnityEngine.Object
|
||||
{
|
||||
var slotList = GetWorldObjects<QSBOrbSlot>().ToList();
|
||||
if (!slotList.Any())
|
||||
var list = Resources.FindObjectsOfTypeAll<BaseType>().ToList();
|
||||
for (var id = 0; id < list.Count; id++)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var qsbSlot = slotList.First(x => x.InterfaceSlot == slot);
|
||||
var orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb);
|
||||
if (orbSync.HasAuthority)
|
||||
{
|
||||
qsbSlot.HandleEvent(state, OldOrbList.IndexOf(affectingOrb));
|
||||
var obj = GetWorldObject<QSBType, BaseType>(id) ?? (QSBType)Activator.CreateInstance(typeof(QSBType));
|
||||
obj.Init(list[id], id);
|
||||
AddWorldObject(obj);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public static void RaiseEvent(object instance, string eventName)
|
||||
@ -64,6 +73,21 @@ namespace QSB.WorldSync
|
||||
}
|
||||
}
|
||||
|
||||
public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state)
|
||||
{
|
||||
var slotList = GetWorldObjects<QSBOrbSlot>().ToList();
|
||||
if (!slotList.Any())
|
||||
{
|
||||
return;
|
||||
}
|
||||
var qsbSlot = slotList.First(x => x.AttachedObject == slot);
|
||||
var orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb);
|
||||
if (orbSync.HasAuthority)
|
||||
{
|
||||
qsbSlot.HandleEvent(state, OldOrbList.IndexOf(affectingOrb));
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetDialogueCondition(string name, bool state)
|
||||
{
|
||||
if (!QSBCore.IsServer)
|
||||
|
@ -1,7 +1,10 @@
|
||||
namespace QSB.WorldSync
|
||||
{
|
||||
public class WorldObject
|
||||
public abstract class WorldObject<T> where T : UnityEngine.Object
|
||||
{
|
||||
public int ObjectId { get; protected set; }
|
||||
public T AttachedObject { get; protected set; }
|
||||
|
||||
public abstract void Init(T attachedObject, int id);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user