mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-04 03:39:55 +00:00
world objects dont need to know their manager. make GetWorldObjects to get all world objects from QSBWorldSync
This commit is contained in:
parent
6c30104951
commit
d030d9746f
@ -14,7 +14,7 @@ namespace QSB.Anglerfish
|
||||
{
|
||||
Anglers.Clear();
|
||||
Anglers.AddRange(QSBWorldSync.GetUnityObjects<AnglerfishController>());
|
||||
QSBWorldSync.Init<QSBAngler, AnglerfishController>(Anglers, this);
|
||||
QSBWorldSync.Init<QSBAngler, AnglerfishController>(Anglers);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,12 +10,12 @@ namespace QSB.Animation.NPC
|
||||
|
||||
protected override void RebuildWorldObjects(OWScene scene)
|
||||
{
|
||||
QSBWorldSync.Init<QSBCharacterAnimController, CharacterAnimController>(this);
|
||||
QSBWorldSync.Init<QSBTravelerController, TravelerController>(this);
|
||||
QSBWorldSync.Init<QSBSolanumController, NomaiConversationManager>(this);
|
||||
QSBWorldSync.Init<QSBSolanumAnimController, SolanumAnimController>(this);
|
||||
QSBWorldSync.Init<QSBHearthianRecorderEffects, HearthianRecorderEffects>(this);
|
||||
QSBWorldSync.Init<QSBTravelerEyeController, TravelerEyeController>(this);
|
||||
QSBWorldSync.Init<QSBCharacterAnimController, CharacterAnimController>();
|
||||
QSBWorldSync.Init<QSBTravelerController, TravelerController>();
|
||||
QSBWorldSync.Init<QSBSolanumController, NomaiConversationManager>();
|
||||
QSBWorldSync.Init<QSBSolanumAnimController, SolanumAnimController>();
|
||||
QSBWorldSync.Init<QSBHearthianRecorderEffects, HearthianRecorderEffects>();
|
||||
QSBWorldSync.Init<QSBTravelerEyeController, TravelerEyeController>();
|
||||
|
||||
//MOVE : this is the wrong place to put this... move it to Conversations?
|
||||
QSBWorldSync.OldDialogueTrees.Clear();
|
||||
|
@ -8,6 +8,6 @@ namespace QSB.CampfireSync
|
||||
public override WorldObjectType WorldObjectType => WorldObjectType.Both;
|
||||
|
||||
protected override void RebuildWorldObjects(OWScene scene)
|
||||
=> QSBWorldSync.Init<QSBCampfire, Campfire>(this);
|
||||
=> QSBWorldSync.Init<QSBCampfire, Campfire>();
|
||||
}
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ namespace QSB.ConversationSync
|
||||
}
|
||||
|
||||
protected override void RebuildWorldObjects(OWScene scene)
|
||||
=> QSBWorldSync.Init<QSBRemoteDialogueTrigger, RemoteDialogueTrigger>(this);
|
||||
=> QSBWorldSync.Init<QSBRemoteDialogueTrigger, RemoteDialogueTrigger>();
|
||||
|
||||
public uint GetPlayerTalkingToTree(CharacterDialogueTree tree)
|
||||
{
|
||||
|
@ -8,6 +8,6 @@ namespace QSB.EchoesOfTheEye.AirlockSync
|
||||
// is this used in the prisoner sequence in the eye?
|
||||
public override WorldObjectType WorldObjectType => WorldObjectType.SolarSystem;
|
||||
|
||||
protected override void RebuildWorldObjects(OWScene scene) => QSBWorldSync.Init<QSBGhostAirlock, GhostAirlock>(this);
|
||||
protected override void RebuildWorldObjects(OWScene scene) => QSBWorldSync.Init<QSBGhostAirlock, GhostAirlock>();
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,6 @@ namespace QSB.EchoesOfTheEye.LightSensorSync
|
||||
// see AirlockManager question
|
||||
public override WorldObjectType WorldObjectType => WorldObjectType.SolarSystem;
|
||||
|
||||
protected override void RebuildWorldObjects(OWScene scene) => QSBWorldSync.Init<QSBSingleLightSensor, SingleLightSensor>(this);
|
||||
protected override void RebuildWorldObjects(OWScene scene) => QSBWorldSync.Init<QSBSingleLightSensor, SingleLightSensor>();
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,6 @@ namespace QSB.ElevatorSync
|
||||
public override WorldObjectType WorldObjectType => WorldObjectType.SolarSystem;
|
||||
|
||||
protected override void RebuildWorldObjects(OWScene scene)
|
||||
=> QSBWorldSync.Init<QSBElevator, Elevator>(this);
|
||||
=> QSBWorldSync.Init<QSBElevator, Elevator>();
|
||||
}
|
||||
}
|
@ -8,6 +8,6 @@ namespace QSB.EyeOfTheUniverse.InstrumentSync
|
||||
public override WorldObjectType WorldObjectType => WorldObjectType.Eye;
|
||||
|
||||
protected override void RebuildWorldObjects(OWScene scene)
|
||||
=> QSBWorldSync.Init<QSBQuantumInstrument, QuantumInstrument>(this);
|
||||
=> QSBWorldSync.Init<QSBQuantumInstrument, QuantumInstrument>();
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,6 @@ namespace QSB.GeyserSync
|
||||
public override WorldObjectType WorldObjectType => WorldObjectType.SolarSystem;
|
||||
|
||||
protected override void RebuildWorldObjects(OWScene scene)
|
||||
=> QSBWorldSync.Init<QSBGeyser, GeyserController>(this);
|
||||
=> QSBWorldSync.Init<QSBGeyser, GeyserController>();
|
||||
}
|
||||
}
|
@ -15,20 +15,20 @@ namespace QSB.ItemSync
|
||||
DebugLog.DebugWrite("Rebuilding OWItems...", MessageType.Info);
|
||||
|
||||
// Items
|
||||
QSBWorldSync.Init<QSBScrollItem, ScrollItem>(this);
|
||||
QSBWorldSync.Init<QSBSharedStone, SharedStone>(this);
|
||||
QSBWorldSync.Init<QSBWarpCoreItem, WarpCoreItem>(this);
|
||||
QSBWorldSync.Init<QSBNomaiConversationStone, NomaiConversationStone>(this);
|
||||
QSBWorldSync.Init<QSBSimpleLanternItem, SimpleLanternItem>(this);
|
||||
QSBWorldSync.Init<QSBSlideReelItem, SlideReelItem>(this);
|
||||
QSBWorldSync.Init<QSBScrollItem, ScrollItem>();
|
||||
QSBWorldSync.Init<QSBSharedStone, SharedStone>();
|
||||
QSBWorldSync.Init<QSBWarpCoreItem, WarpCoreItem>();
|
||||
QSBWorldSync.Init<QSBNomaiConversationStone, NomaiConversationStone>();
|
||||
QSBWorldSync.Init<QSBSimpleLanternItem, SimpleLanternItem>();
|
||||
QSBWorldSync.Init<QSBSlideReelItem, SlideReelItem>();
|
||||
|
||||
// Sockets
|
||||
QSBWorldSync.Init<QSBScrollSocket, ScrollSocket>(this);
|
||||
QSBWorldSync.Init<QSBSharedStoneSocket, SharedStoneSocket>(this);
|
||||
QSBWorldSync.Init<QSBWarpCoreSocket, WarpCoreSocket>(this);
|
||||
QSBWorldSync.Init<QSBNomaiConversationStoneSocket, NomaiConversationStoneSocket>(this);
|
||||
QSBWorldSync.Init<QSBSlideReelSocket, SlideReelSocket>(this);
|
||||
QSBWorldSync.Init<QSBSlideProjectorSocket, SlideProjectorSocket>(this);
|
||||
QSBWorldSync.Init<QSBScrollSocket, ScrollSocket>();
|
||||
QSBWorldSync.Init<QSBSharedStoneSocket, SharedStoneSocket>();
|
||||
QSBWorldSync.Init<QSBWarpCoreSocket, WarpCoreSocket>();
|
||||
QSBWorldSync.Init<QSBNomaiConversationStoneSocket, NomaiConversationStoneSocket>();
|
||||
QSBWorldSync.Init<QSBSlideReelSocket, SlideReelSocket>();
|
||||
QSBWorldSync.Init<QSBSlideProjectorSocket, SlideProjectorSocket>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ namespace QSB.JellyfishSync
|
||||
{
|
||||
Jellyfish.Clear();
|
||||
Jellyfish.AddRange(QSBWorldSync.GetUnityObjects<JellyfishController>());
|
||||
QSBWorldSync.Init<QSBJellyfish, JellyfishController>(Jellyfish, this);
|
||||
QSBWorldSync.Init<QSBJellyfish, JellyfishController>(Jellyfish);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,9 +18,9 @@ namespace QSB.MeteorSync
|
||||
{
|
||||
FinishDelayedReady();
|
||||
WhiteHoleVolume = QSBWorldSync.GetUnityObjects<WhiteHoleVolume>().First();
|
||||
QSBWorldSync.Init<QSBMeteorLauncher, MeteorLauncher>(this);
|
||||
QSBWorldSync.Init<QSBMeteor, MeteorController>(this);
|
||||
QSBWorldSync.Init<QSBFragment, FragmentIntegrity>(this);
|
||||
QSBWorldSync.Init<QSBMeteorLauncher, MeteorLauncher>();
|
||||
QSBWorldSync.Init<QSBMeteor, MeteorController>();
|
||||
QSBWorldSync.Init<QSBFragment, FragmentIntegrity>();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ namespace QSB.OrbSync
|
||||
{
|
||||
Orbs.Clear();
|
||||
Orbs.AddRange(QSBWorldSync.GetUnityObjects<NomaiInterfaceOrb>());
|
||||
QSBWorldSync.Init<QSBOrb, NomaiInterfaceOrb>(Orbs, this);
|
||||
QSBWorldSync.Init<QSBOrb, NomaiInterfaceOrb>(Orbs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -33,13 +33,13 @@ namespace QSB.QuantumSync
|
||||
protected override void RebuildWorldObjects(OWScene scene)
|
||||
{
|
||||
DebugLog.DebugWrite("Rebuilding quantum objects...", MessageType.Info);
|
||||
QSBWorldSync.Init<QSBQuantumState, QuantumState>(this);
|
||||
QSBWorldSync.Init<QSBSocketedQuantumObject, SocketedQuantumObject>(this);
|
||||
QSBWorldSync.Init<QSBMultiStateQuantumObject, MultiStateQuantumObject>(this);
|
||||
QSBWorldSync.Init<QSBQuantumSocket, QuantumSocket>(this);
|
||||
QSBWorldSync.Init<QSBQuantumShuffleObject, QuantumShuffleObject>(this);
|
||||
QSBWorldSync.Init<QSBQuantumMoon, QuantumMoon>(this);
|
||||
QSBWorldSync.Init<QSBEyeProxyQuantumMoon, EyeProxyQuantumMoon>(this);
|
||||
QSBWorldSync.Init<QSBQuantumState, QuantumState>();
|
||||
QSBWorldSync.Init<QSBSocketedQuantumObject, SocketedQuantumObject>();
|
||||
QSBWorldSync.Init<QSBMultiStateQuantumObject, MultiStateQuantumObject>();
|
||||
QSBWorldSync.Init<QSBQuantumSocket, QuantumSocket>();
|
||||
QSBWorldSync.Init<QSBQuantumShuffleObject, QuantumShuffleObject>();
|
||||
QSBWorldSync.Init<QSBQuantumMoon, QuantumMoon>();
|
||||
QSBWorldSync.Init<QSBEyeProxyQuantumMoon, EyeProxyQuantumMoon>();
|
||||
if (scene == OWScene.SolarSystem)
|
||||
{
|
||||
Shrine = QSBWorldSync.GetUnityObjects<QuantumShrine>().First();
|
||||
|
@ -89,7 +89,7 @@ namespace QSB.SectorSync
|
||||
}
|
||||
}
|
||||
|
||||
QSBWorldSync.Init<QSBSector, Sector>(this);
|
||||
QSBWorldSync.Init<QSBSector, Sector>();
|
||||
IsReady = QSBWorldSync.GetWorldObjects<QSBSector>().Any();
|
||||
}
|
||||
|
||||
|
@ -91,8 +91,8 @@ namespace QSB.ShipSync
|
||||
Instantiate(QSBNetworkManager.Instance.ShipPrefab).SpawnWithServerAuthority();
|
||||
}
|
||||
|
||||
QSBWorldSync.Init<QSBShipComponent, ShipComponent>(this);
|
||||
QSBWorldSync.Init<QSBShipHull, ShipHull>(this);
|
||||
QSBWorldSync.Init<QSBShipComponent, ShipComponent>();
|
||||
QSBWorldSync.Init<QSBShipHull, ShipHull>();
|
||||
}
|
||||
|
||||
public void AddPlayerToShip(PlayerInfo player)
|
||||
|
@ -8,6 +8,6 @@ namespace QSB.Tools.ProbeLauncherTool
|
||||
public override WorldObjectType WorldObjectType => WorldObjectType.Both;
|
||||
|
||||
protected override void RebuildWorldObjects(OWScene scene)
|
||||
=> QSBWorldSync.Init<QSBProbeLauncher, ProbeLauncher>(this, typeof(PlayerProbeLauncher));
|
||||
=> QSBWorldSync.Init<QSBProbeLauncher, ProbeLauncher>(typeof(PlayerProbeLauncher));
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@ namespace QSB.Tools.TranslatorTool.TranslationSync
|
||||
QSBCore.UnityEvents.RunWhen(() => LateInitializerManager.isDoneInitializing, () =>
|
||||
{
|
||||
FinishDelayedReady();
|
||||
QSBWorldSync.Init<QSBNomaiText, NomaiText>(this, typeof(GhostWallText));
|
||||
QSBWorldSync.Init<QSBNomaiText, NomaiText>(typeof(GhostWallText));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ namespace QSB.TornadoSync
|
||||
|
||||
protected override void RebuildWorldObjects(OWScene scene)
|
||||
{
|
||||
QSBWorldSync.Init<QSBTornado, TornadoController>(this);
|
||||
QSBWorldSync.Init<QSBTornado, TornadoController>();
|
||||
|
||||
if (!QSBCore.IsHost)
|
||||
{
|
||||
|
@ -5,7 +5,6 @@ namespace QSB.WorldSync
|
||||
public interface IWorldObject
|
||||
{
|
||||
int ObjectId { get; }
|
||||
WorldObjectManager Manager { get; }
|
||||
string Name { get; }
|
||||
|
||||
void OnRemoval();
|
||||
|
@ -17,6 +17,8 @@ namespace QSB.WorldSync
|
||||
private static readonly List<IWorldObject> WorldObjects = new();
|
||||
private static readonly Dictionary<MonoBehaviour, IWorldObject> WorldObjectsToUnityObjects = new();
|
||||
|
||||
public static IEnumerable<IWorldObject> GetWorldObjects() => WorldObjects;
|
||||
|
||||
public static IEnumerable<TWorldObject> GetWorldObjects<TWorldObject>()
|
||||
where TWorldObject : IWorldObject
|
||||
=> WorldObjects.OfType<TWorldObject>();
|
||||
@ -82,7 +84,6 @@ namespace QSB.WorldSync
|
||||
try
|
||||
{
|
||||
item.OnRemoval();
|
||||
item.Manager.UnregisterWorldObject(item);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@ -99,23 +100,23 @@ namespace QSB.WorldSync
|
||||
=> Resources.FindObjectsOfTypeAll<TUnityObject>()
|
||||
.Where(x => x.gameObject.scene.name != null);
|
||||
|
||||
public static void Init<TWorldObject, TUnityObject>(WorldObjectManager owner)
|
||||
public static void Init<TWorldObject, TUnityObject>()
|
||||
where TWorldObject : WorldObject<TUnityObject>, new()
|
||||
where TUnityObject : MonoBehaviour
|
||||
{
|
||||
var list = GetUnityObjects<TUnityObject>();
|
||||
Init<TWorldObject, TUnityObject>(list, owner);
|
||||
Init<TWorldObject, TUnityObject>(list);
|
||||
}
|
||||
|
||||
public static void Init<TWorldObject, TUnityObject>(WorldObjectManager owner, params Type[] typesToExclude)
|
||||
public static void Init<TWorldObject, TUnityObject>(params Type[] typesToExclude)
|
||||
where TWorldObject : WorldObject<TUnityObject>, new()
|
||||
where TUnityObject : MonoBehaviour
|
||||
{
|
||||
var list = GetUnityObjects<TUnityObject>().Where(x => !typesToExclude.Contains(x.GetType()));
|
||||
Init<TWorldObject, TUnityObject>(list, owner);
|
||||
Init<TWorldObject, TUnityObject>(list);
|
||||
}
|
||||
|
||||
public static void Init<TWorldObject, TUnityObject>(IEnumerable<TUnityObject> listToInitFrom, WorldObjectManager owner)
|
||||
public static void Init<TWorldObject, TUnityObject>(IEnumerable<TUnityObject> listToInitFrom)
|
||||
where TWorldObject : WorldObject<TUnityObject>, new()
|
||||
where TUnityObject : MonoBehaviour
|
||||
{
|
||||
@ -126,13 +127,11 @@ namespace QSB.WorldSync
|
||||
{
|
||||
AttachedObject = item,
|
||||
ObjectId = WorldObjects.Count,
|
||||
Manager = owner
|
||||
};
|
||||
|
||||
obj.Init();
|
||||
WorldObjects.Add(obj);
|
||||
WorldObjectsToUnityObjects.Add(item, obj);
|
||||
owner.RegisterWorldObject(obj);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,6 @@ namespace QSB.WorldSync
|
||||
{
|
||||
public int ObjectId { get; init; }
|
||||
public T AttachedObject { get; init; }
|
||||
public WorldObjectManager Manager { get; init; }
|
||||
public string Name => AttachedObject == null ? "<NullObject!>" : AttachedObject.name;
|
||||
public string LogName => $"{QSBPlayerManager.LocalPlayerId}.{ObjectId}:{GetType().Name}";
|
||||
|
||||
|
@ -33,8 +33,6 @@ namespace QSB.WorldSync
|
||||
/// </summary>
|
||||
public abstract WorldObjectType WorldObjectType { get; }
|
||||
|
||||
private List<IWorldObject> _worldObjects = new List<IWorldObject>();
|
||||
|
||||
public virtual void Awake()
|
||||
{
|
||||
QSBSceneManager.OnSceneLoaded += OnSceneLoaded;
|
||||
@ -59,9 +57,6 @@ namespace QSB.WorldSync
|
||||
AllObjectsReady = false;
|
||||
}
|
||||
|
||||
public void RegisterWorldObject(IWorldObject obj) => _worldObjects.Add(obj);
|
||||
public void UnregisterWorldObject(IWorldObject obj) => _worldObjects.Remove(obj);
|
||||
|
||||
public static void Rebuild(OWScene scene)
|
||||
{
|
||||
if (!QSBNetworkManager.Instance.IsReady)
|
||||
@ -139,7 +134,7 @@ namespace QSB.WorldSync
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var obj in _worldObjects)
|
||||
foreach (var obj in QSBWorldSync.GetWorldObjects())
|
||||
{
|
||||
if (obj.ShouldDisplayLabel)
|
||||
{
|
||||
|
@ -8,6 +8,6 @@ namespace QSB.ZeroGCaveSync
|
||||
public override WorldObjectType WorldObjectType => WorldObjectType.SolarSystem;
|
||||
|
||||
protected override void RebuildWorldObjects(OWScene scene)
|
||||
=> QSBWorldSync.Init<QSBSatelliteNode, SatelliteNode>(this);
|
||||
=> QSBWorldSync.Init<QSBSatelliteNode, SatelliteNode>();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user