public override bool Initialize() { if (!RetrieveSibling(out m_messenger)) { return(false); } if (!RetrieveSibling(out m_physics)) { return(false); } if (!RetrieveSibling(out m_state)) { return(false); } m_rayOrigin = new Vector2(m_state.Dimensions.X, 0); m_messenger.AddListener <SensorNewContactMessage>(HandleSensorNewContact); m_messenger.AddListener <SensorLostContactMessage>( HandleSensorLostContact); m_messenger.AddListener <TankKilledMessage>(HandleTankKilledMessage); m_eventManager.AddListener <TankKilledEvent>(HandleTankKilledEvent); m_physicsManager.PostStep += HandlePostStep; SetState(AiState.Search); Initialized = true; return(true); }
public override bool Initialize() { if (!RetrieveSibling(out m_state)) { return(false); } if (!RetrieveSibling(out m_messenger)) { return(false); } var size = m_state.Dimensions; size.Y += m_state.TrackWidth * 2; Body = BodyFactory.CreateBody(World, Parent.Id); FixtureFactory.AttachRectangle(size.X, size.Y, 1, Vector2.Zero, Body, Parent.Id); Body.BodyType = BodyType.Dynamic; Body.CollisionCategories = PhysicsManager.TankCategory; Body.CollidesWith = Category.All; PhysicsManager.PreStep += HandlePreStep; m_messenger.AddListener <MoveMessage>(HandleMoveMessage); m_messenger.AddListener <TankKilledMessage>(HandleTankKilled); Initialized = true; return(true); }
public override bool Initialize() { if (!RetrieveSibling(out m_messenger)) { return(false); } if (!RetrieveSibling(out m_state)) { return(false); } m_body = BodyFactory.CreateBody(m_physicsManager.World, Parent.Id); FixtureFactory.AttachCircle(m_state.SensorRadius, 0, m_body, Parent.Id); m_body.BodyType = BodyType.Dynamic; m_body.IsSensor = true; m_body.OnCollision += HandleSensorCollision; m_body.OnSeparation += HandleSensorSeparation; m_physicsManager.PreStep += HandlePreStep; m_physicsManager.PostStep += HandlePostStep; m_messenger.AddListener <TankKilledMessage>(HandleTankKilled); Initialized = true; Enabled = true; return(true); }
public override bool Initialize() { if (!RetrieveSibling(out m_messenger)) { return(false); } if (!RetrieveBaseSibling(out m_physics)) { return(false); } if (!RetrieveSibling(out m_state)) { return(false); } m_messenger.AddListener <SetTargetMessage>(HandleSetTarget); m_messenger.AddListener <ShootingStateMessage>(HandleShootingStateChange); m_messenger.AddListener <TankKilledMessage>(HandleTankKilled); Initialized = true; return(true); }