private void RandomEntityV(Entity entity) { float v = Helper.RandomFloat(this.minV, this.maxV); float a = Helper.RandomFloat(0, 2 * (float)Math.PI); entity.SetV(v, a); }
private void CatchEvent(Entity entity, Entity entityNext, ref bool isRun) { if (entityNext.State == State.Run && entity.Id != this.mainEntityId) { float d = Helper.ExtDistance(entity, entityNext); if (entity.Near == null) { entity.Near = entityNext; isRun = false; } else { float dn = Helper.ExtDistance(entity, entity.Near); if (d < dn) { entity.Near = entityNext; isRun = false; } } if (entity.Near != null) { float v = entity.V; if (v == 0) { v = Helper.RandomFloat(this.minV, this.maxV); } float a = (float)Math.Atan2(entity.Near.Y - entity.Y, entity.Near.X - entity.X) - entity.A; a = Math.Min(a, 0.1f); a = Math.Max(a, -0.1f); entity.SetV(v, entity.A + a); this.AfterEvent(entity); } } }