Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        if (_epiSimSocket != null)
        {
            string epiSimUrl = string.Format("{0}:{1}", _epiSimSocket.address, _epiSimSocket.port);
            if (_epiSimSocket.isConnected)
            {
                if (commBridge.tryAgainSockets.ContainsKey(epiSimUrl))
                {
                    if (commBridge.tryAgainSockets[epiSimUrl] == typeof(FusionSocket))
                    {
                        _epiSimSocket = (EpistemicState)commBridge.FindRestClientByLabel("EpiSim");
                        //Debug.Log(_fusionSocket.IsConnected());
                    }
                }

                //string inputFromFusion = _fusionSocket.GetMessage();
                //if (inputFromFusion != "") {
                //    Debug.Log(inputFromFusion);
                //    Debug.Log(_fusionSocket.HowManyLeft() + " messages left.");
                //    _fusionSocket.OnFusionReceived(this, new FusionEventArgs(inputFromFusion));
                //}
            }
            else
            {
                //SocketConnection _retry = socketConnections.FirstOrDefault(s => s.GetType() == typeof(FusionSocket));
                //TryReconnectSocket(_fusionSocket.Address, _fusionSocket.Port, typeof(FusionSocket), ref _retry);
                //_fusionSocket.OnConnectionLost(this, null);
                if (!commBridge.tryAgainRest.ContainsKey(epiSimUrl))
                {
                    commBridge.tryAgainRest.Add(epiSimUrl, _epiSimSocket.GetType());
                }
            }
        }
    }
Exemplo n.º 2
0
    private void mock()
    {
        model = new EpistemicState();
        // creating Concept instances (actions)
        // available types: ACTION, OBJECT, PROPERTY
        // available modes: L, G
        Concept yesL = new Concept("posack", ConceptType.ACTION, ConceptMode.L);
        Concept yesG = new Concept("POSACK", ConceptType.ACTION, ConceptMode.G);
        Concept noL  = new Concept("negack", ConceptType.ACTION, ConceptMode.L);
        Concept noG  = new Concept("NEGACK", ConceptType.ACTION, ConceptMode.G);

        // add concepts to the epistemic model
        model.AddConcept(yesL);
        model.AddConcept(yesG);
        model.AddConcept(noL);
        model.AddConcept(noG);
        // add relations between them, third boolean param is bidirectional
        model.AddRelation(yesG, yesL, true);
        model.AddRelation(noG, noL, true);

        // now add more concepts (objects)
        Concept redBlock   = new Concept("RED", ConceptType.OBJECT, ConceptMode.L);
        Concept blueBlock  = new Concept("BLUE", ConceptType.OBJECT, ConceptMode.L);
        Concept greenBlock = new Concept("GREEN", ConceptType.OBJECT, ConceptMode.L);

        model.AddConcept(redBlock);
        model.AddConcept(blueBlock);
        model.AddConcept(greenBlock);

        model.SetEpisimUrl("http://localhost:5000");
    }
Exemplo n.º 3
0
 		public static string JsonifyUpdatedRelations(EpistemicState state, params Relation[] relations) {
 			if (relations.Length <= 0) return "[]";
 			var collection = state.GetConcepts(relations[0].Origin.Type);
 			return string.Format("[{0}]", string.Join(", ",
 				relations.Select(relation =>
 					string.Format("\"{0}{7}{1}{7}{2}{7}{3}{7}{4}{6}{5:0.00}\"",
 						(int) collection.Type(),
 						(int) relation.Origin.Mode,
 						collection.GetIndex(relation.Origin),
 						(int) relation.Destination.Mode,
 						collection.GetIndex(relation.Destination),
 						relation.Certainty,
 						CertaintySep, JsonRelationConnector
 					)).ToArray()));
 		}
Exemplo n.º 4
0
    private void second_mock()
    {
        model = new EpistemicState();
        // creating Concept instances (actions)
        // available types: ACTION, OBJECT, PROPERTY
        // available modes: L, G
        Concept pushG  = new Concept("push", ConceptType.ACTION, ConceptMode.G);
        Concept rightL = new Concept("RIGHT", ConceptType.PROPERTY, ConceptMode.L);

        model.AddConcept(pushG);
        model.AddConcept(rightL);

        // now add more concepts (objects)

        model.SetEpisimUrl("http://localhost:5000");
    }
Exemplo n.º 5
0
    		public static string JsonifyUpdatedConcepts(EpistemicState state, params Concept[] concepts) {
    			if (concepts.Length <= 0) return "[]";
    			var updatedConceptIndices = new string[concepts.Length];
    			for (int i = 0; i < concepts.Length; i++) {
    				var concept = concepts[i];
    				var collection = state.GetConcepts(concept.Type);
    				updatedConceptIndices[i] =
    					string.Format("\"{0}{5}{1}{5}{2}{4}{3:0.00}\"",
    						(int) concept.Type,
    						(int) concept.Mode,
    						collection.GetIndex(concept),
    						concept.Certainty,
    						CertaintySep, JsonRelationConnector);
    			}

    			return string.Format("[{0}]", string.Join(", ", updatedConceptIndices));
    		}
