///<summary> ///Required Execute method that defines the rules by which this state ///will automatically choose another state to switch to. This method ///is overridden and defined to return the name of the state to switch ///to based on some criteria. ///</summary> ///<param name="obj"> ///The <see cref="IFSMObject"/> on which this state is currently being ///executed. ///</param> ///<returns> ///A string containing the state that the specified ///<see cref="IFSMObject"/> should switch to. ///</returns> public override string Execute(IFSMObject obj) { T2DShape3D bot = ((BotAnimationComponent) obj).Owner as T2DShape3D; Assert.Fatal(null != bot, "BotForwardState.Execute: bot is null"); //this should not happen if (null == bot) { return StateName; } Vector2 facing = T2DVectorUtil.VectorFromAngle(bot.Rotation); Vector2 forward = Vector2.Normalize(facing); Vector2 right = Vector2Util.Perp(forward); Vector2 projection = Vector2.Dot(bot.Physics.Velocity, forward) * forward; Vector2 normal = projection - bot.Physics.Velocity; if (bot.Physics.Velocity.Length() > 0.1f) { if (projection.Length() > normal.Length()) { if (Vector2.Dot(projection, forward) >= 0) { //bot.SetSequence("main", "run", 0); //already set return FSM.Instance.GetState(obj, "forward").StateName; } bot.SetSequence("main", "back", 0); return FSM.Instance.GetState(obj, "back").StateName; } if (Vector2.Dot(normal, right) >= 0) { bot.SetSequence("main", "side", 0); return FSM.Instance.GetState(obj, "right").StateName; } bot.SetSequence("main", "side", 0); return FSM.Instance.GetState(obj, "left").StateName; } if (bot.Physics.AngularVelocity > 0.1f) { bot.SetSequence("main", "side", 0); return FSM.Instance.GetState(obj, "turnRight").StateName; } if (bot.Physics.AngularVelocity < -0.1f) { bot.SetSequence("main", "side", 0); return FSM.Instance.GetState(obj, "turnLeft").StateName; } bot.SetSequence("main", "root", 0); return FSM.Instance.GetState(obj, "idle").StateName; }
public override string Execute(IFSMObject obj) { AIRangedAttackController AI = obj as AIRangedAttackController; if (AI == null) return null; if (AI.InAttackRange && AI.ReadyToAttack) return "attack"; return null; }
public override string Execute(IFSMObject obj) { AIKamikazeeController killAI = obj as AIKamikazeeController; if (killAI == null) return null; if (killAI.InAlertRange && !killAI.InXAttackRange) return "move"; if (killAI.Attacks) if (killAI.InXAttackRange)// && killAI.onSameLevel)//killAI.InYAttackRange) return "attack"; return null; }
public override string Execute(IFSMObject obj) { AIHybridController AI = obj as AIHybridController; if (AI == null) return null; if (!AI.ReadyToAttack) { if (!AI.InAlertRange || AI.InAttackRange) return "idle"; else return "move"; } return null; }
public override string Execute(IFSMObject obj) { AIChaseController chaseAI = obj as AIChaseController; if (chaseAI == null) return null; // if (!chaseAI.onSameLevel) // return "idle"; if (!chaseAI.ReadyToAttack) { if (!chaseAI.InAttackRange) return "move"; else return "idle"; } return null; }
///<summary> ///Optional Exit method that will be called by the Finite State Machine ///manager when leaving this state. ///</summary> ///<param name="obj"> ///The <see cref="IFSMObject"/> on which this state is being ///transitioned from.</param> public override void Exit(IFSMObject obj) { }
public override string Execute(IFSMObject obj) { base.Execute(obj); ActorAnimationManager actorAnimMgr = obj as ActorAnimationManager; if (actorAnimMgr._actorComponent == null) return null; if(!actorAnimMgr._actorComponent._animatedSprite.IsAnimationPlaying) actorAnimMgr._actorComponent.Actor.Visible = false; if (actorAnimMgr._actorComponent._alive) return "idle"; return null; }
public override string Execute(IFSMObject obj) { base.Execute(obj); PlayerActorAnimationManager actorAnimMgr = obj as PlayerActorAnimationManager; if (actorAnimMgr.actorComponent == null) return null; if (!actorAnimMgr.actorComponent._alive) return "die"; if (actorAnimMgr.actorComponent._Climbing) { if (actorAnimMgr.actorComponent._moveSpeed.Y < 0) return "climbUp"; else if (actorAnimMgr.actorComponent._moveSpeed.Y > 0) return "climbDown"; return "climbIdle"; } if (!actorAnimMgr.actorComponent._onGround) { if (actorAnimMgr.actorComponent._actor.Physics.VelocityY > 0) { return "runFall"; } } else { if (actorAnimMgr.actorComponent._moveLeft || actorAnimMgr.actorComponent._moveRight) return "run"; else return "idle"; } return null; }
public override string Execute(IFSMObject obj) { base.Execute(obj); PlayerActorAnimationManager actorAnimMgr = obj as PlayerActorAnimationManager; if (actorAnimMgr.actorComponent == null) return null; if (!actorAnimMgr.actorComponent._alive) return "die"; if (actorAnimMgr.actorComponent.OnGround) { if (actorAnimMgr.actorComponent._moveLeft || actorAnimMgr.actorComponent._moveRight) return "run"; else return "idle"; } return null; }
public override void Enter(IFSMObject obj) { base.Enter(obj); PlayerActorAnimationManager actorAnimMgr = obj as PlayerActorAnimationManager; if (actorAnimMgr.actorComponent == null) return; actorAnimMgr.actorComponent.attackActions.GetAction("baseShot").Timer.Start(); actorAnimMgr.actorComponent.attackActions.GetAction("baseShot").ReadyToAct = false; }
public override string Execute(IFSMObject obj) { AIChaseController chaseAI = obj as AIChaseController; if (chaseAI == null) return null; if (chaseAI.InAlertRange && !chaseAI.InAttackRange)// && chaseAI.onSameLevel) return "move"; if (chaseAI.Attacks) if (chaseAI.InAttackRange) if (!chaseAI.ReadyToAttack) return null; else return "attack"; return null; }
public override string Execute(IFSMObject obj) { GruntActorAnimationManager actorAnimMgr = obj as GruntActorAnimationManager; if (actorAnimMgr.actorComponent == null) return null; if (!actorAnimMgr.actorComponent._alive) return "die"; // Uncomment if we include a fall animation for the grunt /* if(actorAnimMgr.FallingFromGround) if(actorAnimMgr.actorComponent.Actor.Physics.VelocityY > 0) return "fall"; */ if (actorAnimMgr.actorComponent._moveLeft || actorAnimMgr.actorComponent._moveRight) return "run"; return null; }
public override void Enter(IFSMObject obj) { base.Enter(obj); GruntActorAnimationManager actorAnimMgr = obj as GruntActorAnimationManager; if (actorAnimMgr.actorComponent == null) return; }
public override void Exit(IFSMObject obj) { base.Exit(obj); GruntActorAnimationManager actorAnimMgr = obj as GruntActorAnimationManager; if (actorAnimMgr.actorComponent == null) return; actorAnimMgr.actorComponent.meleeTimer.Start(); }
public override string Execute(IFSMObject obj) { base.Execute(obj); GruntActorAnimationManager actorAnimMgr = obj as GruntActorAnimationManager; if (actorAnimMgr.actorComponent == null) return null; if (!actorAnimMgr.actorComponent.Alive) return "die"; actorAnimMgr.actorComponent.CheckAttackFrame(); if (!actorAnimMgr.actorComponent.AnimatedSprite.IsAnimationPlaying) return "idle"; return null; }
public override void Enter(IFSMObject obj) { base.Enter(obj); }
public override void Exit(IFSMObject obj) { base.Exit(obj); }
///<summary> ///Optional Enter method that will be called by the Finite State Machine ///manager when entering this state. ///</summary> ///<param name="obj"> ///The <see cref="IFSMObject"/> on which this state is being ///transitioned to. ///</param> public override void Enter(IFSMObject obj) { }
public override void Enter(IFSMObject obj) { base.Enter(obj); GruntActorAnimationManager actorAnimMgr = obj as GruntActorAnimationManager; if (actorAnimMgr.actorComponent == null) return; actorAnimMgr._transitioningTo = actorAnimMgr.actorComponent.RunAnim; if (!actorAnimMgr._transitioning) actorAnimMgr._playAnimation(actorAnimMgr._transitioningTo); if (actorAnimMgr.actorComponent._scaleRunAnimBySpeed) actorAnimMgr.actorComponent.AnimatedSprite.AnimationTimeScale = actorAnimMgr.actorComponent._runAnimSpeedScale / actorAnimMgr.actorComponent._maxMoveSpeed; actorAnimMgr.currentSound = SoundManager.Instance.PlaySound("grunt", "walk"); }
public override string Execute(IFSMObject obj) { GruntActorAnimationManager actorAnimMgr = obj as GruntActorAnimationManager; if (actorAnimMgr.actorComponent == null) return null; if (!actorAnimMgr.actorComponent._alive) return "die"; if ((!actorAnimMgr.actorComponent._scaleRunAnimBySpeed && !(actorAnimMgr.actorComponent._moveLeft || actorAnimMgr.actorComponent._moveRight)) || (actorAnimMgr.actorComponent._scaleRunAnimBySpeed && actorAnimMgr.actorComponent._runAnimSpeedScale <= (actorAnimMgr.actorComponent._minRunAnimSpeedScale * actorAnimMgr.actorComponent._maxMoveSpeed))) return "idle"; return null; }
public override void Enter(IFSMObject obj) { base.Enter(obj); T2DSceneCamera camera = TorqueObjectDatabase.Instance.FindObject<T2DSceneCamera>(); if (camera == null) return; camera.Dismount(); }
public override void Exit(IFSMObject obj) { base.Exit(obj); GruntActorAnimationManager actorAnimMgr = obj as GruntActorAnimationManager; if(actorAnimMgr.currentSound.IsPlaying) actorAnimMgr.currentSound.Stop(AudioStopOptions.Immediate); }
public override string Execute(IFSMObject obj) { base.Execute(obj); PlayerActorAnimationManager actorAnimMgr = obj as PlayerActorAnimationManager; if (actorAnimMgr.actorComponent == null) return null; if (!actorAnimMgr.actorComponent.AnimatedSprite.IsAnimationPlaying) return "idle"; return null; }
public override string Execute(IFSMObject obj) { base.Execute(obj); PlayerActorAnimationManager actorAnimMgr = obj as PlayerActorAnimationManager; if (!actorAnimMgr.actorComponent._animatedSprite.IsAnimationPlaying) { actorAnimMgr.actorComponent.respawnAnimFinished(); return "fall"; } return null; }
public override void Enter(IFSMObject obj) { PlayerActorAnimationManager actorAnimMgr = obj as PlayerActorAnimationManager; if (actorAnimMgr.actorComponent == null) return; if (!actorAnimMgr.actorComponent.isJumping) { actorAnimMgr._transitioningTo = actorAnimMgr.actorComponent.RunJumpAnim; if (!actorAnimMgr._transitioning) { actorAnimMgr._playAnimation(actorAnimMgr._transitioningTo); SoundManager.Instance.PlaySound("amanda", "amanda_jump1"); } } }
public override void Exit(IFSMObject obj) { ActorAnimationManager actorAnimMgr = obj as ActorAnimationManager; if (actorAnimMgr._actorComponent == null) return; actorAnimMgr._transitioning = false; _targetFrame = 0; }
public override void Enter(IFSMObject obj) { base.Enter(obj); PlayerActorAnimationManager actorAnimMgr = obj as PlayerActorAnimationManager; if (actorAnimMgr.actorComponent == null) return; actorAnimMgr._transitioningTo = actorAnimMgr.actorComponent.SpawnAnim; if (!actorAnimMgr._transitioning) actorAnimMgr._playAnimation(actorAnimMgr._transitioningTo); }
public override string Execute(IFSMObject obj) { base.Execute(obj); ActorAnimationManager actorAnimMgr = obj as ActorAnimationManager; if (actorAnimMgr._actorComponent == null) return null; if (!actorAnimMgr._actorComponent._alive) return "die"; if (actorAnimMgr._actorComponent._Climbing) { if (actorAnimMgr._actorComponent._moveSpeed.Y > 0) return "climbDown"; else if (actorAnimMgr._actorComponent._moveSpeed.Y == 0) return "climbIdle"; } else { if (!actorAnimMgr._actorComponent._onGround) return "fall"; else return "idle"; } return null; }
public override string Execute(IFSMObject obj) { PlayerActorComponent obj2 = obj as PlayerActorComponent; if (obj2.Alive && !obj2.spawning) return "inAir"; return null; }
public override string Execute(IFSMObject obj) { AIHybridController AI = obj as AIHybridController; if (AI == null) return null; if (!AI.InAlertRange) return "idle"; if (AI.Attacks && AI.ReadyToAttack) if (AI.InAttackRange || AI.InProjectileRange) return "attack"; if (!AI.ReadyToAttack && !AI.InAlertRange) return "idle"; return null; }