/// <summary> /// Stop the tracking task. /// </summary> protected void StopTracking() { if (_trackingCotask == null) { return; } _trackingCotask.Dispose(); _trackingCotask = null; _trackingNode = new NodeHandle(); TrackingTaskStateChanged.Invoke(false); }
/// <summary> /// Cleanup at component destroy. /// When you override this method in a derived class, remember to call the basic class method first. /// </summary> protected virtual void OnDestroy() { if (_trackingCotask != null) { _trackingCotask.Dispose(); _trackingCotask = null; } if (_trackingLibrary != null) { _trackingLibrary.Dispose(); _trackingLibrary = null; } }
/// <summary> /// Start tracking task on node. /// </summary> /// <param name="node">Node to start tracking task.</param> protected void StartTracking(NodeHandle node) { var network = GetNativeNetwork(); if (network == null) { return; } if (network.nodeGetStatus(node) != NodeStatus.Idle) { Debug.LogError("Wrong node status"); return; } if (Environment == null) { Debug.LogError("Environment is null"); return; } var nativeEnvironment = Environment.GetEnvironment(); if (nativeEnvironment == null) { Debug.LogError("Native environment is null"); return; } _placement = GetPlacement(); using (var cotaskConstructor = _trackingLibrary.createTrackingCotaskConstructor()) { _trackingCotask = cotaskConstructor.startTask(network, node, nativeEnvironment); if (_trackingCotask == null) { StopTracking(); Debug.LogWarning("Failed to start tracking task on node " + node.value); return; } _trackingNode = node; TrackingTaskStateChanged.Invoke(true); } }