Beispiel #1
0
        public void GetReceptacleByNameTest2()
        {
            string     name   = "InvalidReceptacle";
            Receptacle actual = context.GetReceptacleByName(name);

            Assert.IsNull(actual);
        }
    void CheckForClearAndDelete(Receptacle r, int index, ref int deletedPivotIndex)
    {
        EditorGUILayout.BeginVertical();
        Rect deleteArea = GUILayoutUtility.GetRect(
            100.0f,
            25.0f);

        GUI.color = Color.Lerp(Color.grey, Color.yellow, 0.5f);
        if (GUI.Button(deleteArea, "Delete pivot"))
        {
            if (EditorUtility.DisplayDialog("Delete pivot", "Are you sure you want to delete pivot?", "Yes", "Cancel"))
            {
                deletedPivotIndex = index;
            }
        }
        Rect removeArea = GUILayoutUtility.GetRect(
            100.0f,
            25.0f);

        if (r.Pivots[index].childCount > 0)
        {
            GUI.color = Color.white;
        }
        else
        {
            GUI.color = Color.grey;
        }
        if (GUI.Button(removeArea, "Clear pivot") && r.Pivots[index].transform.childCount > 0)
        {
            Transform item = r.Pivots[index].GetChild(0);
            SimUtil.TakeItem(item.GetComponent <SimObj>());
        }
        EditorGUILayout.EndVertical();
    }
Beispiel #3
0
        /// <summary>
        /// Conecta uma faceta a um receptáculo.
        /// </summary>
        /// <param name="receptacle">
        /// O nome do receptáculo que se deseja conectar.
        /// </param>
        /// <param name="obj">
        /// A referência para a faceta que se deseja conectar.
        /// </param>
        /// <exception cref="InvalidName">
        /// Caso o nome do receptáculo seja inválido.
        /// </exception>
        /// <exception cref="InvalidConnection">
        /// Caso a conexão não possa ser estabelecida, este erro pode acontecer
        /// caso o <c>obj</c> não implemente a interface do receptáculo.
        /// </exception>
        /// <exception cref="AlreadyConnected">
        /// Caso a faceta já esteja conectada.
        /// </exception>
        /// <exception cref="ExceededConnectionLimit">
        /// Caso o número de conexões tenha excedido o limite configurado.
        /// </exception>
        public int connect(string receptacle, MarshalByRefObject obj)
        {
            IDictionary <string, Receptacle> receptacles =
                context.GetReceptacles();

            if (!receptacles.ContainsKey(receptacle))
            {
                throw new InvalidName {
                          name = receptacle
                }
            }
            ;

            Receptacle rec = receptacles[receptacle];

            if ((!rec.IsMultiple) &&
                (rec.GetConnectionsSize() > 0))
            {
                throw new AlreadyConnected();
            }

            if (!IiopNetUtil.CheckInterface(obj, rec.InterfaceName))
            {
                throw new InvalidConnection();
            }

            int id = rec.AddConnections(obj);

            logger.InfoFormat("Conexão {0} adicionada ao receptáculo '{1}'", id,
                              receptacle);
            return(id);
        }
Beispiel #4
0
        public void IsMultipleTest()
        {
            Receptacle target = new Receptacle(name, interfaceName, isMultiple);
            bool       actual = target.IsMultiple;

            Assert.AreEqual(isMultiple, actual);
        }
Beispiel #5
0
        public void InterfaceNameTest()
        {
            Receptacle target = new Receptacle(name, interfaceName, isMultiple);
            string     actual = target.InterfaceName;

            Assert.AreEqual(interfaceName, actual);
        }
Beispiel #6
0
    //gets all VISIBILE SimObjs contained in a receptacle
    //this does not TAKE any of these items
    public static SimObj[] GetVisibleItemsFromReceptacle(Receptacle r, Camera agentCamera, Vector3 agentCameraPos, float maxDistance)
    {
        List <SimObj> items = new List <SimObj>();
        RaycastHit    hit;

        foreach (Transform t in r.Pivots)
        {
            if (t.childCount > 0)
            {
                SimObj item = t.GetChild(0).GetComponent <SimObj> ();
                //check whether the item is visible (center point only)
                //since it's inside a receptacle, it will be on the invisible layer
                if (CheckPointVisibility(item.CenterPoint, agentCamera))
                {
                    item.VisibleNow = true;
                    items.Add(item);
                }
                else
                {
                    item.VisibleNow = false;
                }
            }
        }
        return(items.ToArray());
    }
