private void OnDestroy()
        {
            Camera.onPreRender -= Render;

            if (defRenderer != null)
            {
                defRenderer.Destroy();
            }

            curRenderer = null;

            if (meshMan != null)
            {
                meshMan.Destroy();
            }

            if (hmStream != null)
            {
                hmStream.Close();
            }

            if (trnRes != null)
            {
                trnRes.Destroy();
            }
        }
예제 #2
0
        //	Collect nodes for rendering
        public void CollectRenderNodes(Camera cam, ITerrainRenderer renderer)
        {
            curCamera   = cam;
            camPlanes   = GeometryUtility.CalculateFrustumPlanes(cam);
            curRenderer = renderer;

            //	collect from root
            CollectRenderNodes_r(0);
        }
예제 #3
0
 public VisionCenterUpdateSystem(Contexts contexts)
 {
     _levelManager = contexts.session.commonSession.LevelManager;
     if (contexts.session.clientSessionObjects.TerrainRenderer != null)
     {
         _terrainRenderer = contexts.session.clientSessionObjects.TerrainRenderer;
         Camera.main.gameObject.transform.position = contexts.session.commonSession.InitPosition;
         _terrainRenderer.SetCamera(Camera.main);
     }
 }
        private void Awake()
        {
            Camera.onPreCull += Render;

            //	leafGridSize & maxDrawnNodeGridSize must be 2^n number
            Debug.Assert(leafGridSize > 2 && Misc.Is2Power(leafGridSize));
            Debug.Assert(maxDrawnNodeGridSize > leafGridSize && Misc.Is2Power(maxDrawnNodeGridSize));

            //	Determine vista node's LOD
            vistaLOD = 0;
            for (int i = leafGridSize; i <= maxDrawnNodeGridSize;)
            {
                if (i > 128)
                {
                    break;
                }

                vistaLOD++;
                i <<= 1;
            }

            //	open heightmap stream
            string fileName = Application.dataPath + "/ADQuadtreeTerrain/heightmap.raw16";

            try
            {
                trnRes = new TerrainRes(this);

                hmStream = new HeightStreamRawFile(fileName, eHMFile.RAW_16, leafGridSize + 1);
                hmSize   = hmStream.hmWidth;

                gemBuilder = new GeometryBuilder(this);
                gemBuilder.AddHeightStream(hmStream);

                meshMan = new QuadtreeMeshMan(this);

                qtree = new Quadtree(this, hmSize);

                defRenderer = new TerrainRendererDefault(this);
                curRenderer = defRenderer;
            }
            catch
            {
                Debug.Log("ADQuadtreeTerrain.Start, error happen!");
            }
        }
예제 #5
0
 public TerrainDataLoadSystem(Contexts ctx)
 {
     _levelManager    = ctx.session.commonSession.LevelManager;
     _terrainRenderer = ctx.session.clientSessionObjects.TerrainRenderer;
 }