protected IBall AddBall(BallGraphicsData graphicsData, BallPhysicsData physicsData, Coordinates startPosition) { Ball b = new Ball(graphicsData, physicsData, m_Table, startPosition); m_Balls.Add(b); ComputeSteps(); return(b); }
public Ball(BallGraphicsData graphicsData, BallPhysicsData physicsData, ITableInternal table, Coordinates startPosition) { m_GraphicsData = graphicsData; m_PhysicsData = physicsData; m_Table = table; m_BallInterface = this; m_InGame = true; m_Position = startPosition; m_Velocity = Coordinates.Zero; m_DrawingOffset = new Coordinates(m_Table.Width / 2, m_Table.Height / 2); Coordinates.MakeReadonly(m_DrawingOffset); m_BallDrawingOffset = new Coordinates(m_PhysicsData.Radius, m_PhysicsData.Radius); Coordinates.MakeReadonly(m_BallDrawingOffset); m_StripedRadius = (int)Math.Ceiling(m_PhysicsData.Radius * m_GraphicsData.StripedRadiusCoefficient); m_StripedDiameter = 2 * m_StripedRadius; m_StripedDrawingOffset = new Coordinates(m_StripedRadius, m_StripedRadius); Coordinates.MakeReadonly(m_StripedDrawingOffset); m_DirectionUpdated = false; }