コード例 #1
0
        private void FixedUpdate()
        {
            physicsInteractionsCounter = 0;

            for (int i = 0; i < activeContinuousInteractionResults.Length; i++)
            {
                IContinuousInteractionResult c = activeContinuousInteractionResults[i];

                if (c == null)
                {
                    continue;
                }

                if (!c.IsAlive)
                {
                    c.Dispose();
                    activeContinuousInteractionResults[i] = null;
                    activeContinuousInteractionKeys.Remove(c.Key);
                    currentActiveContinuousInteractionCount = Mathf.Clamp(currentActiveContinuousInteractionCount - 1, 0, _activeContinuousInteractions);
                }
                else
                {
                    c.FixedUpdate();
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Adds or updates the given continuous interaction result to the active continuous interaction results, if able.
        /// </summary>
        /// <param name="impactObject">The impact object the result is being sent from.</param>
        /// <param name="result">The new continuous interaction result.</param>
        public void AddOrUpdateContinuousInteractionResult(IImpactObject impactObject, IContinuousInteractionResult result)
        {
            IContinuousInteractionResult existing = findContinuousInteractionResult(result.Key);

            if (existing != null)
            {
                existing.KeepAlive(result);
                result.Dispose();
            }
            else
            {
                addContinuousInteractionResult(impactObject, result);
            }
        }
コード例 #3
0
        private void addContinuousInteractionResult(IImpactObject impactObject, IContinuousInteractionResult continuousInteractionResult)
        {
            for (int i = 0; i < activeContinuousInteractionResults.Length; i++)
            {
                if (activeContinuousInteractionResults[i] == null)
                {
                    activeContinuousInteractionResults[i] = continuousInteractionResult;
                    currentActiveContinuousInteractionCount++;
                    activeContinuousInteractionKeys.Add(continuousInteractionResult.Key);
                    continuousInteractionResult.Process(impactObject);
                    return;
                }
            }

            continuousInteractionResult.Dispose();
        }
コード例 #4
0
        private void OnDestroy()
        {
            //Dispose of any active continuous interactions
            for (int i = 0; i < activeContinuousInteractionResults.Length; i++)
            {
                IContinuousInteractionResult c = activeContinuousInteractionResults[i];

                if (c != null)
                {
                    c.Dispose();
                }
            }

            //Clear the instance
            //This won't do anything if the active instance is not this
            ImpactManagerInstance.ClearInstance(this);
        }