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)); }
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); } }
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); }
public Action <ILandmarkController> GetLandmarkCalculation(LandmarkDefinition definition) { var faceLandmark = definition.GetEnumName <MRFaceLandmark>(); return((landmark) => UpdateFaceLandmark(landmark, faceLandmark)); }