public void Update(UpdateEvent evt)
        {
            foreach (MuzzleFlashEffect effect in MuzzleFlashEffects)
                effect.Update(evt);

            MuzzleFlashEffects.RemoveWhere(x => !x.Alive);
        }
示例#2
0
        public void Update(UpdateEvent evt)
        {
            foreach (DecayableBillboard billboard in DecayableBillboardSet)
                billboard.Update(evt);

            DecayableBillboardSet.RemoveWhere(x => !x.Alive);
        }
示例#3
0
        protected override void OnUpdate(UpdateEvent evt)
        {
            Vector3 previousPosition = Position;
            base.OnUpdate(evt);
            if (!Alive)
                return;

            Emitter.Position = Position;

            // No ray created if not moved
            if (previousPosition == Position)
                return;

            Vector3 delta = Position - previousPosition;
            Ray ray = new Ray(previousPosition, delta);
            float? intersection;
            BodyCollider collider;
            Character enemy = World.FindEnemy(Creator, ray, out collider, out intersection);

            // No enemies intersect with ray. Check buildings.
            if (!intersection.HasValue)
                intersection = World.GetNearestIntersectingBuilding(ray);

            if (!intersection.HasValue || intersection.Value > delta.Length)
                return;
            Alive = false;
            if (enemy != null)
                enemy.ReceiveDamage(BaseDamage * collider.DamageMultiplier);
        }
示例#4
0
 protected override void OnUpdate(UpdateEvent evt)
 {
     base.OnUpdate(evt);
     Player.Update(evt);
     BotManager.Update(evt);
     Application.CenterCursor();
 }
示例#5
0
        protected override void OnUpdate(UpdateEvent evt)
        {
            base.OnUpdate(evt);

            if (WeaponPositionReferenceNode != null)
                WeaponSceneNode.Position = WeaponPositionReferenceNode.ConvertLocalToWorldPosition(WeaponPositionReferencePosition);
        }
示例#6
0
 public void AimTowards(UpdateEvent evt, Vector3 target)
 {
     float targetYaw = MathHelper.GetYaw(Character.Position, target);
     Character.Yaw = MathHelper.LerpAngle(Character.Yaw, targetYaw, evt.ElapsedTime * GameConstants.BotAngleLerpAmount);
     float targetPitch = MathHelper.GetPitch(Character.EyeNode.GetWorldPosition(), target);
     Character.EyePitch = MathHelper.LerpAngle(Character.EyePitch, targetPitch, evt.ElapsedTime * GameConstants.BotAngleLerpAmount);
 }
        public override void Update(UpdateEvent evt)
        {
            ElapsedDelay += evt.ElapsedTime;

            BotController.Character.Stop();
            BotController.AimTowards(evt, VisibleCollider.PrimitiveNode.GetCenter(true));
        }
示例#8
0
        public override void Update(UpdateEvent evt)
        {
            bool approached = BotController.WalkTo(evt, Target.Position);
            if (!approached)
                return;

            Target = Target.Next;
        }
示例#9
0
        public override Vector3 GetVelocityInfluence(UpdateEvent evt)
        {
            if (!Walking || Direction == Vector3.ZERO)
                return Vector3.ZERO;

            Vector3 delta = Direction.TransformDelta(ActionPerformer.Position, Vector3.UNIT_SCALE, ActionPerformer.Orientation);
            return delta.Mask(true, false, true).NormalisedCopy * Velocity;
        }
示例#10
0
        protected override void OnUpdate(UpdateEvent evt)
        {
            base.OnUpdate(evt);
            Position += Velocity * evt.ElapsedTime;
            RemainingTime -= evt.ElapsedTime;

            if (RemainingTime <= 0)
                Alive = false;
        }
 public void Update(UpdateEvent evt)
 {
     // There is a bug where when an emitter is removed, reference emitters are once again enabled
     foreach (ParticleEmitter emitter in ReferenceEmitters)
         emitter.Enabled = false;
     foreach (ParticleEmitterCluster cluster in ClusterSet)
         cluster.Update(evt);
     ClusterSet.RemoveWhere(x => !x.Alive);
 }
示例#12
0
 public void Update(UpdateEvent evt)
 {
     Root.ResetAnimation();
     for (int i = 0; i < Animations.Count; ++i)
     {
         if (!AnimationStates[i].Enabled)
             continue;
         Root.AddAnimation(Animations[i], AnimationStates[i]);
     }
 }
示例#13
0
        public void Update(UpdateEvent evt)
        {
            if (TimeToLive <= 0)
                return;

            TimeToLive -= evt.ElapsedTime;
            if (TimeToLive <= 0)
            {
                Alive = false;
                BillboardSet.RemoveBillboard(Billboard);
            }
        }
示例#14
0
        protected override void OnUpdate(UpdateEvent evt)
        {
            base.OnUpdate(evt);
            if (TimeUntilTeleport <= 0)
                return;
            TimeUntilTeleport -= evt.ElapsedTime;
            if (TimeUntilTeleport > 0)
                return;

            ActionPerformer.Position = Destination;
            ActionPerformer.UnlockMovement();
        }
