public static bool Shuffle_ChangeQuantumState( QuantumShuffleObject __instance, ref List <int> ____indexList, ref Vector3[] ____localPositions, ref Transform[] ____shuffledObjects, ref bool __result) { var shuffleWorldObject = QSBWorldSync.GetWorldFromUnity <QSBQuantumShuffleObject, QuantumShuffleObject>(__instance); if (shuffleWorldObject.ControllingPlayer != QSBPlayerManager.LocalPlayerId) { return(false); } ____indexList.Clear(); ____indexList = Enumerable.Range(0, ____localPositions.Length).ToList(); for (var i = 0; i < ____indexList.Count; ++i) { var random = UnityEngine.Random.Range(i, ____indexList.Count); var temp = ____indexList[i]; ____indexList[i] = ____indexList[random]; ____indexList[random] = temp; } for (var j = 0; j < ____shuffledObjects.Length; j++) { ____shuffledObjects[j].localPosition = ____localPositions[____indexList[j]]; } QSBEventManager.FireEvent( EventNames.QSBQuantumShuffle, shuffleWorldObject.ObjectId, ____indexList.ToArray()); __result = true; return(false); }
public static bool QuantumShuffleObject_ChangeQuantumState( QuantumShuffleObject __instance, ref bool __result) { QSBQuantumShuffleObject shuffleWorldObject = default; if (QSBWorldSync.AllObjectsReady) { shuffleWorldObject = __instance.GetWorldObject <QSBQuantumShuffleObject>(); if (shuffleWorldObject.ControllingPlayer != QSBPlayerManager.LocalPlayerId) { return(false); } } __instance._indexList.Clear(); __instance._indexList = Enumerable.Range(0, __instance._localPositions.Length).ToList(); for (var i = 0; i < __instance._indexList.Count; ++i) { var random = Random.Range(i, __instance._indexList.Count); var temp = __instance._indexList[i]; __instance._indexList[i] = __instance._indexList[random]; __instance._indexList[random] = temp; } for (var j = 0; j < __instance._shuffledObjects.Length; j++) { __instance._shuffledObjects[j].localPosition = __instance._localPositions[__instance._indexList[j]]; } if (QSBWorldSync.AllObjectsReady) { shuffleWorldObject.SendMessage(new QuantumShuffleMessage(__instance._indexList.ToArray())); __result = true; } return(false); }