public static void MuscleConnectionRemoved(MuscleConnection mus) { MuscleConnectionFile file; Controller start = mus.GetStart().GetComponent <Controller>(); Muscle end = mus.GetEnd().GetComponent <Muscle>(); MuscleType type; if (end is SwingMuscle) { //What type? SwingMuscle swing = end as SwingMuscle; switch (swing.moveDirection) { case SwingMuscle.SwingFunction.Backward: { type = MuscleType.Backward; break; } case SwingMuscle.SwingFunction.Forward: { type = MuscleType.Forward; break; } default: { //So we have something type = MuscleType.Forward; break; } } } else { //Stance muscle type = MuscleType.Stance; } file = new MuscleConnectionFile(end.table, type, start.GetTableNum(), start.GetSeatNum()); int endpoint = muscleConnectionsToReset.Count; //Avoid changing list while iterating. for (int i = endpoint - 1; i >= 0; i--) { if (muscleConnectionsToReset[i].Equals(mus.gameObject)) { muscleConnectionsToReset.Remove(mus.gameObject); } } endpoint = spawnedMuscleConnections.Count; for (int i = endpoint - 1; i >= 0; i--) { if (spawnedMuscleConnections[i].Equals(file)) { spawnedMuscleConnections.Remove(file); } } }
//Helper method to spawn muscle connections based on given connection file private static void SpawnConnection(MuscleConnectionFile file) { //Find start and end gameObjects GameObject start = null, end = null; foreach (NeuronDesignation nd in loadedPlayers) { //Find start if (nd.isGivenNeuron(file.GetStart()[0], file.GetStart()[1])) { start = nd.GetObject(); } } foreach (Muscle m in muscles) { //Find end MuscleType type; if (m is SwingMuscle) { //What type? SwingMuscle swing = m as SwingMuscle; switch (swing.moveDirection) { case SwingMuscle.SwingFunction.Backward: { type = MuscleType.Backward; break; } case SwingMuscle.SwingFunction.Forward: { type = MuscleType.Forward; break; } default: { //So we have something type = MuscleType.Forward; break; } } } else { //Stance muscle type = MuscleType.Stance; } if (m.table.Equals(file.GetEnd().table) && type.Equals(file.GetEnd().type)) { end = m.gameObject; } } if (start && end) { GameObject player = NetworkManager.singleton.client.connection.playerControllers[0].gameObject; player.GetComponent <ConnectionManager>().MuscleConnection(start, end); } }
public static void MuscleConnectionMade(MuscleConnection mus) { MuscleConnectionFile file; Controller start = mus.GetStart().GetComponent <Controller>(); Muscle end = mus.GetEnd().GetComponent <Muscle>(); MuscleType type; if (end is SwingMuscle) { //What type? SwingMuscle swing = end as SwingMuscle; switch (swing.moveDirection) { case SwingMuscle.SwingFunction.Backward: { type = MuscleType.Backward; break; } case SwingMuscle.SwingFunction.Forward: { type = MuscleType.Forward; break; } default: { //So we have something type = MuscleType.Forward; break; } } } else { //Stance muscle type = MuscleType.Stance; } file = new MuscleConnectionFile(end.table, type, start.GetTableNum(), start.GetSeatNum()); muscleConnectionsToReset.Add(mus.gameObject); if (!spawnedMuscleConnections.Contains(file)) { spawnedMuscleConnections.Add(file); } }