public override Action <ILandmarkController> GetLandmarkCalculation(LandmarkDefinition definition)
        {
            if (definition.name.Equals(k_CenterDefinitionName, StringComparison.InvariantCultureIgnoreCase))
            {
                return(CalculateCenter);
            }

            if (definition.GetEnumName <BasicPolygonLandmarks>() == BasicPolygonLandmarks.BoundingRect)
            {
                return(CalculateBoundingRectFromExtents);
            }

            return(base.GetLandmarkCalculation(definition));
        }
Exemplo n.º 2
0
        public virtual Action <ILandmarkController> GetLandmarkCalculation(LandmarkDefinition definition)
        {
            var landmarkType = definition.GetEnumName <BasicPolygonLandmarks>();

            switch (landmarkType)
            {
            case BasicPolygonLandmarks.Centroid:
                return(CalculateCentroidLandmark);

            case BasicPolygonLandmarks.Closest:
                return(CalculateClosestLandmark);

            case BasicPolygonLandmarks.BoundingRect:
                return(CalculateBoundingRectangle);

            default:
                Debug.LogError("Attempting to get a landmark outside the range of available landmarks.", this);
                return(null);
            }
        }
Exemplo n.º 3
0
        public static LandmarkController CreateLandmarkAsChild(this ICalculateLandmarks source, LandmarkDefinition definition, Type landmarkDataType)
        {
            var landmarkName = definition.name;

#if UNITY_EDITOR
            landmarkName = ObjectNames.NicifyVariableName(landmarkName);
#endif
            var landmarkController = new GameObject(landmarkName).AddComponent <LandmarkController>();
            if (landmarkController == null)
            {
                Debug.LogError(
                    "Error instantiating landmark. Unable to create the landmark "
                    + definition.name);
                return(null);
            }

            Transform parent            = null;
            var       sourceAsComponent = (source as Component);
            if (sourceAsComponent != null)
            {
                parent = sourceAsComponent.transform;
            }

            if (definition.settingsType != null)
            {
                landmarkController.settings = landmarkController.gameObject.AddComponent(definition.settingsType) as ILandmarkSettings;
            }

            landmarkController.output = (ILandmarkOutput)landmarkController.gameObject.AddComponent(landmarkDataType);

            landmarkController.transform.SetParent(parent, false);
            landmarkController.landmarkDefinition = definition;
            landmarkController.source             = source;
#if UNITY_EDITOR
            Undo.RegisterCreatedObjectUndo(landmarkController.gameObject, "Create Landmark");
#endif
            return(landmarkController);
        }
Exemplo n.º 4
0
        public Action <ILandmarkController> GetLandmarkCalculation(LandmarkDefinition definition)
        {
            var faceLandmark = definition.GetEnumName <MRFaceLandmark>();

            return((landmark) => UpdateFaceLandmark(landmark, faceLandmark));
        }