コード例 #1
0
    public void InitializeBoxFromFile(Container_Box_Json[] boxFile = null)
    {
        //If there is a file that can initialize boxFromFile then use it, otherwise set the default properties.
        if (boxFile != null)
        {
            boxFromFile = boxFile;
        }
        else
        {
            if (BoxFromFileExists())
            {
                return;
            }

            int len = InputSequence.Instance.getSeqLength();
            Container_Box_Json[] tmpBoxFromFile = new Container_Box_Json[len];
            GameObject[]         tmpBox;
            CockpitFeedback[]    oi;
            bool[] in_box;
            string sequence_id;

            for (int i = 0; i < len; i++)
            {
                sequence_id = InputSequence.Instance.getSeq(i);

                oi     = InputSequence.Instance.GetSequence(sequence_id).objectIndicated.ToArray();
                in_box = new bool[oi.Length];
                for (int j = 0; j < oi.Length; j++)
                {
                    in_box[j] = oi[j].insideBox;
                }
                tmpBox = GetFromObjects(InputSequence.Instance.getObjectsFromSequence(sequence_id), in_box);

                if (tmpBox != null)
                {
                    tmpBoxFromFile[i] = new Container_Box_Json(sequence_id, tmpBox[0].transform.position, tmpBox[0].transform.rotation.eulerAngles, tmpBox[0].transform.localScale, tmpBox[1].transform.position, tmpBox[1].transform.rotation.eulerAngles, tmpBox[1].transform.localScale, tmpBox[2].transform.position, tmpBox[2].transform.rotation.eulerAngles, tmpBox[2].transform.localScale, tmpBox[3].transform.position, tmpBox[3].transform.rotation.eulerAngles, tmpBox[3].transform.localScale);

                    Destroy(tmpBox[0]);
                    Destroy(tmpBox[1]);
                    Destroy(tmpBox[2]);
                    Destroy(tmpBox[3]);
                }
                else
                {
                    tmpBoxFromFile[i] = null;
                }
            }

            boxFromFile = tmpBoxFromFile;
        }
    }
コード例 #2
0
    public void Update_BFF_From_Modify(GameObject obj)
    {
        GameObject[]       objects;
        GameObject[]       fileBox = null;
        Container_Box_Json boxData;

        CockpitFeedback[] oi;
        bool[]            in_box;
        string            sequence_id;

        if (!BoxFromFileExists())
        {
            InitializeBoxFromFile();
        }

        for (int i = 0; i < InputSequence.Instance.getSeqLength(); i++)
        {
            sequence_id = InputSequence.Instance.getSeq(i);

            objects = InputSequence.Instance.getObjectsFromSequence(sequence_id);

            if (objects != null && objects.Contains(obj))
            {
                oi     = InputSequence.Instance.GetSequence(sequence_id).objectIndicated.ToArray();
                in_box = new bool[oi.Length];
                for (int j = 0; j < oi.Length; j++)
                {
                    in_box[j] = oi[j].insideBox;
                }

                fileBox = GetFromObjects(objects, in_box);

                if (fileBox == null)
                {
                    continue;
                }

                boxData        = new Container_Box_Json(sequence_id, fileBox[0].transform.position, fileBox[0].transform.rotation.eulerAngles, fileBox[0].transform.localScale, fileBox[1].transform.position, fileBox[1].transform.rotation.eulerAngles, fileBox[1].transform.localScale, fileBox[2].transform.position, fileBox[2].transform.rotation.eulerAngles, fileBox[2].transform.localScale, fileBox[3].transform.position, fileBox[3].transform.rotation.eulerAngles, fileBox[3].transform.localScale);
                boxFromFile[i] = boxData;

                for (int j = 0; j < fileBox.Length; j++)
                {
                    Destroy(fileBox[j]);
                }
            }
        }
    }
コード例 #3
0
    public void UpdateBoxFromFile(GameObject[] obj, string seq)
    {
        GameObject[]       fileBox;
        Container_Box_Json boxData;

        if (!BoxFromFileExists())
        {
            InitializeBoxFromFile();
        }

        fileBox = obj;
        boxData = new Container_Box_Json(seq, fileBox[0].transform.position, fileBox[0].transform.rotation.eulerAngles, fileBox[0].transform.localScale, fileBox[1].transform.position, fileBox[1].transform.rotation.eulerAngles, fileBox[1].transform.localScale, fileBox[2].transform.position, fileBox[2].transform.rotation.eulerAngles, fileBox[2].transform.localScale, fileBox[3].transform.position, fileBox[3].transform.rotation.eulerAngles, fileBox[3].transform.localScale);

        for (int i = 0; i < boxFromFile.Length; i++)
        {
            if (boxFromFile[i].sequence.Equals(seq))
            {
                boxFromFile[i] = boxData;
                break;
            }
        }
    }