Beispiel #7
0
    //adds the item to a receptacle
    //enabled the object, parents it under an empty pivot, then makes it invisible to raycasts
    //returns false if there are no available pivots in the receptacle
    public static bool AddItemToReceptacle(SimObj item, Receptacle r)
    {
        //make sure we're not doing something insane
        if (item == null)
        {
            Debug.LogError("Can't add null item to receptacle");
            return(false);
        }
        if (r == null)
        {
            Debug.LogError("Receptacle was null, not adding item");
            return(false);
        }
        if (item.gameObject == r.gameObject)
        {
            Debug.LogError("Receptacle and item were same object, can't add item to itself");
            return(false);
        }
        //make sure there's room in the recepticle
        Transform emptyPivot = null;

        if (!GetFirstEmptyReceptaclePivot(r, out emptyPivot))
        {
            //Debug.Log ("Receptacle is full");
            return(false);
        }
        return(AddItemToReceptaclePivot(item, emptyPivot));
    }
Beispiel #8
0
    //searches for a SimObj item under a receptacle by ID
    //this does not TAKE the item, it just searches for it
    public static bool FindItemFromReceptacleByID(string itemID, Receptacle r, out SimObj item)
    {
        item = null;
        //make sure we're not doing something insane
        if (r == null)
        {
            Debug.LogError("Receptacle was null, not searching for item");
            return(false);
        }

        if (!IsUniqueIDValid(itemID))
        {
            Debug.LogError("itemID " + itemID.ToString() + " is NOT valid, not searching for item");
            return(false);
        }
        SimObj checkItem = null;

        for (int i = 0; i < r.Pivots.Length; i++)
        {
            if (r.Pivots [i].childCount > 0)
            {
                checkItem = r.Pivots [i].GetChild(0).GetComponent <SimObj> ();
                if (checkItem != null && checkItem.UniqueID == itemID)
                {
                    //if the item under the pivot is a SimObj with the right id
                    //we've found what we're after
                    item = checkItem;
                    return(true);
                }
            }
        }
        //couldn't find it!
        return(false);
    }
    void CheckForDragDropColliders(Receptacle r)
    {
        Event evt      = Event.current;
        Rect  dropArea = GUILayoutUtility.GetRect(
            100.0f,
            100.0f);

        GUI.Box(dropArea, "Drag-drop visibility collider here", EditorStyles.helpBox);

        switch (evt.type)
        {
        case EventType.DragUpdated:
        case EventType.DragPerform:
            if (!dropArea.Contains(evt.mousePosition))
            {
                return;
            }

            DragAndDrop.visualMode = DragAndDropVisualMode.Generic;

            if (evt.type == EventType.DragPerform)
            {
                DragAndDrop.AcceptDrag();

                foreach (UnityEngine.Object draggedItem in DragAndDrop.objectReferences)
                {
                    TryToSetVisibilityCollider(r, draggedItem);
                }
            }
            break;
        }
    }
Beispiel #10
0
    void CheckForDragDropPivots(Receptacle r)
    {
        Event evt = Event.current;

        EditorGUILayout.LabelField("");
        Rect dropArea = GUILayoutUtility.GetRect(0.0f, 35.0f, GUILayout.ExpandWidth(true));

        GUI.Box(dropArea, "Drag-drop transforms here to add pivots", EditorStyles.helpBox);

        switch (evt.type)
        {
        case EventType.DragUpdated:
        case EventType.DragPerform:
            if (!dropArea.Contains(evt.mousePosition))
            {
                return;
            }

            DragAndDrop.visualMode = DragAndDropVisualMode.Generic;

            if (evt.type == EventType.DragPerform)
            {
                DragAndDrop.AcceptDrag();

                foreach (UnityEngine.Object draggedTransform in DragAndDrop.objectReferences)
                {
                    TryToAddPivot(draggedTransform, r);
                }
            }
            break;
        }
    }
Beispiel #11
0
    public void ReceptacleReceivedIngredient(Receptacle recep)
    {
        playerSequence.Add(new PlayerIteration()
        {
            receptacle = recep, isGoodanswer = false
        });

        var index = playerSequence.Count - 1;

        if (recep.IsIngredientTag(currentSequence[index].simonIngredient.tag) && recep == currentSequence[index].receptacle)
        {
            playerSequence[index].isGoodanswer = true;
        }

        if (playerSequence[index].isGoodanswer)
        {
            if (currentSequence.Count == playerSequence.Count)
            {
                completion = 1.0f;
            }
            else
            {
                completion += 1.0f / currentSequence.Count;
            }
            Completion.Invoke(completion);
        }
        if (currentSequence.Count == playerSequence.Count)
        {
            StartCoroutine(WaitBeforeCheckPlayerSequence());
        }
    }
