예제 #1
0
        /// <summary>
        /// Takes an item from the resource pool.
        /// </summary>
        /// <returns>Item to take.</returns>
        public override T Take()
        {
            T toTake;

            if (stack.TryDequeueFirst(out toTake))
            {
                return(toTake);
            }

            return(CreateNewResource());
        }
예제 #2
0
        protected override void UpdateStage()
        {
            EntityStateChange item;

            while (stateChanges.TryDequeueFirst(out item))
            {
                Entity target = item.target;
                switch (item.targetField)
                {
                case TargetField.Position:
                    target.Position = item.vector;
                    break;

                case TargetField.Orientation:
                    target.Orientation = item.orientationQuaternion;
                    break;

                case TargetField.LinearVelocity:
                    target.LinearVelocity = item.vector;
                    break;

                case TargetField.AngularVelocity:
                    target.AngularVelocity = item.vector;
                    break;
                }
            }
        }