コード例 #4
0
    //Loading the position, rotation and scale of all cockpit's components.
    public void LoadObjectsProperties()
    {
        Material            material;
        NewParameterManager newParameterManager;
        Dictionary <GameObject, NewParameterManager> map = new Dictionary <GameObject, NewParameterManager>();

        component = GameObject.CreatePrimitive(PrimitiveType.Cube);
        component.AddComponent <Interactible>();
        component.AddComponent <TapToPlace>().enabled   = false;
        component.AddComponent <HoldToRotate>().enabled = false;
        component.AddComponent <TapToRemove>().enabled  = false;
        component.AddComponent <NewParameterManager>();
        component.GetComponent <MeshRenderer>().enabled = false;
        material = Resources.Load("Cockpit_Buttons", typeof(Material)) as Material;
        component.GetComponent <MeshRenderer>().material = material;
        material = Resources.Load("PlaceableShadow", typeof(Material)) as Material;
        component.GetComponent <TapToPlace>().PlacementMaterial   = material;
        component.GetComponent <HoldToRotate>().PlacementMaterial = material;

        GameObject component_instantiated;
        int        i = 0;
        int        value;

        file = new JsonSaveObject();

#if !UNITY_EDITOR
        Load();
#else
        LoadUnity();
#endif

        try
        {
            foreach (Cockpit_Component_Json cockpit_component in file.components)
            {
                component_instantiated      = Instantiate(component);
                component_instantiated.name = cockpit_component.nameObject;
                component_instantiated.transform.position   = cockpit_component.position;
                component_instantiated.transform.rotation   = Quaternion.Euler(cockpit_component.rotation);
                component_instantiated.transform.localScale = cockpit_component.scale;
                newParameterManager = component_instantiated.GetComponent <NewParameterManager>();
                newParameterManager.initID(cockpit_component.parameter);
                newParameterManager.setDataType(cockpit_component.dataType);
                newParameterManager.setPath(cockpit_component.param_path);
                newParameterManager.setInteraction(cockpit_component.interaction);
                newParameterManager.setPossibleValues(cockpit_component.possible_values);
                newParameterManager.setIOData(cockpit_component.IO_Data);

                component_instantiated.transform.SetParent(cockpit.transform);

                FileDataWriter.Instance.AddIntoList(component_instantiated.name);

                value = Convert.ToInt32(component_instantiated.name.Substring(4));
                if (value > max)
                {
                    max = value;
                }

                for (i = 0; i < cockpit_component.parameter.Length; i++)
                {
                    Parameters.Instance.AddValue(cockpit_component.param_path[i], 0, cockpit_component.dataType[i], cockpit_component.IO_Data[i]);
                }

                map.Add(component_instantiated, newParameterManager);
            }

            InputSequence.Instance.InitMap(map);

            Destroy(component);

            i = 0;

            int len = InputSequence.Instance.getSeqLength();

            List <FeedbackGroup> sequenceFromFile = file.feedback_group;

            InputSequence.Instance.InitSequenceObjects(sequenceFromFile);

            Container_Box_Json[] boxFromFile = new Container_Box_Json[len];

            foreach (Container_Box_Json container_box in file.boxes)
            {
                while (sequenceFromFile[i].sequence != container_box.sequence)
                {
                    if (sequenceFromFile[i].sequence != "End")
                    {
                        boxFromFile[i] = null;
                        ++i;
                    }
                    else
                    {
                        break;
                    }
                }

                boxFromFile[i] = container_box;
                ++i;
            }

            while (i < len)
            {
                boxFromFile[i] = null;
                ++i;
            }

            GameObject.FindWithTag("ContainerBox").GetComponent <ContainerBox>().InitializeBoxFromFile(boxFromFile);
        }
        catch (Exception e)
        {
            Debug.Log(e.Message);
        }
    }
