protected override void Initialize()
        {
            GameUtilities.Content        = Content;
            GameUtilities.GraphicsDevice = GraphicsDevice;

            debug.Initialize();
            shapeDrawer.Initialize();

            mainCamera = new Camera("cam", new Vector3(0, 5, 10), new Vector3(0, 0, -1));
            mainCamera.Initialize();

            occQuery = new OcclusionQuery(GraphicsDevice);
            octTree  = new OctTree(100, Vector3.Zero, 5);

            base.Initialize();
        }
        public void SubDivide()
        {
            OctTree TFR, TBR, TFL, TBL, BFR, BBR, BFL, BBL;
            float   subSize = Size / 2;

            TFR = new OctTree(subSize, new Vector3(Position.X + subSize / 2, Position.Y + subSize / 2, Position.Z + subSize / 2), MaxObjects);
            TBR = new OctTree(subSize, new Vector3(Position.X + subSize / 2, Position.Y + subSize / 2, Position.Z - subSize / 2), MaxObjects);
            TFL = new OctTree(subSize, new Vector3(Position.X - subSize / 2, Position.Y + subSize / 2, Position.Z + subSize / 2), MaxObjects);
            TBL = new OctTree(subSize, new Vector3(Position.X - subSize / 2, Position.Y + subSize / 2, Position.Z - subSize / 2), MaxObjects);
            BFR = new OctTree(subSize, new Vector3(Position.X + subSize / 2, Position.Y - subSize / 2, Position.Z + subSize / 2), MaxObjects);
            BBR = new OctTree(subSize, new Vector3(Position.X + subSize / 2, Position.Y - subSize / 2, Position.Z - subSize / 2), MaxObjects);
            BFL = new OctTree(subSize, new Vector3(Position.X - subSize / 2, Position.Y - subSize / 2, Position.Z + subSize / 2), MaxObjects);
            BBL = new OctTree(subSize, new Vector3(Position.X - subSize / 2, Position.Y - subSize / 2, Position.Z - subSize / 2), MaxObjects);

            Nodes.Add(TFR);
            Nodes.Add(TBR);
            Nodes.Add(TFL);
            Nodes.Add(TBL);
            Nodes.Add(BFR);
            Nodes.Add(BBR);
            Nodes.Add(BFL);
            Nodes.Add(BBL);
        }