Exemple #1
0
        /// <summary>
        /// Stop the tracking task.
        /// </summary>
        protected void StopTracking()
        {
            if (_trackingCotask == null)
            {
                return;
            }

            _trackingCotask.Dispose();
            _trackingCotask = null;
            _trackingNode   = new NodeHandle();

            TrackingTaskStateChanged.Invoke(false);
        }
Exemple #2
0
        /// <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;
            }
        }
Exemple #3
0
        /// <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);
            }
        }