예제 #1
0
 public static LabeledObject[] ForObjects(object[] values)
 {
     var labeledObjects = new LabeledObject
         [values.Length];
     for (var i = 0; i < values.Length; i++)
     {
         labeledObjects[i] = new LabeledObject(values[i]);
     }
     return labeledObjects;
 }
            protected override void Configure(IConfiguration config)
            {
                LabeledObject transparentActivation = (LabeledObject)TransparentActivationFixture
                                                      .Value;

                if ((bool)transparentActivation.Value())
                {
                    config.Add(new TransparentActivationSupport());
                }
            }
예제 #3
0
        public static LabeledObject[] ForObjects(object[] values)
        {
            var labeledObjects = new LabeledObject
                                 [values.Length];

            for (var i = 0; i < values.Length; i++)
            {
                labeledObjects[i] = new LabeledObject(values[i]);
            }
            return(labeledObjects);
        }
예제 #4
0
            public void Otherwise_drags_out_the_enumerable_by_the_drag_lengths()
            {
                var f     = this.fixture;
                var item1 = new LabeledObject
                {
                    Label = f.Create <string>()
                };
                var item2 = new LabeledObject
                {
                    Label = f.Create <string>()
                };
                var item3 = new LabeledObject
                {
                    Label = f.Create <string>()
                };
                var items = new[]
                {
                    item1, item2, item3
                };

                ICollection <LabeledObject> collection = new LinkedList <LabeledObject>(
                    this.dragger.Drag(
                        items,
                        new ArrayLot <int>(new[] { 5, 4, 6 })));
                ICollection <LabeledObject> itemOnes = new LinkedList <LabeledObject>(
                    EnumerableHelpers.Where(
                        collection,
                        lo => ReferenceEquals(lo, item1)));
                ICollection <LabeledObject> itemTwos = new LinkedList <LabeledObject>(
                    EnumerableHelpers.Where(
                        collection,
                        lo => ReferenceEquals(lo, item2)));
                ICollection <LabeledObject> itemThrees = new LinkedList <LabeledObject>(
                    EnumerableHelpers.Where(
                        collection,
                        lo => ReferenceEquals(lo, item3)));

                Assert.Equal(5, itemOnes.Count);
                Assert.Equal(4, itemTwos.Count);
                Assert.Equal(6, itemThrees.Count);
            }