示例#15
0
        public override void Update(UpdateEvent evt)
        {
            bool approached = BotController.WalkTo(evt, Destination);
            if (!approached)
                return;

            Vector3[] possibleNextNodes = BotController.Character.World.GetAdjacentVertices(Destination);
            // Avoid walking back to where we come from if possible.
            if (possibleNextNodes.Length == 1)
                Destination = possibleNextNodes[0];
            else
            {
                possibleNextNodes.Shuffle();
                Vector3 next = possibleNextNodes.First(x => !x.IsApproximately(PreviousDestination, 0.0001f));
                PreviousDestination = Destination;
                Destination = next;
            }
        }
示例#16
0
        public void Update(UpdateEvent evt)
        {
            foreach (var entry in AnimationMapper)
            {
                if (entry.Value.Length == 0)
                    continue;

                if (entry.Key == CurrentAnimation)
                {
                    float weight = MathHelper.Lerp(entry.Value[0].Weight, 1, evt.ElapsedTime * GameConstants.AnimationFadeLerpAmount);
                    foreach (AnimationState animationState in entry.Value)
                    {
                        animationState.Weight = weight;
                        animationState.Enabled = true;
                        animationState.AddTime(evt.ElapsedTime);
                    }
                }
                else if (entry.Value.Any(animationState => animationState.Enabled))
                {
                    float weight = MathHelper.Lerp(entry.Value[0].Weight, 0, evt.ElapsedTime * GameConstants.AnimationFadeLerpAmount);
                    if (weight < 0.05f && weight > 0)
                    {
                        foreach (AnimationState animationState in entry.Value)
                        {
                            animationState.Weight = 0;
                            animationState.TimePosition = 0;
                            animationState.Enabled = false;
                        }
                    }
                    else
                    {
                        foreach (AnimationState animationState in entry.Value)
                        {
                            animationState.Weight = weight;
                            animationState.AddTime(evt.ElapsedTime);
                        }
                    }
                }
            }
        }
示例#17
0
 public void Update(UpdateEvent evt)
 {
     if (!Billboard.Alive)
         Dispose();
 }
示例#18
0
        protected override void OnUpdate(UpdateEvent evt)
        {
            Recoil = Math.Max(0, Recoil - evt.ElapsedTime * GameConstants.RecoilReductionFactor);
            Velocity = WalkHandler.GetVelocityInfluence(evt) + JumpHandler.GetVelocityInfluence(evt);
            MultiAttemptsTranslate(evt.ElapsedTime);
            if (ActiveWeaponHandler != null)
                ActiveWeaponHandler.Update(evt);
            foreach (SpecialMoveHandler handler in SpecialMoveHandlers)
            {
                if (handler != null)
                    handler.Update(evt);
            }

            if (CharacterNode.Position.y < 0)
                CharacterNode.Position = CharacterNode.Position.Mask(true, false, true);
            Airborne = IsAirborne();

            foreach (AnimationManager manager in AnimationManagerMapper.Values)
                manager.Update(evt);
            BodyCollisionTree.Update(evt);

            // Performed after animation update so that position of the weapon
            // matches the animation.
            Model.Update(evt);
        }
示例#19
0
 private void Update(UpdateEvent evt)
 {
     ManageScheduledStateEvent(evt);
     if (StateStack.Count > 0)
         StateStack.Peek().Update(evt);
 }
示例#20
0
        private void ManageScheduledStateEvent(UpdateEvent evt)
        {
            if (PopStateCount > 0)
            {
                while (PopStateCount > 0)
                {
                    StateStack.Pop().Dispose();
                    PopStateCount--;
                }
                if (StateStack.Count > 0)
                    StateStack.Peek().Resume(evt);

            }
            if (NewStateScheduled != null)
            {
                if (StateStack.Count > 0)
                    StateStack.Peek().Pause(evt);
                StateStack.Push(NewStateScheduled);
                NewStateScheduled.ZOrder = (ushort)StateStack.Count;
                NewStateScheduled.Resume(evt);
                NewStateScheduled = null;
            }
        }
示例#21
0
 protected abstract void OnUpdate(UpdateEvent evt);
示例#22
0
 protected virtual void OnResume(UpdateEvent evt)
 {
 }
示例#23
0
 public void Update(UpdateEvent evt)
 {
     OnUpdate(evt);
 }
示例#24
0
 public void Resume(UpdateEvent evt)
 {
     OnResume(evt);
     OnUserInterfaceCreate();
     IsUserInterfaceInitialized = true;
     Application.CursorVisible = CursorVisible;
 }
示例#25
0
 public abstract void Update(UpdateEvent evt);
示例#26
0
 protected override void OnResume(UpdateEvent evt)
 {
     base.OnResume(evt);
 }
 public void Update(UpdateEvent evt)
 {
     if (!Eternal)
         TimeToLive = Math.Max(0, TimeToLive - evt.ElapsedTime);
     Dispose();
 }
示例#28
0
 protected virtual void OnPause(UpdateEvent evt)
 {
 }
 public void Update(UpdateEvent evt)
 {
     foreach (BillboardSystem billboardSystem in BillboardSystemMapper.Values)
         billboardSystem.Update(evt);
 }
示例#30
0
 public void Pause(UpdateEvent evt)
 {
     OnPause(evt);
     DisposeUserInterface();
 }