public void Draw(Camera cam) { int ctd = (int)Math.Ceiling(cam.FarClip / celld); int ccx = (int)(cam.Position.X / celld); int ccz = (int)(cam.Position.Z / celld); var pool = Model3DPool.GetInstance(); for (int x = Math.Max(0, ccx - ctd); x < Math.Min(floorWidth, ccx + ctd); x++) { for (int z = Math.Max(0, ccz - ctd); z < Math.Min(floorHeight, ccz + ctd); z++) { Object3D model = pool.Acquire(); model.Model = plate; model.Position = new Vector3(x * celld, 0, z * celld); model.Draw(cam); pool.Release(model); } } }
private Model3DPool() { instance = this; }