public void UnMatchesWhenBelowMinimumQuality(MARSTrackingState minimum, MARSTrackingState state, float expectedRating)
        {
            m_Condition.MinimumState = minimum;
            var traitValue = (int)state;

            Assert.AreEqual(m_Condition.RateDataMatch(ref traitValue), expectedRating);
        }
コード例 #2
0
        // update any dynamic properties of the marker and return data id
        int UpdateMarkerData(ref MRMarker marker, MARSTrackingState trackingState)
        {
            marker.trackingState = trackingState;
            var dataId = this.AddOrUpdateData(marker);

            // while real-world image markers aren't likely to change size, supporting it in sim is convenient
            this.AddOrUpdateTrait(dataId, TraitNames.Bounds2D, marker.extents);
            this.AddOrUpdateTrait(dataId, TraitNames.TrackingState, (int)trackingState);
            //  stop updating poses once tracking is lost
            if (trackingState != MARSTrackingState.Unknown)
            {
                this.AddOrUpdateTrait(dataId, TraitNames.Pose, marker.pose);
            }

            return(dataId);
        }
コード例 #3
0
        void AddMarkerData(SynthesizedMarker synthMarker, ref MRMarker marker, MARSTrackingState trackingState)
        {
            var dataId = UpdateMarkerData(ref marker, trackingState);

            synthMarker.dataID = dataId;

            // add every trait that won't change in here - semantic tags and marker id in this case
            this.AddOrUpdateTrait(dataId, TraitNames.Marker, true);
            this.AddOrUpdateTrait(dataId, TraitNames.MarkerId, marker.markerId.ToString());

            k_TempSynthTags.Clear();
            synthMarker.GetComponents(k_TempSynthTags);
            foreach (var synthTag in k_TempSynthTags)
            {
                if (!synthTag.isActiveAndEnabled)
                {
                    continue;
                }

                this.AddOrUpdateTrait(dataId, synthTag.TraitName, synthTag.GetTraitData());
            }
        }
        protected override void UpdateTrackableData(SynthesizedBody synthesizedTrackable, MARSTrackingState trackingState)
        {
            var body   = synthesizedTrackable.GetData();
            var dataId = this.AddOrUpdateData(body);

            this.AddOrUpdateTrait(dataId, TraitNames.Pose, body.pose);
            BodyUpdated?.Invoke(body);
        }
        protected override void AddTrackableData(SynthesizedBody synthesizedTrackable, MARSTrackingState trackingState)
        {
            var body   = synthesizedTrackable.GetData();
            var dataId = this.AddOrUpdateData(body);

            this.AddOrUpdateTrait(dataId, TraitNames.Body, true);
            this.AddOrUpdateTrait(dataId, TraitNames.Pose, body.pose);

            foreach (var synthTag in synthesizedTrackable.GetComponents <SynthesizedSemanticTag>())
            {
                if (!synthTag.isActiveAndEnabled)
                {
                    continue;
                }

                this.AddOrUpdateTrait(dataId, synthTag.TraitName, synthTag.GetTraitData());
            }

            BodyAdded?.Invoke(body);
        }
コード例 #6
0
 /// <summary>
 /// Update data from a synthesized trackable that has been previously discovered. The tracking quality may be Unknown,
 /// but this does not necessarily mean the data must be removed from the database.
 /// </summary>
 /// <param name="synthesizedTrackable">Synthesized trackable whose data to update</param>
 /// <param name="trackingState">Current tracking quality of the trackable, may be used to limit which traits get updated</param>
 protected abstract void UpdateTrackableData(TSynthTrackable synthesizedTrackable, MARSTrackingState trackingState);
コード例 #7
0
 public MRReferencePoint(Pose pose, MARSTrackingState state = MARSTrackingState.Unknown) : this()
 {
     id            = MarsTrackableId.Create();
     trackingState = state;
     this.pose     = pose;
 }