Beispiel #12
0
    //searches for a SimObj item under a receptacle by ID
    //this does not TAKE the item, it just searches for it
    public static bool FindItemFromReceptacleByType(SimObjType itemType, Receptacle r, out SimObj item)
    {
        item = null;
        //make sure we're not doing something insane
        if (r == null)
        {
            Debug.LogError("Receptacle was null, not searching for item");
            return(false);
        }
        if (itemType == SimObjType.Undefined)
        {
            Debug.LogError("Can't search for type UNDEFINED, not searching for item");
            return(false);
        }
        SimObj checkItem = null;

        for (int i = 0; i < r.Pivots.Length; i++)
        {
            if (r.Pivots [i].childCount > 0)
            {
                checkItem = r.Pivots [i].GetChild(0).GetComponent <SimObj> ();
                if (checkItem != null && checkItem.Type == itemType)
                {
                    //if the item under the pivot is a SimObj of the right type
                    //we've found what we're after
                    item = checkItem;
                    return(true);
                }
            }
        }
        //couldn't find it!
        return(false);
    }
Beispiel #13
0
        public void GetConnectionsSizeTest()
        {
            Receptacle target = new Receptacle(name, interfaceName, isMultiple);
            int        actual;
            int        expected;

            for (int i = 0; i < connections.Count; i++)
            {
                target.AddConnections(connections[i]);
                actual   = target.GetConnectionsSize();
                expected = i + 1;
                Assert.AreEqual(expected, actual);
            }

            int id = target.AddConnections(connections[0]);

            expected = connections.Count + 1;
            actual   = target.GetConnectionsSize();
            Assert.AreEqual(expected, actual);

            target.RemoveConnetions(id);
            expected = connections.Count;
            actual   = target.GetConnectionsSize();
            Assert.AreEqual(expected, actual);
        }
Beispiel #14
0
 public void SetAllPivotsToUp()
 {
     Cabinet[] cabinets = GameObject.FindObjectsOfType <Cabinet>();
     foreach (Cabinet cabinet in cabinets)
     {
         if (cabinet.ParentObj != null)
         {
             Receptacle r          = cabinet.ParentObj.GetComponent <Receptacle>();
             Transform  pivot      = r.Pivots[0];
             Transform  tempParent = pivot.parent;
             Transform  child      = null;
             if (pivot.childCount > 0)
             {
                 child        = pivot.GetChild(0);
                 child.parent = null;
             }
             pivot.parent     = null;
             pivot.up         = Vector3.up;
             pivot.localScale = Vector3.one;
             if (child != null)
             {
                 child.parent = pivot;
             }
             pivot.parent = tempParent;
         }
     }
 }
Beispiel #15
0
 public bool IsLastReceptacle(Receptacle recep)
 {
     if (playerSequence.Last().receptacle == recep)
     {
         return(true);
     }
     return(false);
 }
Beispiel #16
0
    //Click on a note which is in a receptacle and holding in the same time a note. Swap notes.
    public void SwapNotes(NoteObject note)
    {
        NoteReceptacle tmp = Receptacle;

        Receptacle.SwapNote(note);
        TryGrab(null);
        tmp.gameObject.layer = LayerMask.NameToLayer("GvrCannotGrab");
    }
Beispiel #17
0
        public void RemoveConnetionsTest3()
        {
            Receptacle target = new Receptacle(name, interfaceName, isMultiple);
            int        id     = Int32.MaxValue;
            bool       actual = target.RemoveConnetions(id);

            Assert.AreEqual(false, actual);
        }
Beispiel #18
0
 // add receptacle to database
 // requires receptacle object
 // returns boolean
 public Boolean AddReceptacle(Receptacle pin)
 {
     if (GetReceptacle(pin.ID) == null)
     {
         conn.Insert(pin);
         return(true);
     }
     return(false);
 }
Beispiel #19
0
        public void RemoveConnetionsTest()
        {
            Receptacle         target     = new Receptacle(name, interfaceName, isMultiple);
            MarshalByRefObject connection = connections[0];
            int  id     = target.AddConnections(connection);
            bool actual = target.RemoveConnetions(id);

            Assert.AreEqual(true, actual);
        }
Beispiel #20
0
 // udpates receptacle in database
 // requires receptacle object
 // returns receptacle ID
 public int UpdateReceptacle(Receptacle rec)
 {
     if (GetReceptacle(rec.ID) != null)
     {
         conn.Update(rec);
         return(rec.ID);
     }
     AddReceptacle(rec);
     return(rec.ID);
 }
