Exemple #1
0
        public DemoPartition(DemoPartitionContext context)
        {
            if (context == null)
                throw new ArgumentNullException("context");

            this.context = context;

            settings = context.Settings;

            heightMap = new Map<float>(settings.HeightMapWidth, settings.HeightMapHeight);

            terrain = new CDLODTerrain(context.Settings);
            terrain.HeightMap = heightMap;

            texture = new Texture2D(context.GraphicsDevice, settings.HeightMapWidth, settings.HeightMapWidth, false, SurfaceFormat.Single);

            md.Destination = heightMap;
            md.Seed = context.MDSeed;

            fastThermalErosion.HeightMap = heightMap;
            fastThermalErosion.Talus = 0.5f;
        }
Exemple #2
0
        protected override void LoadContent()
        {
            settings.LevelCount = levelCount;
            settings.LeafNodeSize = leafNodeSize;
            settings.PatchResolution = patchResolution;
            settings.MapScale = mapScale;
            settings.HeightScale = heightScale;
            settings.HeightMapWidth = heightMapWidth;
            settings.HeightMapHeight = heightMapHeight;

            var visibleRanges = new CDLODDefaultVisibleRanges(settings);
            visibleRanges.FinestNodeSize = finestNodeSize;
            visibleRanges.DetailBalance = detailBalance;
            visibleRanges.Initialize();

            partitionContext = new DemoPartitionContext(
                GraphicsDevice, Content, settings, visibleRanges);
            partitionContext.TerrainRenderer.FogEnabled = true;
            partitionContext.TerrainRenderer.FogStart = fogStart;
            partitionContext.TerrainRenderer.FogEnd = fogEnd;
            partitionContext.TerrainRenderer.FogColor = fogColor;
            partitionContext.MDHurst = mdHurst;

            partitionFactory = new DemoPartitionFactory(partitionContext);

            var terrainScale = settings.TerrainScale;

            partitionManager = new PartitionManager(partitionFactory.Create, loadThreadCount,
                initialPartitionPoolCapacity, maxPartitionPoolCapacity);
            partitionManager.PartitionWidth = terrainScale.X;
            partitionManager.PartitionHeight = terrainScale.Z;
            partitionManager.ActivationRange = terrainScale.X * 3.0f;
            partitionManager.DeactivationRange = partitionManager.ActivationRange * 1.5f;
            partitionManager.EyePosition = view.Position;

            #region Debug

            spriteBatch = new SpriteBatch(GraphicsDevice);
            font = Content.Load<SpriteFont>("Fonts/Debug");
            fillTexture = Texture2DHelper.CreateFillTexture(GraphicsDevice);
            helpMessageFontSize = font.MeasureString(helpMessage);

            BuildInformationMessage();
            informationTextFontSize = font.MeasureString(stringBuilder);

            #endregion
        }
        public DemoPartitionFactory(DemoPartitionContext context)
        {
            if (context == null) throw new ArgumentNullException("context");

            this.context = context;
        }