This commit is contained in:
Mister_Nebula 2021-01-27 10:20:03 +00:00
parent 02c2319ec9
commit c8eac948bb
5 changed files with 23 additions and 17 deletions

View File

@ -12,7 +12,7 @@ namespace QSB.Player
public string Name { get; set; }
public bool IsReady { get; set; }
public PlayerHUDMarker HudMarker { get; set; }
public State State { get; set; }
public State State { get; set; } // TODO : decide if this is worth it (instead of having seperate variables for each thing)
// Body Objects
public OWCamera Camera { get; set; }

View File

@ -21,14 +21,6 @@ namespace QSB.QuantumSync.Events
AuthorityOwner = authorityOwner
};
public override void OnReceiveLocal(bool server, QuantumAuthorityMessage message)
{
var objects = QSBWorldSync.GetWorldObjects<IQSBQuantumObject>();
var obj = objects.ToList()[message.ObjectId];
obj.ControllingPlayer = message.AuthorityOwner;
DebugLog.DebugWrite($"Local set (message:{message.ObjectId}) (obj:{(obj as IWorldObject).ObjectId}) to (message:{message.AuthorityOwner}) (obj:{obj.ControllingPlayer})");
}
public override void OnReceiveRemote(bool server, QuantumAuthorityMessage message)
{
var objects = QSBWorldSync.GetWorldObjects<IQSBQuantumObject>();

View File

@ -50,7 +50,7 @@ namespace QSB.QuantumSync.Patches
var objId = QuantumManager.Instance.GetId(__instance);
var socketId = QuantumManager.Instance.GetId(socket);
DebugLog.DebugWrite($"{__instance.name} to socket {socketId}");
//DebugLog.DebugWrite($"{__instance.name} to socket {socketId}");
GlobalMessenger<int, int, Quaternion>
.FireEvent(
EventNames.QSBSocketStateChange,
@ -84,7 +84,7 @@ namespace QSB.QuantumSync.Patches
{
____shuffledObjects[j].localPosition = ____localPositions[____indexList[j]];
}
DebugLog.DebugWrite($"{__instance.name} shuffled.");
//DebugLog.DebugWrite($"{__instance.name} shuffled.");
GlobalMessenger<int, int[]>
.FireEvent(
EventNames.QSBQuantumShuffle,
@ -98,7 +98,7 @@ namespace QSB.QuantumSync.Patches
{
var qsbObj = QSBWorldSync.GetWorldObject<QSBMultiStateQuantumObject>(QuantumManager.Instance.GetId(__instance));
var isInControl = qsbObj.ControllingPlayer == QSBPlayerManager.LocalPlayerId;
DebugLog.DebugWrite($"Multistate (instance:{__instance.name}) (obj:{qsbObj.AttachedObject.name}) change state - in control:{isInControl} ({qsbObj.ControllingPlayer} vs {QSBPlayerManager.LocalPlayerId})");
//DebugLog.DebugWrite($"Multistate (instance:{__instance.name}) (obj:{qsbObj.AttachedObject.name}) change state - in control:{isInControl} ({qsbObj.ControllingPlayer} vs {QSBPlayerManager.LocalPlayerId})");
return isInControl;
}
@ -110,12 +110,12 @@ namespace QSB.QuantumSync.Patches
}
var allMultiStates = QSBWorldSync.GetWorldObjects<QSBMultiStateQuantumObject>();
var owner = allMultiStates.First(x => x.QuantumStates.Contains(__instance));
DebugLog.DebugWrite($"{owner.AttachedObject.name} controller is {owner.ControllingPlayer}");
//DebugLog.DebugWrite($"{owner.AttachedObject.name} controller is {owner.ControllingPlayer}");
if (owner.ControllingPlayer != QSBPlayerManager.LocalPlayerId)
{
return;
}
DebugLog.DebugWrite($"{owner.AttachedObject.name} to quantum state {Array.IndexOf(owner.QuantumStates, __instance)}");
//DebugLog.DebugWrite($"{owner.AttachedObject.name} to quantum state {Array.IndexOf(owner.QuantumStates, __instance)}");
GlobalMessenger<int, int>
.FireEvent(
EventNames.QSBMultiStateChange,

View File

@ -16,7 +16,7 @@ namespace QSB.QuantumSync.WorldObjects
var tracker = (AttachedObject as Component).gameObject.AddComponent<OnEnableDisableTracker>();
tracker.OnEnableEvent += OnEnable;
tracker.OnDisableEvent += OnDisable;
ControllingPlayer = QSBCore.IsServer ? 1u : 0u;
ControllingPlayer = 0;
}
private void OnEnable()
@ -27,9 +27,10 @@ namespace QSB.QuantumSync.WorldObjects
return;
}
var id = QSBWorldSync.GetWorldObjects<IQSBQuantumObject>().ToList().IndexOf(this);
DebugLog.DebugWrite($"ON ENABLE {(this as WorldObject<T>).AttachedObject.name} ({id})");
//DebugLog.DebugWrite($"ON ENABLE {(this as WorldObject<T>).AttachedObject.name} ({id})");
// no one is controlling this object right now, request authority
GlobalMessenger<int, uint>.FireEvent(EventNames.QSBQuantumAuthority, id, QSBPlayerManager.LocalPlayerId);
ControllingPlayer = QSBPlayerManager.LocalPlayerId;
}
private void OnDisable()
@ -40,9 +41,10 @@ namespace QSB.QuantumSync.WorldObjects
return;
}
var id = QSBWorldSync.GetWorldObjects<IQSBQuantumObject>().ToList().IndexOf(this);
DebugLog.DebugWrite($"ON DISABLE {(this as WorldObject<T>).AttachedObject.name} ({id})");
//DebugLog.DebugWrite($"ON DISABLE {(this as WorldObject<T>).AttachedObject.name} ({id})");
// send event to other players that we're releasing authority
GlobalMessenger<int, uint>.FireEvent(EventNames.QSBQuantumAuthority, id, 0);
ControllingPlayer = 0;
}
}
}

View File

@ -9,6 +9,18 @@ namespace QSB.Utility
public event EnableDisableEvent OnEnableEvent;
public event EnableDisableEvent OnDisableEvent;
public OnEnableDisableTracker()
{
if (gameObject.activeInHierarchy)
{
OnEnableEvent?.Invoke();
}
else
{
OnDisableEvent?.Invoke();
}
}
private void OnEnable() => OnEnableEvent?.Invoke();
private void OnDisable() => OnDisableEvent?.Invoke();
}