コード例 #5
0
    public void SetObjectsIndicated(GameObject[] objects, bool[] in_box, bool showBox)
    {
        if (objects != null)
        {
            int   i;
            bool  inside_box = false;
            float minX_scale = 0;
            float maxX_scale = 0;
            float minY_scale = 0;
            float maxY_scale = 0;
            float minZ_scale = 0;
            float maxZ_scale = 0;
            minX            = Mathf.Infinity;
            minY            = Mathf.Infinity;
            minZ            = Mathf.Infinity;
            maxX            = Mathf.NegativeInfinity;
            maxY            = Mathf.NegativeInfinity;
            maxZ            = Mathf.NegativeInfinity;
            objectIndicated = new GameObject[objects.Length];
            insideBox       = in_box;

            for (i = 0; i < objects.Length; i++)
            {
                objectIndicated[i] = objects[i];

                if (insideBox[i])
                {
                    if (objectIndicated[i].transform.position.x < minX)
                    {
                        minX       = objectIndicated[i].transform.position.x;
                        minX_scale = objectIndicated[i].transform.localScale.x / 2;
                    }

                    if (objectIndicated[i].transform.position.x > maxX)
                    {
                        maxX       = objectIndicated[i].transform.position.x;
                        maxX_scale = objectIndicated[i].transform.localScale.x / 2;
                    }

                    if (objectIndicated[i].transform.position.y < minY)
                    {
                        minY       = objectIndicated[i].transform.position.y;
                        minY_scale = objectIndicated[i].transform.localScale.y / 2;
                    }

                    if (objectIndicated[i].transform.position.y > maxY)
                    {
                        maxY       = objectIndicated[i].transform.position.y;
                        maxY_scale = objectIndicated[i].transform.localScale.y / 2;
                    }

                    if (objectIndicated[i].transform.position.z < minZ)
                    {
                        minZ       = objectIndicated[i].transform.position.z;
                        minZ_scale = objectIndicated[i].transform.localScale.z / 2;
                    }

                    if (objectIndicated[i].transform.position.z > maxZ)
                    {
                        maxZ       = objectIndicated[i].transform.position.z;
                        maxZ_scale = objectIndicated[i].transform.localScale.z / 2;
                    }

                    inside_box = true;
                }
            }

            if (!inside_box)
            {
                objectIndicated = null;
                return;
            }

            if (boxFromFile != null)
            {
                box = CreateBox();

                Container_Box_Json properties = GetBoxFromId(InputSequence.Instance.getSeq());

                box[0].transform.position   = properties.positionLeft;
                box[0].transform.rotation   = Quaternion.Euler(properties.rotationLeft);
                box[0].transform.localScale = properties.scaleLeft;
                box[1].transform.position   = properties.positionTop;
                box[1].transform.rotation   = Quaternion.Euler(properties.rotationTop);
                box[1].transform.localScale = properties.scaleTop;
                box[2].transform.position   = properties.positionRight;
                box[2].transform.rotation   = Quaternion.Euler(properties.rotationRight);
                box[2].transform.localScale = properties.scaleRight;
                box[3].transform.position   = properties.positionBottom;
                box[3].transform.rotation   = Quaternion.Euler(properties.rotationBottom);
                box[3].transform.localScale = properties.scaleBottom;

                minX        = minX - minX_scale;
                maxX        = maxX + maxX_scale;
                minY        = minY - minY_scale;
                maxY        = maxY + maxY_scale;
                minZ       -= minZ_scale;
                maxZ       += maxZ_scale;
                boxRenderer = new MeshRenderer[4];

                for (i = 0; i < box.Length; i++)
                {
                    boxRenderer[i]         = box[i].GetComponent <MeshRenderer>();
                    boxRenderer[i].enabled = showBox;
                }
            }
            else
            {
                //Put some default offset, so that the box is not too attached to the objects.
                minX  = minX - minX_scale - 0.03f;
                maxX  = maxX + maxX_scale + 0.03f;
                minY  = minY - minY_scale - 0.075f;
                maxY  = maxY + maxY_scale + 0.075f;
                minZ -= minZ_scale;
                maxZ += maxZ_scale;

                box = CreateBox();
                SetBoxPosition();
                SetBoxRotation();
                boxRenderer = new MeshRenderer[4];

                for (i = 0; i < box.Length; i++)
                {
                    box[i].transform.localScale = new Vector3(box[i].transform.localScale.x, box[i].transform.localScale.y, BoxObject.transform.localScale.z);

                    boxRenderer[i]         = box[i].GetComponent <MeshRenderer>();
                    boxRenderer[i].enabled = showBox;
                }
            }

            setContainerBoxColor(BoxColor);
        }
        else
        {
            objectIndicated = null;
        }
    }