Beispiel #21
0
        public void GetDescriptionTest1()
        {
            Receptacle            target   = new Receptacle(name, interfaceName, isMultiple);
            ReceptacleDescription expected = new ReceptacleDescription(name, interfaceName, isMultiple, new ConnectionDescription[0]);
            ReceptacleDescription actual   = target.GetDescription();

            Assert.AreEqual(expected.name, actual.name);
            Assert.AreEqual(expected.interface_name, actual.interface_name);
            Assert.AreEqual(expected.is_multiplex, actual.is_multiplex);
        }
Beispiel #22
0
 //tries to get a receptacle from a collider, returns false if none found
 public static bool GetReceptacleFromCollider(Collider c, out Receptacle r)
 {
     r = null;
     if (c.attachedRigidbody == null)
     {
         //all sim objs must have a kinematic rigidbody
         return(false);
     }
     r = c.attachedRigidbody.GetComponent <Receptacle> ();
     return(r != null);
 }
        public void pong()
        {
            Console.WriteLine("[Executando o método pong no componente Pong]");
            Receptacle receptacle = context.GetReceptacles()["PongRec"];

            foreach (ConnectionDescription connection in receptacle.GetConnections())
            {
                PingPongServer pingPongServer = connection.objref as PingPongServer;
                pingPongServer.pong();
            }
        }
Beispiel #24
0
        public void GetReceptacleByNameTest1()
        {
            string     name          = typeof(IComponent).Name;
            string     interfaceName = Repository.GetRepositoryID(typeof(IComponent));
            Receptacle expected      = new Receptacle(name, interfaceName, true);

            context.AddReceptacle(name, interfaceName, true);
            Receptacle actual = context.GetReceptacleByName(name);

            Assert.AreEqual(expected, actual);
        }
Beispiel #25
0
    public void ReceptacleRemovedIngredient(Receptacle recep)
    {
        var index = playerSequence.FindIndex(r => r.receptacle == recep);

        if (playerSequence[index].isGoodanswer)
        {
            completion -= 1.0f / currentSequence.Count;
            Completion.Invoke(completion);
        }
        playerSequence.RemoveAt(index);
    }
Beispiel #26
0
    //gets all SimObjs contained in a receptacle
    //this does not TAKE any of these items
    public static SimObj[] GetItemsFromReceptacle(Receptacle r)
    {
        List <SimObj> items = new List <SimObj>();

        foreach (Transform t in r.Pivots)
        {
            if (t.childCount > 0)
            {
                items.Add(t.GetChild(0).GetComponent <SimObj>());
            }
        }
        return(items.ToArray());
    }
Beispiel #27
0
 public static bool GetFirstEmptyReceptaclePivot(Receptacle r, out Transform emptyPivot)
 {
     emptyPivot = null;
     for (int i = 0; i < r.Pivots.Length; i++)
     {
         if (r.Pivots [i].childCount == 0)
         {
             emptyPivot = r.Pivots [i];
             break;
         }
     }
     return(emptyPivot != null);
 }
Beispiel #28
0
        public void RemoveReceptaclesTest()
        {
            ReceptacleInfomation recInfo = receptacleList[0];
            Receptacle           actual  = context.GetReceptacleByName(recInfo.name);

            Assert.IsNull(actual);

            context.AddReceptacle(recInfo.name, recInfo.interfaceName, recInfo.isMultiple);
            actual = context.GetReceptacleByName(recInfo.name);
            Assert.IsNotNull(actual);

            context.RemoveReceptacle(recInfo.name);
            actual = context.GetReceptacleByName(recInfo.name);
            Assert.IsNull(actual);
        }
Beispiel #29
0
        public void GetConnectionsTest()
        {
            Receptacle target = new Receptacle(name, interfaceName, isMultiple);
            List <ConnectionDescription> expected = new List <ConnectionDescription>();
            List <ConnectionDescription> actual   = target.GetConnections();

            Assert.AreEqual(expected.Count, actual.Count);
            for (int i = 0; i < connections.Count; i++)
            {
                target.AddConnections(connections[i]);
            }

            actual = target.GetConnections();
            Assert.AreEqual(connections.Count, actual.Count);
        }
Beispiel #30
0
        /// <summary>
        /// Obtém as conexões existentes no receptáculo.
        /// </summary>
        /// <param name="receptacle">O nome do receptáculo.</param>
        /// <returns>O conjunto de descritores de conexão.</returns>
        /// <exception cref="InvalidName">Caso um nome seja inválido.</exception>
        public ConnectionDescription[] getConnections(string receptacle)
        {
            IDictionary <string, Receptacle> receptacles = context.GetReceptacles();

            if (!receptacles.ContainsKey(receptacle))
            {
                throw new InvalidName {
                          name = receptacle
                }
            }
            ;

            Receptacle rec = receptacles[receptacle];

            return(rec.GetConnections().ToArray());
        }