void CmdDeleteMuscleConnection(GameObject toDelete)
    {
        MuscleConnection deleteConnection = toDelete.GetComponent <MuscleConnection>();
        Controller       presynapse       = deleteConnection.GetStart().GetComponent <Controller>();

        GameSave.MuscleConnectionRemoved(deleteConnection);
        presynapse.RemoveMuscleConnection(presynapse.gameObject, toDelete);
    }
Beispiel #2
0
    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);
            }
        }
    }
Beispiel #3
0
    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);
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (!isLocalPlayer || isInstructor)
        {
            if (!isBeingControlled)               //If instructor isn't currently controlling.
            {
                return;
            }
        }

        //Left click creates connections, deletes connections
        if (Input.GetMouseButtonUp(0))
        {
            if (!UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
            {
                Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;

                if (Physics.Raycast(ray, out hit, 100))
                {
                    //Check if neuron
                    if (canConnect && hit.transform.gameObject.GetComponent <Controller>() != null)
                    {
                        if (hit.transform.gameObject.Equals(cubeInstance.transform.gameObject))
                        {
                            //Same object; bring up own parameter dialogue
                            GetComponent <Controller>().CmdOpenSetNeuronParameters(gameObject, gameObject);
                            //return;
                        }
                        else
                        {
                            //Different object; try to connect
                            CmdAskSpawnConnection(cubeInstance.transform.gameObject, hit.transform.gameObject);
                        }
                    }

                    //Check if connection
                    Connection toDelete = hit.transform.gameObject.GetComponent <Connection>();
                    if (toDelete != null)
                    {
                        //Check if client is connected to said connection
                        if (toDelete.GetStart().Equals(cubeInstance.transform.gameObject) ||
                            toDelete.GetEnd().Equals(cubeInstance.transform.gameObject))
                        {
                            //Send delete request
                            AskDeleteConnection(toDelete.gameObject);
                        }
                    }

                    //Check if sensor connection
                    SensorConnection toDeleteS = hit.transform.gameObject.GetComponent <SensorConnection>();
                    if (toDeleteS != null)
                    {
                        //Check if client is connected to sensor
                        if (toDeleteS.GetEnd().Equals(cubeInstance.transform.gameObject))
                        {
                            //Send delete request
                            AskDeleteSensorConnection(toDeleteS.gameObject);
                        }
                    }

                    //Check if muscle connection
                    MuscleConnection toDeleteM = hit.transform.gameObject.GetComponent <MuscleConnection>();
                    if (toDeleteM != null)
                    {
                        //Check if client is connected to sensor
                        if (toDeleteM.GetStart().Equals(cubeInstance.transform.gameObject))
                        {
                            //Send delete request
                            AskDeleteMuscleConnection(toDeleteM.gameObject);
                        }
                    }

                    //Check if sensor
                    if (canConnect && hit.transform.gameObject.GetComponent <SensorConnector>() != null)
                    {
                        //Connect to sensor
                        CmdSensorConnection(cubeInstance.transform.gameObject, hit.transform.gameObject);
                    }

                    //Check if muscle
                    if (canConnect && hit.transform.gameObject.GetComponent <Muscle>() != null)
                    {
                        //Connect to muscle
                        CmdMuscleConnection(cubeInstance.transform.gameObject, hit.transform.gameObject);
                    }
                }
            }
        }
    }