void RegisterSelf() { if (!m_hasEverBeenRegistered && Api.Instance != null) { var positionerOptions = new Positioners.PositionerOptions() .LatitudeDegrees(InitialLatitude) .LongitudeDegrees(InitialLongitude); if (ElevationMode == ElevationMode.HeightAboveSeaLevel) { positionerOptions = positionerOptions.ElevationAboveSeaLevel(InitialElevation); } else { positionerOptions = positionerOptions.ElevationAboveGround(InitialElevation); } if (IndoorMapID != "") { positionerOptions = positionerOptions.IndoorMapWithFloorId(IndoorMapID, IndoorMapFloorId); } m_positioner = Api.Instance.PositionerApi.CreatePositioner(positionerOptions); m_positioner.OnTransformedPointChanged += UpdateECEFLocation; Api.Instance.GeographicApi.RegisterGeographicTransform(this); m_hasEverBeenRegistered = true; } }
void UnregisterSelf() { if (m_hasEverBeenRegistered && Api.Instance != null) { if (m_positioner != null) { m_positioner.OnTransformedPointChanged -= UpdateECEFLocation; m_positioner.Discard(); m_positioner = null; } Api.Instance.GeographicApi.UnregisterGeographicTransform(this); m_hasEverBeenRegistered = false; } }
public bool IsPositionerBehindGlobeHorizon(Positioner positioner) { return(NativePositionerApi_IsBehindGlobeHorizon(NativePluginRunner.API, positioner.Id)); }
public bool IsTransformedPointDefined(Positioner positioner) { return(NativePositionerApi_IsTransformedPointDefined(NativePluginRunner.API, positioner.Id)); }