private void AddEvade() { Debug.Log("Adding Evade"); var seek = new SteeringBuilder(new Vector2(128, 128)) .SetPhysicalParams(_params) .AddBehavior(new Seek()) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); var evade = new Evade(); var entity = new SteeringBuilder(new Vector2(512, 512), seek) .SetPhysicalParams(_params) // .AddNestedBehavior(new Flee(), evade) .AddBehavior(evade) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); Core.Scene.AddEntity(seek); Core.Scene.AddEntity(entity); }
private void AddPursuit() { Debug.Log("Adding Pursuit"); var seek = new SteeringBuilder(new Vector2(128, 128)) .SetPhysicalParams(_params) .AddBehavior(new Seek()) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); SteeringEntity pursuiter = null; var evade = new SteeringBuilder(new Vector2(128, 128), pursuiter) .SetPhysicalParams(_params) .AddBehavior(new Evade()) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); pursuiter = new SteeringBuilder(new Vector2(512, 512), seek) .SetPhysicalParams(_params) .AddBehavior(new Pursuit()) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); Core.Scene.AddEntity(seek); // Core.Scene.AddEntity(evade); Core.Scene.AddEntity(pursuiter); }
private void AddArrival() { Debug.Log("Adding Arrival"); var entity = new SteeringBuilder(new Vector2(512, 512)) .SetPhysicalParams(_params) .AddBehavior(new Arrival(128f), args => (args.Target.Position - args.Entity.Position).Length() > 5f) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); Core.Scene.AddEntity(entity); }
private void AddPathFollowing() { Debug.Log("Adding Path Following"); var entity = new SteeringBuilder(new Vector2(512, 512), _pathBuilder) .SetPhysicalParams(_params) .AddBehavior(new PathFollowing(new Seek(), PathFollowingMode)) .AddBehavior(new CollisionAvoidance(100f, 800f)) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); Core.Scene.AddEntity(entity); }
private void AddQueue() { Debug.Log("Adding Queue"); var entity = new SteeringBuilder(new Vector2(512, 512)) .SetPhysicalParams(_params) .AddBehavior(new Seek()) .AddBehavior(new CollisionAvoidance(64f, 32f)) .AddBehavior(new Queue(e => GetNeighborAhead(e, _maxQueueAhead, _maxQueueRadius), _maxQueueRadius)) .AddBehavior(new Separation(separation => CheckNearestFunc(separation), 30f, 240f)) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); Core.Scene.AddEntity(entity); }
private void AddWander(int count = 1) { Debug.Log("Adding Wander x" + count); for (int i = 0; i < count; i++) { var entity = new SteeringBuilder(new Vector2(500, 400) + Random.RNG.NextVector2(-100, 100)) .SetPhysicalParams(_params) .AddBehavior(new Wander(6, 8, 0, 0.5f)) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); Core.Scene.AddEntity(entity); } }
private void AddSeek() { Debug.Log("Adding Seek"); var entity = new SteeringBuilder(new Vector2(512, 512)) .SetPhysicalParams(_params) .AddBehavior(new Seek(), (args) => { var length = (args.Target.Position - (args.Entity.Position + args.Entity.Velocity * args.Entity.Mass)).Length(); return(length > 5f); }) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); Core.Scene.AddEntity(entity); }
private void AddLeaderFollowing() { Debug.Log("Adding Leader Following"); // The Leader itself var leader = new SteeringBuilder(new Vector2(512, 512)) .SetPhysicalParams(_params) .AddBehavior(new Arrival(64f)) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); var leaderFollowingBehavior1 = new LeaderFollowing(leader, 64f, 30); var leaderFollowingBehavior2 = new LeaderFollowing(leader, 64f, 30); var leaderFollowingBehavior3 = new LeaderFollowing(leader, 64f, 30); // If IsOnLeaderSight => Evade(leader) -> Arrive -> Separation var entity = new SteeringBuilder(new Vector2(128, 128), leader) .SetPhysicalParams(_params) .AddNestedBehavior(new Arrival(64f), leaderFollowingBehavior1) .AddBehavior(leaderFollowingBehavior1) .AddBehavior(new Evade(), args => IsOnLeaderSight(leader, args.Entity, GetLeaderAhead(leader, leaderFollowingBehavior1.LeaderBehindDist), leaderFollowingBehavior1.LeaderSightRadius)) .AddBehavior(new Separation(CheckNearestFunc, 50f, 12f) { IsAdditive = true }) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); var entity2 = new SteeringBuilder(new Vector2(256, 128), leader) .SetPhysicalParams(_params) .AddNestedBehavior(new Arrival(64f), leaderFollowingBehavior2) .AddBehavior(leaderFollowingBehavior2) .AddBehavior(new Evade(), args => IsOnLeaderSight(leader, args.Entity, GetLeaderAhead(leader, leaderFollowingBehavior2.LeaderBehindDist), leaderFollowingBehavior2.LeaderSightRadius)) .AddBehavior(new Separation(CheckNearestFunc, 50f, 12f) { IsAdditive = true }) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); var entity3 = new SteeringBuilder(new Vector2(256, 256), leader) .SetPhysicalParams(_params) .AddNestedBehavior(new Arrival(64f), leaderFollowingBehavior3) .AddBehavior(leaderFollowingBehavior3) .AddBehavior(new Evade(), args => IsOnLeaderSight(leader, args.Entity, GetLeaderAhead(leader, leaderFollowingBehavior3.LeaderBehindDist), leaderFollowingBehavior3.LeaderSightRadius)) .AddBehavior(new Separation(CheckNearestFunc, 50f, 12f) { IsAdditive = true }) .UseDefaultRenderer(_defaultTexture) .AddCollider(12f) .Build(); Core.Scene.AddEntity(leader); Core.Scene.AddEntity(entity); Core.Scene.AddEntity(entity2); Core.Scene.AddEntity(entity3); }