public virtual void CreatePrecachedParts() { if (m_precachedParts != null) m_precachedParts.Clear(); else m_precachedParts = new List(30); int sw = (m_texture.Width / 6); int sh = (m_texture.Height / 2); m_precachedParts.Add(new PrecachedPart(new Rectangle(m_size.X, m_size.Y, m_size.Width, m_size.Height), new Rectangle((m_texture.Width / 3) * 2, 0, (m_texture.Width / 3), (m_texture.Height)))); for (int x = 1; x * sw <= (m_size.Width - sw); x += 1) { int wx = sw; if (x * sw > (m_size.Width - sw * 2)) wx = m_size.Width % sw; m_precachedParts.Add(new PrecachedPart(new Rectangle(X + x * sw, Y + 0, wx, sh), new Rectangle(sw * 3, 0, wx, sh))); m_precachedParts.Add(new PrecachedPart(new Rectangle(X + x * sw, Y + m_size.Height - sh, wx, sh), new Rectangle(sw * 3, sh, wx, sh))); } for (int y = 1; y * sh <= (m_size.Height - sh); y += 1) { int wy = sh; if (y * sh > (m_size.Height - sh * 2)) wy = m_size.Height % sh; m_precachedParts.Add(new PrecachedPart(new Rectangle(X + 0, Y + y * sh, sw, wy), new Rectangle(sw * 2, 0, sw, wy))); m_precachedParts.Add(new PrecachedPart(new Rectangle(X + m_size.Width - sw, Y + y * sh, sw, wy), new Rectangle(sw * 2, sh, sw, wy))); } m_precachedParts.Add(new PrecachedPart(new Rectangle(X + 0, Y + 0, sw, sh), new Rectangle(0, 0, sw, sh))); m_precachedParts.Add(new PrecachedPart(new Rectangle(X + 0, Y + m_size.Height - sh, sw, sh), new Rectangle(0, sh, sw, sh))); m_precachedParts.Add(new PrecachedPart(new Rectangle(X + m_size.Width - sw, Y + 0, sw, sh), new Rectangle(sw, 0, sw, sh))); m_precachedParts.Add(new PrecachedPart(new Rectangle(X + m_size.Width - sw, Y + m_size.Height - sh, sw, sh), new Rectangle(sw, sh, sw, sh))); }