예제 #5
0
    // Update is called once per frame
    void Update()
    {
        OVRInput.Update();

        right_rot = OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTouch);
        right_pos = OVRInput.GetLocalControllerPosition(OVRInput.Controller.RTouch);

        if (OVRInput.Get(OVRInput.RawButton.B) && !B_pressed && !LabelToolManager.DialogOpen)
        {
            B_pressed = true;
            //Add a new color to the list of colors for bounding boxes
            trackColorList.Add(generateColor());
            //assigns a unique color to each track
            if (labeledObjectList.Count > 0)
            {
                int i = 0;
                foreach (LabeledObject obj in labeledObjectList)
                {
                    meshrenderer = obj.objectBoundingBox.GetComponent <MeshRenderer>();
                    meshrenderer.material.color = trackColorList[i];
                    //make material transparent

                    i += 1;
                }
            }
            // Increment TrackID and assign currentTrackID
            LabelToolManager.TrackID++;
            LabelToolManager.currentTrackID = LabelToolManager.TrackID;
            newTrackCreationInitiated       = true;
        }
        else if (!OVRInput.Get(OVRInput.RawButton.B) && B_pressed)
        {
            B_pressed = false;
        }

        if (LabelToolManager.trackChoiceDone && newTrackCreationInitiated)
        {
            Debug.Log("New Track, new box");
            // Create a placeholder object with the current track ID when beginning a new track
            GameObject newBoundingBox = GameObject.CreatePrimitive(PrimitiveType.Cube);

            // Set object's position at the origin of the coordinate system to distinguish from labeled objects
            newBoundingBox.transform.position   = new Vector3(0f, 0f, 0f);
            newBoundingBox.transform.localScale = new Vector3(0.000001f, 0.000001f, 0.000001f);
            newBoundingBox.transform.rotation   = new Quaternion(0, 0, 0, 0);

            newBoundingBox.transform.SetParent(SceneObject.transform, true);
            meshrenderer = newBoundingBox.GetComponent <MeshRenderer>();
            meshrenderer.material.color = Color.red;
            meshrenderer.material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
            meshrenderer.material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
            meshrenderer.material.SetInt("_ZWrite", 0);
            meshrenderer.material.DisableKeyword("_ALPHATEST_ON");
            meshrenderer.material.DisableKeyword("_ALPHABLEND_ON");
            meshrenderer.material.EnableKeyword("_ALPHAPREMULTIPLY_ON");
            meshrenderer.material.renderQueue = 3000;

            Debug.Log("Choices: Class: " + LabelToolManager.choice[0] +
                      ", Priority: " + LabelToolManager.choice[1] +
                      ", Direction: " + LabelToolManager.choice[2] +
                      ", Moves: " + LabelToolManager.choice[3] +
                      ", Lane: " + LabelToolManager.choice[4]);

            LabeledObject labeledObject = new LabeledObject(newBoundingBox,
                                                            LabelToolManager.TrackID,
                                                            LabelToolManager.choice[0],
                                                            LabelToolManager.choice[5],
                                                            LabelToolManager.choice[1],
                                                            LabelToolManager.choice[2],
                                                            LabelToolManager.choice[3],
                                                            LabelToolManager.choice[4],
                                                            0,
                                                            0,
                                                            0);
            labeledObjectList.Add(labeledObject);

            LabelToolManager.trackInformationList.Add(new TrackInformation(LabelToolManager.TrackID, LabelToolManager.choice));

            Debug.Log("Object created");
            newTrackCreationInitiated = false;
        }

        if ((OVRInput.Get(OVRInput.Axis2D.SecondaryThumbstick)[0] > LabelToolManager.threshold) && !A_pressed && (labeledObjectList.Count >= 1) && (LabelToolManager.currentTrackID <= LabelToolManager.TrackID) && !LabelToolManager.DialogOpen)
        {
            if (LabelToolManager.currentTrackID < LabelToolManager.TrackID)
            {
                int i = 0;
                foreach (LabeledObject obj in labeledObjectList)
                {
                    meshrenderer = obj.objectBoundingBox.GetComponent <MeshRenderer>();
                    meshrenderer.material.color = trackColorList[i];
                    i += 1;
                }
                LabelToolManager.currentTrackID++;
                meshrenderer = labeledObjectList[LabelToolManager.currentTrackID].objectBoundingBox.GetComponent <MeshRenderer>();
                meshrenderer.material.color = Color.red;
            }
            else if (LabelToolManager.currentTrackID == LabelToolManager.TrackID)
            {
                //TODO: UI info
            }
            A_pressed = true;

            Debug.Log("Right controller stick pressed right");
            Debug.Log("currentTrackID: " + LabelToolManager.currentTrackID);
            Debug.Log("TrackID: " + LabelToolManager.TrackID);
        }
        else if ((OVRInput.Get(OVRInput.Axis2D.SecondaryThumbstick)[0] < -LabelToolManager.threshold) && !A_pressed && !LabelToolManager.DialogOpen)
        {
            if (LabelToolManager.currentTrackID > 0)
            {
                int i = 0;
                foreach (LabeledObject obj in labeledObjectList)
                {
                    meshrenderer = obj.objectBoundingBox.GetComponent <MeshRenderer>();
                    meshrenderer.material.color = trackColorList[i];
                    i += 1;
                }
                LabelToolManager.currentTrackID--;
                meshrenderer = labeledObjectList[LabelToolManager.currentTrackID].objectBoundingBox.GetComponent <MeshRenderer>();
                meshrenderer.material.color = Color.red;
            }
            else if (LabelToolManager.currentTrackID == 0)
            {
                //TODO: UI info
            }
            A_pressed = true;

            Debug.Log("Switched Track: currentTrackID= " + LabelToolManager.currentTrackID + ", Tracks in total: " + LabelToolManager.TrackID);
        }
        else if (OVRInput.Get(OVRInput.Axis2D.SecondaryThumbstick).magnitude < LabelToolManager.threshold && A_pressed)
        {
            A_pressed = false;
        }

        if (OVRInput.Get(OVRInput.RawButton.A) && !A_pressed && !LabelToolManager.DialogOpen && LabelToolManager.TrackID >= 0)
        {
            Debug.Log("labeled objects in list: " + labeledObjectList.Count);
            if (labeledObjectList[LabelToolManager.currentTrackID].objectBoundingBox.GetComponent <MeshRenderer>().material.color == Color.red)
            {
                labeledObjectList[LabelToolManager.currentTrackID].objectBoundingBox = ResizeBox(labeledObjectList[LabelToolManager.currentTrackID].objectBoundingBox);
                meshrenderer = labeledObjectList[LabelToolManager.currentTrackID].objectBoundingBox.GetComponent <MeshRenderer>();
                meshrenderer.material.color = Color.red;
                QualityDialog.SetActive(true);
            }
            A_pressed = true;
        }
        else if (!OVRInput.Get(OVRInput.RawButton.A) && A_pressed && (OVRInput.Get(OVRInput.Axis1D.SecondaryIndexTrigger) > LabelToolManager.threshold))
        {
            A_pressed = false;
            QualityDialog.SetActive(false);
        }



        if (OVRInput.Get(OVRInput.Axis1D.SecondaryHandTrigger) > LabelToolManager.threshold && !hand_trigger_pushed)
        {
            thisObject = labeledObjectList[LabelToolManager.currentTrackID].objectBoundingBox;
            //Debug.Log("Grabbed pcd");
            tf_rel = Matrix4x4.Inverse(
                Matrix4x4.TRS(right_pos,
                              right_rot,
                              ones))
                     * Matrix4x4.TRS(thisObject.transform.position, thisObject.transform.rotation, ones);
            hand_trigger_pushed = true;
        }
        else if (OVRInput.Get(OVRInput.Axis1D.SecondaryHandTrigger) > LabelToolManager.threshold && hand_trigger_pushed)
        {
            //tf_rel = Matrix4x4.Inverse(
            //    Matrix4x4.TRS(right_pos,
            //    right_rot,
            //    ones))
            //    * Matrix4x4.TRS(thisObject.transform.position, Quaternion.Euler(new Vector3(0.0f, thisObject.transform.rotation.eulerAngles[1], 0.0f)), ones);

            tf_pcd = Matrix4x4.TRS(right_pos,
                                   right_rot,
                                   new Vector3(1.0f, 1.0f, 1.0f)) * tf_rel;

            thisObject.transform.rotation = QuaternionFromMatrix(tf_pcd);
            thisObject.transform.position = PositionFromMatrix(tf_pcd);
        }
        else if (OVRInput.Get(OVRInput.Axis1D.SecondaryHandTrigger) == 0.0f && hand_trigger_pushed)
        {
            //Debug.Log("Released pcd");
            hand_trigger_pushed = false;
        }

        //if (OVRInput.Get(OVRInput.Axis1D.SecondaryHandTrigger) > LabelToolManager.threshold)
        //{
        //    labeledObjectList[LabelToolManager.currentTrackID].objectBoundingBox.transform.SetPositionAndRotation(right_pos, right_rot);
        //}
    }
