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); }
public void OnSegmentationCamRender(AnnotationCamera camera, AnnotationObject annotationObject) { if (camera != Segmentation.Camera) { return; } RenderedObjects.Add(annotationObject); }
private void OnWillRenderAnnotationObject(AnnotationCamera camera, AnnotationObject annotationObject) { if (!AnnotatedObjects.Contains(annotationObject)) { return; //Object rendered is not part of this object manager } if (RenderedObjects.ContainsKey(camera)) { RenderedObjects[camera].Add(annotationObject); } else { RenderedObjects.Add(camera, new HashSet <AnnotationObject>() { annotationObject }); } }
private void TestAnnotation() { var TestAnnotation = new AnnotationObject { isValid = true, lineId = "testLine", positions = new [] { Vector3.one }, userId = "testUser" }; var fbb = new FlatBufferBuilder(1024); var offset = TestAnnotation.ToBuffer(fbb); fbb.Finish(offset.Value); var bArray = fbb.SizedByteArray(); var bb = new ByteBuffer(bArray); var desObj = Annotation.GetRootAsAnnotation(bb); print("Annotation Object Test : " + (CompareAnnotations(TestAnnotation, desObj) ? "Passed" : "Failed")); }
public bool RequestAddAnnotation(AnnotationObject newAnno) { if (!inRoom) // not in a room so do not handle this change { return(false); } //update local state if (globalState.annotationObjects != null && globalState.annotationObjects.Any(ao => ao.lineId == newAnno.lineId)) { globalState.annotationObjects[ globalState.annotationObjects.IndexOf( globalState.annotationObjects.Single(ao => ao.lineId == newAnno.lineId))] = newAnno; } else { (globalState.annotationObjects ?? (globalState.annotationObjects = new List <AnnotationObject>())).Add(newAnno); } requestedAnnotation = newAnno; return(true); }
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")); }
private bool CompareAnnotations(AnnotationObject TestAnnotation, Annotation desObj) { return(desObj.LineId == TestAnnotation.lineId && desObj.UserId == TestAnnotation.userId && new Vector3(desObj.Positions(0).Value.X, desObj.Positions(0).Value.Y, desObj.Positions(0).Value.Z) == Vector3.one); }
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); }
public uint GetPixelCount(AnnotationObject annotationObject) => pixelCount.ContainsKey(annotationObject) ? pixelCount[annotationObject] : 0;
public void AddSegmentationCamRenderCallback(AnnotationObject annotationObject) { annotationObject.renderCallBacks.Add(OnSegmentationCamRender); }
public override void PreAnnotate() { foreach (AnnotationObject annotationObject in Generator.EditableObjects) { Log("Creating a copy of : " + annotationObject.gameObject.name); AnnotationObject dupedObject = Instantiate(annotationObject, annotationObject.transform.position, annotationObject.transform.rotation); if (clearColorID) { dupedObject.ID = 0; } //if (randomizeColor) //{ // Color randomColor = Random.ColorHSV(); // int amountMaterials = dupedObject.Renderer.materials.Length; // Material[] materials = new Material[amountMaterials]; // //Copy // for (int i = 0; i < amountMaterials; i++) // { // materials[i] = new Material(dupedObject.Renderer.materials[i]); // materials[i].color = randomColor; // } // Log("Randomized duplicate materials with color: " + randomColor.ToString()); // dupedObject.Renderer.materials = materials; //} //if (translateDuplicate) //{ // switch (translationType) // { // case TranslationSpace.WorldSpace: // dupedObject.transform.Translate(translationVector, Space.World); // break; // case TranslationSpace.LocalSpace: // dupedObject.transform.Translate(translationVector, Space.Self); // break; // case TranslationSpace.CameraSpace: // dupedObject.transform.Translate(translationVector, generator.OutputCamera.transform); // break; // case TranslationSpace.RelativeTowardsCamera: // GameObject lookAtGuy = new GameObject("LookAtGuy"); // lookAtGuy.transform.position = generator.OutputCamera.transform.position; // lookAtGuy.transform.LookAt(dupedObject.Renderer.bounds.center); // dupedObject.transform.Translate(translationVector, lookAtGuy.transform); // Destroy(lookAtGuy); // break; // default: // break; // } // Log("Translated duplicate object with :" + translationVector.ToString() + " in space: " + translationType.ToString()); //} objects.Add(dupedObject); } if (swapModifiableObjects) { originalModifiableObjects = Generator.EditableObjects; Generator.EditableObjects = objects; } }