Exemplo n.º 6
0
    public void TestActualModel()
    {
        model = EpistemicModel.initModel();
        model.SetEpisimUrl("http://localhost:5000");
//		var json = Jsonifier.JsonifyEpistemicState(model);
//		Debug.Log(json);
        model.InitiateEpisim();
        var moveL = model.GetConcept("PUT", ConceptType.ACTION, ConceptMode.L);
        var pushL = model.GetConcept("PUSH", ConceptType.ACTION, ConceptMode.L);

        if ((moveL != null) && (pushL != null))
        {
            moveL.Certainty = -1;
            pushL.Certainty = -1;
            var json = Jsonifier.JsonifyEpistemicStateInitiation(model);
            Debug.Log(json);
            model.UpdateEpisim(new[] { moveL, pushL }, new Relation[] { });
        }
    }
Exemplo n.º 7
0
    // Use this for initialization
    void Start()
    {
        engaged = false;

        if (reuseModel)
        {
            idUser = true;
            userNameModalWindow            = gameObject.AddComponent <UserNameModalWindow>();
            userNameModalWindow.windowRect =
                new Rect(Screen.width / 2 - 185 / 2, Screen.height / 2 - 60 / 2, 185, 60);
            userNameModalWindow.Render          = true;
            userNameModalWindow.AllowDrag       = false;
            userNameModalWindow.AllowResize     = false;
            userNameModalWindow.AllowForceClose = false;
            userNameModalWindow.UserNameEvent  += IdentifyUser;
        }

        if (state == null)
        {
            state = initModel();
            Debug.Log(state);
        }


        if (PlayerPrefs.HasKey("URLs"))
        {
            string epiSimUrlString = string.Empty;
            foreach (string url in PlayerPrefs.GetString("URLs").Split(';'))
            {
                if (url.Split('=')[0] == "EpiSim URL")
                {
                    epiSimUrlString = url.Split('=')[1];
                    string epiSimUrl = !epiSimUrlString.StartsWith("http://")
                                                ? "http://" + epiSimUrlString
                                                : epiSimUrlString;
                    state.SetEpisimUrl(epiSimUrl);
                    state.InitiateEpisim();
                    break;
                }
            }
        }
    }
