Пример #1
0
 public void Initialise(VoxelTypeManager voxelTypeManager, IChunkManager chunkManager, FrameworkEventManager eventManager)
 {
     throw new NotImplementedException();
 }
Пример #2
0
 public override void Initialise(VoxelTypeManager voxelTypeManager, IChunkManager chunkManager, FrameworkEventManager eventManager)
 {
     base.Initialise(voxelTypeManager, chunkManager, eventManager);
     dirtID  = voxelTypeManager.GetId(dirtType);
     grassID = voxelTypeManager.GetId(grassType);
 }
Пример #3
0
        public override void Initialise(VoxelTypeManager voxelTypeManager, IChunkManager chunkManager, FrameworkEventManager eventManager)
        {
            base.Initialise(voxelTypeManager, chunkManager, eventManager);


            Assert.IsNotNull(bedrockType, $"{typeof(NoisyProvider)} must have a valid reference to a bedrock block type");
            Assert.IsNotNull(waterType, $"{typeof(NoisyProvider)} must have a valid reference to a water block type");
            Assert.IsNotNull(biomeDatabaseComponent, $"{typeof(NoisyProvider)} must have a valid reference to a biome database component");

            if (SceneMessagePasser.TryConsumeMessage <SeedMessage>(out var message))
            {
                worldSettings.seed = GetSeedAsFloat(message.seed);
                Debug.Log($"Int seed: {message.seed}, derived seed: {worldSettings.seed}");
            }
            InitialiseSeeds();

            bedrockID = voxelTypeManager.GetId(bedrockType);
            waterID   = voxelTypeManager.GetId(waterType);

            chunkDimensions = chunkManager.ChunkDimensions.ToNative();

            if (chunkManager.WorldLimits.IsWorldHeightLimited)
            {
                minY = chunkManager.WorldLimits.MinChunkY * chunkManager.ChunkDimensions.y;
            }

            worldSettings.Initialise(minY, chunkManager.ChunkDimensions.ToNative());
            treeSettings.Initialise();

            biomeDatabaseComponent.Initialise();

            //Setup ocean config
            try
            {
                var oceanZone   = biomeDatabaseComponent.config.elevationLowToHigh.Find((zone) => zone.Name.Equals("Ocean"));
                var oceanBiomes = oceanZone.moistureLevelsLowToHigh.Select((def) => def.biomeDefinition).ToArray();

                oceanGenConfig.oceanIDs = new NativeArray <int>(oceanBiomes.Length, Allocator.Persistent);
                for (int i = 0; i < oceanBiomes.Length; i++)
                {
                    oceanGenConfig.oceanIDs[i] = biomeDatabaseComponent.GetBiomeID(oceanBiomes[i]);
                }
                oceanGenConfig.sealevel = math.floor(math.lerp(worldSettings.minPossibleHmValue, worldSettings.maxPossibleHmValue, biomeDatabaseComponent.GetMaxElevationFraction(oceanBiomes[0])));
                oceanGenConfig.waterID  = waterID;
            }
            catch (Exception e)
            {
                throw new Exception($"Failed to find any ocean biomes for biome config {biomeDatabaseComponent.config.name}. Cause {e.Message}");
            }

            noiseMaps = new Dictionary <Vector2Int, ChunkColumnNoiseMaps>();
            numActiveChunksInColumn  = new Dictionary <Vector2Int, int>();
            noiseGenReferenceCounter = new JobReferenceCounter <Vector2Int, NativeChunkColumnNoiseMaps>(MakeNoiseJob);

            structureGenerator = new StructureGenerator();
            structureGenerator.Initalise(voxelTypeManager, biomeDatabaseComponent, treeSettings.TreeThreshold, (int)treemapNoise.Seed);

            oreSettings.Initialise(voxelTypeManager);

            eventManager.OnChunkActivated   += OnChunkActivated;
            eventManager.OnChunkDeactivated += OnChunkDeactivated;
        }
Пример #4
0
 public override void Initialise(VoxelTypeManager voxelTypeManager, IChunkManager chunkManager, FrameworkEventManager eventManager)
 {
     base.Initialise(voxelTypeManager, chunkManager, eventManager);
     CullFaces = true;
 }