コード例 #6
0
    public GameObject[] GetFromObjects(GameObject[] objects, bool[] in_box, string seq = "")
    {
        if (objects == null)
        {
            return(objects);
        }

        int   i;
        float minX_scale = 0;
        float maxX_scale = 0;
        float minY_scale = 0;
        float maxY_scale = 0;
        float minZ_scale = 0;
        float maxZ_scale = 0;

        minX = Mathf.Infinity;
        minY = Mathf.Infinity;
        minZ = Mathf.Infinity;
        maxX = Mathf.NegativeInfinity;
        maxY = Mathf.NegativeInfinity;
        maxZ = Mathf.NegativeInfinity;

        bool inside_box = false;

        for (i = 0; i < objects.Length; i++)
        {
            if (in_box[i])
            {
                if (objects[i].transform.position.x < minX)
                {
                    minX       = objects[i].transform.position.x;
                    minX_scale = objects[i].transform.localScale.x / 2;
                }

                if (objects[i].transform.position.x > maxX)
                {
                    maxX       = objects[i].transform.position.x;
                    maxX_scale = objects[i].transform.localScale.x / 2;
                }

                if (objects[i].transform.position.y < minY)
                {
                    minY       = objects[i].transform.position.y;
                    minY_scale = objects[i].transform.localScale.y / 2;
                }

                if (objects[i].transform.position.y > maxY)
                {
                    maxY       = objects[i].transform.position.y;
                    maxY_scale = objects[i].transform.localScale.y / 2;
                }

                if (objects[i].transform.position.z < minZ)
                {
                    minZ       = objects[i].transform.position.z;
                    minZ_scale = objects[i].transform.localScale.z / 2;
                }

                if (objects[i].transform.position.z > maxZ)
                {
                    maxZ       = objects[i].transform.position.z;
                    maxZ_scale = objects[i].transform.localScale.z / 2;
                }

                inside_box = true;
            }
        }

        if (!inside_box)
        {
            return(null);
        }

        GameObject[] tmpBox;

        if (boxFromFile != null && seq != "")
        {
            tmpBox = CreateBox();

            Container_Box_Json properties = GetBoxFromId(seq);

            tmpBox[0].transform.position   = properties.positionLeft;
            tmpBox[0].transform.rotation   = Quaternion.Euler(properties.rotationLeft);
            tmpBox[0].transform.localScale = properties.scaleLeft;
            tmpBox[1].transform.position   = properties.positionTop;
            tmpBox[1].transform.rotation   = Quaternion.Euler(properties.rotationTop);
            tmpBox[1].transform.localScale = properties.scaleTop;
            tmpBox[2].transform.position   = properties.positionRight;
            tmpBox[2].transform.rotation   = Quaternion.Euler(properties.rotationRight);
            tmpBox[2].transform.localScale = properties.scaleRight;
            tmpBox[3].transform.position   = properties.positionBottom;
            tmpBox[3].transform.rotation   = Quaternion.Euler(properties.rotationBottom);
            tmpBox[3].transform.localScale = properties.scaleBottom;

            minX  = minX - minX_scale;
            maxX  = maxX + maxX_scale;
            minY  = minY - minY_scale;
            maxY  = maxY + maxY_scale;
            minZ -= minZ_scale;
            maxZ += maxZ_scale;

            for (i = 0; i < tmpBox.Length; i++)
            {
                tmpBox[i].GetComponent <MeshRenderer>().enabled = true;
            }
        }
        else
        {
            //Put some default offset, so that the box is not too attached to the objects.
            minX  = minX - minX_scale - 0.03f;
            maxX  = maxX + maxX_scale + 0.03f;
            minY  = minY - minY_scale - 0.075f;
            maxY  = maxY + maxY_scale + 0.075f;
            minZ -= minZ_scale;
            maxZ += maxZ_scale;

            tmpBox = CreateBox();
            SetBoxPosition(tmpBox);
            SetBoxRotation(tmpBox, objects, in_box);

            for (i = 0; i < tmpBox.Length; i++)
            {
                tmpBox[i].transform.localScale = new Vector3(tmpBox[i].transform.localScale.x, tmpBox[i].transform.localScale.y, BoxObject.transform.localScale.z);
                tmpBox[i].GetComponent <MeshRenderer>().enabled = true;
            }
        }

        return(tmpBox);
    }