Exemplo n.º 8
0
    public static EpistemicState initModel()
    {
        EpistemicState state = new EpistemicState();
        // creating Concept instances (actions)
        // available types: ACTION, OBJECT, PROPERTY
        // available modes: L, G
        Concept pointG        = new Concept("point", ConceptType.ACTION, ConceptMode.G);
        Concept deixis_thisL  = new Concept("THIS", ConceptType.ACTION, ConceptMode.L);
        Concept deixis_thatL  = new Concept("THAT", ConceptType.ACTION, ConceptMode.L);
        Concept deixis_thereL = new Concept("THERE", ConceptType.ACTION, ConceptMode.L);
        Concept grabG         = new Concept("grab", ConceptType.ACTION, ConceptMode.G);
        Concept grabL         = new Concept("GRAB", ConceptType.ACTION, ConceptMode.L);
        Concept moveG         = new Concept("move", ConceptType.ACTION, ConceptMode.G);
        //Concept moveL = new Concept ("PUT", ConceptType.ACTION, ConceptMode.L);
        Concept pushG = new Concept("push", ConceptType.ACTION, ConceptMode.G);
        //Concept pushL = new Concept ("PUSH", ConceptType.ACTION, ConceptMode.L);

        Concept posackG = new Concept("posack", ConceptType.ACTION, ConceptMode.G);
        Concept posackL = new Concept("YES", ConceptType.ACTION, ConceptMode.L);
        Concept negackG = new Concept("negack", ConceptType.ACTION, ConceptMode.G);
        Concept negackL = new Concept("NO", ConceptType.ACTION, ConceptMode.L);

        // todo nevermind as "undo" and nothing as "cancel"
        Concept neverMindL = new Concept("NEVERMIND", ConceptType.ACTION, ConceptMode.L);
        Concept nothingL   = new Concept("NOTHING", ConceptType.ACTION, ConceptMode.L);

        // add concepts to the epistemic model
        state.AddConcept(pointG);
        state.AddConcept(deixis_thisL);
        state.AddConcept(deixis_thatL);
        state.AddConcept(deixis_thereL);
        state.AddRelation(pointG, deixis_thisL, true);
        state.AddRelation(pointG, deixis_thatL, true);
        state.AddRelation(pointG, deixis_thereL, true);

        state.AddConcept(grabG);
        state.AddConcept(grabL);
        state.AddRelation(grabG, grabL, true);
        state.AddConcept(moveG);
//			state.AddConcept(moveL);
//			state.AddRelation(moveG, moveL, true);
        state.AddConcept(pushG);
//			state.AddConcept(pushL);
//			state.AddRelation(pushG, pushL, true);

        state.AddConcept(posackG);
        state.AddConcept(posackL);
        state.AddConcept(negackG);
        state.AddConcept(negackL);
        state.AddConcept(neverMindL);
        state.AddConcept(nothingL);
        // add relations between them, third boolean param is bidirectional
        state.AddRelation(posackG, posackL, true);
        state.AddRelation(negackG, negackL, true);

        state.AddPropertyGroup(new PropertyGroup("COLOR", PropertyType.Nominal));
        Concept red    = new Concept("RED", ConceptType.PROPERTY, ConceptMode.L);
        Concept green  = new Concept("GREEN", ConceptType.PROPERTY, ConceptMode.L);
        Concept yellow = new Concept("YELLOW", ConceptType.PROPERTY, ConceptMode.L);
        Concept orange = new Concept("ORANGE", ConceptType.PROPERTY, ConceptMode.L);
        Concept black  = new Concept("BLACK", ConceptType.PROPERTY, ConceptMode.L);
        Concept purple = new Concept("PURPLE", ConceptType.PROPERTY, ConceptMode.L);
        Concept white  = new Concept("WHITE", ConceptType.PROPERTY, ConceptMode.L);

        red.SubgroupName    = "COLOR";
        green.SubgroupName  = "COLOR";
        yellow.SubgroupName = "COLOR";
        orange.SubgroupName = "COLOR";
        black.SubgroupName  = "COLOR";
        purple.SubgroupName = "COLOR";
        white.SubgroupName  = "COLOR";
        state.AddConcept(red);
        state.AddConcept(green);
        state.AddConcept(yellow);
        state.AddConcept(orange);
        state.AddConcept(black);
        state.AddConcept(purple);
        state.AddConcept(white);

//			state.AddPropertyGroup(new PropertyGroup("SIZE", PropertyType.Ordinal));
//			Concept small = new Concept("SMALL", ConceptType.PROPERTY, ConceptMode.L);
//			Concept big = new Concept("BIG", ConceptType.PROPERTY, ConceptMode.L);
//			small.SubgroupName = "SIZE";
//			big.SubgroupName = "SIZE";
//			state.AddConcept(small);
//			state.AddConcept(big);

        state.AddPropertyGroup(new PropertyGroup("DIRECTION", PropertyType.Nominal));
        Concept left    = new Concept("LEFT", ConceptType.PROPERTY, ConceptMode.L);
        Concept right   = new Concept("RIGHT", ConceptType.PROPERTY, ConceptMode.L);
        Concept back    = new Concept("BACK", ConceptType.PROPERTY, ConceptMode.L);
        Concept forward = new Concept("FRONT", ConceptType.PROPERTY, ConceptMode.L);
        Concept up      = new Concept("UP", ConceptType.PROPERTY, ConceptMode.L);
        Concept down    = new Concept("DOWN", ConceptType.PROPERTY, ConceptMode.L);

        left.SubgroupName    = "DIRECTION";
        right.SubgroupName   = "DIRECTION";
        back.SubgroupName    = "DIRECTION";
        forward.SubgroupName = "DIRECTION";
        up.SubgroupName      = "DIRECTION";
        down.SubgroupName    = "DIRECTION";
        state.AddConcept(left);
        state.AddConcept(right);
        state.AddConcept(back);
        state.AddConcept(forward);
        state.AddConcept(up);
        state.AddConcept(down);

        Debug.Log(state);
        return(state);
    }
Exemplo n.º 9
0
 // Use this for initialization
 void Start()
 {
     commBridge    = GameObject.Find("CommunicationsBridge").GetComponent <CommunicationsBridge>();
     _epiSimSocket = (EpistemicState)commBridge.FindRestClientByLabel("EpiSim");
 }
Exemplo n.º 10
0
 		public static string JsonifyEpistemicStateInitiation(EpistemicState collections) {
 			return string.Format("{{{0}}}",
 				string.Join(", ",
 					collections.GetAllConcepts().Select(JsonifyConceptDefinitions)
 						.ToArray()));
 		}
Exemplo n.º 11
0
 		public static string JsonifyUpdates(EpistemicState state, Concept[] concepts, Relation[] relations) {
 			return string.Format("{{\"c\": {0}, \"r\": {1}}}",
 				JsonifyUpdatedConcepts(state, concepts),
 				JsonifyUpdatedRelations(state, relations));
 		}