public void JoinRoom(string roomToJoin, string userName)
        {
            Debug.Assert(!string.IsNullOrEmpty(userName), "Username cannot be null or empty");
            RoomName      = roomToJoin;
            localUserName = userName;

            if (NeuraCore.Instance.socket == null || !NeuraCore.Instance.socket.isConnected)
            {
                print("Not connected, trying to auto connect");
                OnConnected += AutoJoinRoom;
                Connect();
                return;
            }
            if (inRoom)
            {
                print("Cannot join room when already in one");
                return;
            }
            globalState                  = new RoomStateGen();
            requestedSiteDrive           = "";
            requestedPoi                 = new TargetPlacementObject();
            requestedAnnotation          = new AnnotationObject();
            requestedAnnotationDeletions = new List <AnnotationObject>();
            NeuraCore.Instance.JoinRoom(roomToJoin, userName);
        }
Example #2
0
        public void TestPoi()
        {
            TargetPlacementObject poi = new TargetPlacementObject
            {
                id       = 0,
                isValid  = true,
                name     = "testPoi",
                position = Vector3.one
            };
            var fbb    = new FlatBufferBuilder(1024);
            var offset = poi.ToBuffer(fbb);

            fbb.Finish(offset.Value);
            var bArray = fbb.SizedByteArray();
            var bb     = new ByteBuffer(bArray);
            var desPoi = TargetPlacement.GetRootAsTargetPlacement(bb);

            print("Poi Test : " + (ComparePOI(poi, desPoi) ? "Passed" : "Failed"));
        }
        /// <summary>
        /// Requests neuralyzer to place or move the poi.
        /// </summary>
        /// <param name="position">The proposed position of the POI</param>
        /// <returns>Returns whether neuralyzer has handled the request </returns>
        public bool RequestPOIPlacement(UnityEngine.Vector3 position)
        {
            if (!inRoom) // not in a room so do not handle this change
            {
                return(false);
            }
            if (globalState.poiPlacementObject.isValid && globalState.poiPlacementObject.position == position)
            {
                return(true);
            }

            requestedPoi = new TargetPlacementObject
            {
                id       = 0,
                name     = "POI",
                position = position,
                isValid  = true
            };
            return(true);
        }
Example #4
0
        public void TestStateUpdate()
        {
            var sup     = new StateUpdateObject();
            var created = new RoomObjectObj
            {
                disposable    = true,
                id            = 27,
                isHidden      = false,
                lookDirection = Vector3.forward,
                owner         = "test",
                position      = Vector3.one,
                prefab        = "a test thing"
            };
            var updated = new RoomObjectObj
            {
                disposable    = false,
                id            = 23,
                isHidden      = true,
                lookDirection = Vector3.back,
                owner         = "test",
                position      = Vector3.down,
                prefab        = ""
            };
            var deleted = 0;

            var TestAnnotation = new AnnotationObject
            {
                isValid   = true,
                lineId    = "testLine",
                positions = new[] { Vector3.one },
                userId    = "testUser"
            };

            TargetPlacementObject poi = new TargetPlacementObject
            {
                id       = 0,
                isValid  = true,
                name     = "testPoi",
                position = Vector3.one
            };

            var sitedrive = "SomeSiteDrive";

            var TestSUP = new StateUpdateObject
            {
                poiPlacementObject = poi,
                annotationObjects  = new List <AnnotationObject>()
                {
                    TestAnnotation
                },
                create = new List <RoomObjectObj>()
                {
                    created
                },
                update = new List <RoomObjectObj>()
                {
                    updated
                },
                delete = new List <int>()
                {
                    deleted
                },
                siteDrive = sitedrive
            };

            var fbb    = new FlatBufferBuilder(1024);
            var offset = TestSUP.ToBuffer(fbb);

            fbb.Finish(offset.Value);
            var bArray = fbb.SizedByteArray();
            var bb     = new ByteBuffer(bArray);
            var desObj = StateUpdate.GetRootAsStateUpdate(bb);
            var passed = CompareStateUpdates(desObj, TestSUP);

            print("State Update : " + (passed ? "Passed" : "Failed"));
        }
Example #5
0
 private bool ComparePOI(TargetPlacementObject poi, TargetPlacement desPoi)
 {
     return(desPoi.Id == poi.id && desPoi.Name == poi.name &&
            new Vector3(desPoi.Position.Value.X, desPoi.Position.Value.Y, desPoi.Position.Value.Z) ==
            poi.position);
 }
Example #6
0
        private bool TestStateUpdateMessage()
        {
            var sup     = new StateUpdateObject();
            var created = new RoomObjectObj
            {
                disposable    = true,
                id            = 27,
                isHidden      = false,
                lookDirection = Vector3.forward,
                owner         = "test",
                position      = Vector3.one,
                prefab        = "a test thing"
            };
            var updated = new RoomObjectObj
            {
                disposable    = false,
                id            = 23,
                isHidden      = true,
                lookDirection = Vector3.back,
                owner         = "test",
                position      = Vector3.down,
                prefab        = ""
            };
            var deleted = 0;

            var TestAnnotation = new AnnotationObject
            {
                isValid   = true,
                lineId    = "testLine",
                positions = new[] { Vector3.one },
                userId    = "testUser"
            };

            TargetPlacementObject poi = new TargetPlacementObject
            {
                id       = 0,
                isValid  = true,
                name     = "testPoi",
                position = Vector3.one
            };

            var sitedrive = "SomeSiteDrive";

            var TestSUP = new StateUpdateObject
            {
                poiPlacementObject = poi,
                annotationObjects  = new List <AnnotationObject>()
                {
                    TestAnnotation
                },
                create = new List <RoomObjectObj>()
                {
                    created
                },
                update = new List <RoomObjectObj>()
                {
                    updated
                },
                delete = new List <int>()
                {
                    deleted
                },
                siteDrive = sitedrive
            };

            var buf    = ServerMessageFactory.BuildMessage(TestSUP);
            var bb     = new ByteBuffer(buf);
            var desMsg = ServerMessage.GetRootAsServerMessage(bb);
            var passed = true;

            passed &= desMsg.DataType == msg.StateUpdate;
            if (passed)
            {
                passed &= CompareStateUpdates(desMsg.Data <StateUpdate>().Value, TestSUP);
            }
            return(passed);
        }