예제 #6
0
    public static void loadObject(
        int objID,
        int objClass,
        int objPriority,
        int objDirection,
        int objIsParking,
        int objLane,
        int objQuality,
        int objFirstClearAppearance,
        int objLastClearAppearance,
        int objClearestShot,
        float objPosX,
        float objPosY,
        float objPosZ,
        float objRotX,
        float objRotY,
        float objRotZ,
        float objRotW,
        float objLocalScaleX,
        float objLocalScaleY,
        float objLocalScaleZ,
        bool objColorRed)
    {
        GameObject newBoundingBox = GameObject.CreatePrimitive(PrimitiveType.Cube);

        SceneObject = GameObject.Find("SceneObject");
        newBoundingBox.transform.parent = SceneObject.transform;
        // TODO: compensate for the position and the rotation of the pointcloud in previous scene when loading the objects

        newBoundingBox.transform.position   = SceneObject.transform.position + SceneObject.transform.rotation * new Vector3(objPosX, objPosY, objPosZ);
        newBoundingBox.transform.rotation   = SceneObject.transform.rotation * new Quaternion(objRotX, objRotY, objRotZ, objRotW);
        newBoundingBox.transform.localScale = new Vector3(objLocalScaleX, objLocalScaleY, objLocalScaleZ);

        meshrenderer = newBoundingBox.GetComponent <MeshRenderer>();
        meshrenderer.material.color = Color.red;
        meshrenderer.material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
        meshrenderer.material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
        meshrenderer.material.SetInt("_ZWrite", 0);
        meshrenderer.material.DisableKeyword("_ALPHATEST_ON");
        meshrenderer.material.DisableKeyword("_ALPHABLEND_ON");
        meshrenderer.material.EnableKeyword("_ALPHAPREMULTIPLY_ON");
        meshrenderer.material.renderQueue = 3000;

        if (objColorRed == true)
        {
            meshrenderer.material.color = Color.red;
        }
        else if (objColorRed == false)
        {
            //assigns a unique color to each bounding box and stores in trackColorList
            if (trackColorList.Count() != 0 && objID < trackColorList.Count())
            {
                meshrenderer.material.color = trackColorList[objID];
            }
            else
            {
                meshrenderer.material.color = generateColor();
                trackColorList.Add(meshrenderer.material.color);
            }
            Debug.Log("Track " + objID + " with color " + meshrenderer.material.color);
        }

        LabeledObject labeledObj = new LabeledObject(
            newBoundingBox,
            objID,
            objClass,
            objQuality,
            objPriority,
            objDirection,
            objIsParking,
            objLane,
            objFirstClearAppearance,
            objLastClearAppearance,
            objClearestShot);

        labeledObjectList.Add(labeledObj);
        Debug.Log("Created Placeholder with ID: " + labeledObj.objectID + "    Created red:" + objColorRed);
    }
 public override IFixtureProvider[] FixtureProviders()
 {
     return(new IFixtureProvider[] { new SubjectFixtureProvider(new SingleTypeCollectionReplicationTest.CollectionHolderFactory
                                                                [] { Collection1(), Collection2(), Collection3() }), new SimpleFixtureProvider(TransparentActivationFixture
                                                                                                                                               , (object[])LabeledObject.ForObjects(new object[] { false, true })) });
 }