voideasyar_SparseSpatialMapManager_create(/* OUT */easyar_SparseSpatialMapManager**Return);
/// <summary>
/// Creates a map from `SparseSpatialMap`_ and upload it to EasyAR cloud servers. After completion, a serverMapId will be returned for loading map from EasyAR cloud servers.
/// Check whether SparseSpatialMapManager is is available. It returns true when the operating system is Windows, Mac, iOS or Android.
/// </summary>
staticboolisAvailable();
/// <summary>
/// Creates an instance.
/// </summary>
staticvoidcreate(/* OUT */SparseSpatialMapManager**Return);
/// <summary>
/// Creates a map from `SparseSpatialMap`_ and upload it to EasyAR cloud servers. After completion, a serverMapId will be returned for loading map from EasyAR cloud servers.
/// Check whether SparseSpatialMapManager is is available. It returns true when the operating system is Windows, Mac, iOS or Android.
/// </summary>
+(bool)isAvailable;
/// <summary>
/// Creates an instance.
/// </summary>
+(easyar_SparseSpatialMapManager*)create;
/// <summary>
/// Creates a map from `SparseSpatialMap`_ and upload it to EasyAR cloud servers. After completion, a serverMapId will be returned for loading map from EasyAR cloud servers.
/// Camera transform against world coordinate system. Camera coordinate system and world coordinate system are all right-handed. For the camera coordinate system, the origin is the optical center, x-right, y-up, and z in the direction of light going into camera. (The right and up, on mobile devices, is the right and up when the device is in the natural orientation.) For the world coordinate system, y is up (to the opposite of gravity). The data arrangement is row-major, not like OpenGL's column-major.
/// Sets the tracking target to a point on camera image. For the camera image coordinate system ([0, 1]^2), x-right, y-down, and origin is at left-top corner. `CameraParameters.imageCoordinatesFromScreenCoordinates`_ can be used to convert points from screen coordinate system to camera image coordinate system.
/// Camera transform against world coordinate system. Camera coordinate system and world coordinate system are all right-handed. For the camera coordinate system, the origin is the optical center, x-right, y-up, and z in the direction of light going into camera. (The right and up, on mobile devices, is the right and up when the device is in the natural orientation.) For the world coordinate system, y is up (to the opposite of gravity). The data arrangement is row-major, not like OpenGL's column-major.
/// </summary>
Matrix44Ftransform();
staticvoidtryCastFromFrameFilterResult(FrameFilterResult*v,/* OUT */SurfaceTrackerResult**Return);
};
/// <summary>
/// SurfaceTracker implements tracking with environmental surfaces.
/// SurfaceTracker occupies one buffer of camera. Use setBufferCapacity of camera to set an amount of buffers that is not less than the sum of amount of buffers occupied by all components. Refer to `Overview <Overview.html>`__ .
/// After creation, you can call start/stop to enable/disable the track process. start and stop are very lightweight calls.
/// When the component is not needed anymore, call close function to close it. It shall not be used after calling close.
/// SurfaceTracker inputs `InputFrame`_ from inputFrameSink. `InputFrameSource`_ shall be connected to inputFrameSink for use. Refer to `Overview <Overview.html>`__ .
/// Returns true only on Android or iOS when accelerometer and gyroscope are available.
/// </summary>
staticboolisAvailable();
/// <summary>
/// `InputFrame`_ input port. InputFrame must have raw image, timestamp, and camera parameters.
/// </summary>
voidinputFrameSink(/* OUT */InputFrameSink**Return);
/// <summary>
/// Camera buffers occupied in this component.
/// </summary>
intbufferRequirement();
/// <summary>
/// `OutputFrame`_ output port.
/// </summary>
voidoutputFrameSource(/* OUT */OutputFrameSource**Return);
/// <summary>
/// Creates an instance.
/// </summary>
staticvoidcreate(/* OUT */SurfaceTracker**Return);
/// <summary>
/// Starts the track algorithm.
/// </summary>
boolstart();
/// <summary>
/// Stops the track algorithm. Call start to start the track again.
/// </summary>
voidstop();
/// <summary>
/// Close. The component shall not be used after calling close.
/// </summary>
voidclose();
/// <summary>
/// Sets the tracking target to a point on camera image. For the camera image coordinate system ([0, 1]^2), x-right, y-down, and origin is at left-top corner. `CameraParameters.imageCoordinatesFromScreenCoordinates`_ can be used to convert points from screen coordinate system to camera image coordinate system.
/// Camera transform against world coordinate system. Camera coordinate system and world coordinate system are all right-handed. For the camera coordinate system, the origin is the optical center, x-right, y-up, and z in the direction of light going into camera. (The right and up, on mobile devices, is the right and up when the device is in the natural orientation.) For the world coordinate system, y is up (to the opposite of gravity). The data arrangement is row-major, not like OpenGL's column-major.
/// </summary>
-(easyar_Matrix44F*)transform;
@end
/// <summary>
/// SurfaceTracker implements tracking with environmental surfaces.
/// SurfaceTracker occupies one buffer of camera. Use setBufferCapacity of camera to set an amount of buffers that is not less than the sum of amount of buffers occupied by all components. Refer to `Overview <Overview.html>`__ .
/// After creation, you can call start/stop to enable/disable the track process. start and stop are very lightweight calls.
/// When the component is not needed anymore, call close function to close it. It shall not be used after calling close.
/// SurfaceTracker inputs `InputFrame`_ from inputFrameSink. `InputFrameSource`_ shall be connected to inputFrameSink for use. Refer to `Overview <Overview.html>`__ .
/// </summary>
@interfaceeasyar_SurfaceTracker:easyar_RefBase
+(instancetype)newNS_UNAVAILABLE;
-(instancetype)initNS_UNAVAILABLE;
/// <summary>
/// Returns true only on Android or iOS when accelerometer and gyroscope are available.
/// </summary>
+(bool)isAvailable;
/// <summary>
/// `InputFrame`_ input port. InputFrame must have raw image, timestamp, and camera parameters.
/// </summary>
-(easyar_InputFrameSink*)inputFrameSink;
/// <summary>
/// Camera buffers occupied in this component.
/// </summary>
-(int)bufferRequirement;
/// <summary>
/// `OutputFrame`_ output port.
/// </summary>
-(easyar_OutputFrameSource*)outputFrameSource;
/// <summary>
/// Creates an instance.
/// </summary>
+(easyar_SurfaceTracker*)create;
/// <summary>
/// Starts the track algorithm.
/// </summary>
-(bool)start;
/// <summary>
/// Stops the track algorithm. Call start to start the track again.
/// </summary>
-(void)stop;
/// <summary>
/// Close. The component shall not be used after calling close.
/// </summary>
-(void)close;
/// <summary>
/// Sets the tracking target to a point on camera image. For the camera image coordinate system ([0, 1]^2), x-right, y-down, and origin is at left-top corner. `CameraParameters.imageCoordinatesFromScreenCoordinates`_ can be used to convert points from screen coordinate system to camera image coordinate system.
/// Returns the target uid. A target uid is useful in cloud based algorithms. If no cloud is used, you can set this uid in the json config as a alternative method to distinguish from targets.
/// </summary>
voideasyar_Target_uid(consteasyar_Target*This,/* OUT */easyar_String**Return);
/// <summary>
/// Returns the target name. Name is used to distinguish targets in a json file.
/// </summary>
voideasyar_Target_name(consteasyar_Target*This,/* OUT */easyar_String**Return);
/// <summary>
/// Set name. It will erase previously set data or data from cloud.
voideasyar_TargetInstance__ctor(/* OUT */easyar_TargetInstance**Return);
/// <summary>
/// Returns current status of the tracked target. Usually you can check if the status equals `TargetStatus.Tracked` to determine current status of the target.
/// Gets the raw target. It will return the same `Target`_ you loaded into a tracker if it was previously loaded into the tracker.
/// </summary>
voideasyar_TargetInstance_target(consteasyar_TargetInstance*This,/* OUT */easyar_OptionalOfTarget*Return);
/// <summary>
/// Returns current pose of the tracked target. Camera coordinate system and target coordinate system are all right-handed. For the camera coordinate system, the origin is the optical center, x-right, y-up, and z in the direction of light going into camera. (The right and up, on mobile devices, is the right and up when the device is in the natural orientation.) The data arrangement is row-major, not like OpenGL's column-major.