Example #1
0
 private void UpdateCamera(Camera camera, GameTime gameTime)
 {
     if (camera.AttachedToPlayer)
     {
         Entity playerId = stateSpaceComponents.Entities.Where(x => (x.ComponentFlags & ComponentMasks.Player) == ComponentMasks.Player).FirstOrDefault();
         if (playerId != null)
         {
             camera.Target = new Vector2((int)stateSpaceComponents.PositionComponents[playerId.Id].Position.X * dungeonAlgorithm.GetCellsize() + stateSpaceComponents.DisplayComponents[playerId.Id].Texture.Bounds.Center.X,
                                         (int)stateSpaceComponents.PositionComponents[playerId.Id].Position.Y * dungeonAlgorithm.GetCellsize() + stateSpaceComponents.DisplayComponents[playerId.Id].Texture.Bounds.Center.Y);
         }
     }
     if (Vector2.Distance(camera.Position, camera.Target) > 0)
     {
         float   distance  = Vector2.Distance(camera.Position, camera.Target);
         Vector2 direction = Vector2.Normalize(camera.Target - camera.Position);
         float   velocity  = distance * 2.5f;
         camera.Position += direction * velocity * (float)gameTime.ElapsedGameTime.TotalSeconds;
     }
 }