Exemplo n.º 1
0
        private Color GetGrassBiomeColor(IBlockAccess access, int x, int y, int z)
        {
            var biome = access.GetBiome(new BlockCoordinates(x, y, z));

            return(Resources.ResourcePack.GetGrassColor(
                       biome.Temperature, biome.Downfall, y));
        }
Exemplo n.º 2
0
        protected void GetVertices(IBlockAccess world, ChunkData chunkBuilder, BlockCoordinates blockCoordinates,
                                   Vector3 position, Block baseBlock,
                                   BlockStateModel[] models)
        {
            {
                var biome = world == null?BiomeUtils.GetBiomeById(0) : world.GetBiome(position);

                if (UseRandomizer)
                {
                    BlockStateModel selectedModel = null;
                    var             rnd           = MathF.Abs(NoiseGenerator.GetValue(position.X * position.Y, position.Z * position.X)) * WeightSum;

                    for (var index = 0; index < models.Length; index++)
                    {
                        var model = models[index];
                        rnd -= model.Weight;

                        if (rnd < 0)
                        {
                            selectedModel = model;

                            break;
                        }
                    }

                    CalculateModel(
                        world, blockCoordinates, chunkBuilder, position, baseBlock, selectedModel, biome);
                }
                else
                {
                    for (var bsModelIndex = 0; bsModelIndex < models.Length; bsModelIndex++)
                    {
                        var bsModel = models[bsModelIndex];

                        if (bsModel.Model == null)
                        {
                            continue;
                        }

                        CalculateModel(
                            world, blockCoordinates, chunkBuilder, position, baseBlock, bsModel,
                            biome);
                    }
                }
            }
        }
Exemplo n.º 3
0
        public override void GetVertices(IBlockAccess world, ChunkData chunkBuilder, BlockCoordinates blockCoordinates, Vector3 position, Block baseBlock)
        {
            var biome = world == null?BiomeUtils.GetBiomeById(0) : world.GetBiome(position);

            if (UseRandomizer)
            {
                BlockStateModelWrapper selectedModel = null;

                var rnd = MathF.Abs(NoiseGenerator.GetValue(position.X * position.Y, position.Z * position.X))
                          * WeightSum;

                for (var index = 0; index < Models.Length; index++)
                {
                    var model = Models[index];
                    rnd -= model.BlockStateModel.Weight;

                    if (rnd < 0)
                    {
                        selectedModel = model;

                        break;
                    }
                }

                CalculateModel(world, blockCoordinates, chunkBuilder, position, baseBlock, selectedModel.BlockStateModel, selectedModel.BlockModel, biome);
            }
            else
            {
                for (var bsModelIndex = 0; bsModelIndex < Models.Length; bsModelIndex++)
                {
                    var bsModel = Models[bsModelIndex];

                    //	if (string.IsNullOrWhiteSpace(bsModel.ModelName)) continue;

                    CalculateModel(world, blockCoordinates, chunkBuilder, position, baseBlock, bsModel.BlockStateModel, bsModel.BlockModel, biome);
                }
            }
        }
Exemplo n.º 4
0
 private Color GetBiomeColor(IBlockAccess access, int x, int y, int z)
 {
     return(access.GetBiome(new BlockCoordinates(x, y, z)).Water);
 }
Exemplo n.º 5
0
        public override void GetVertices(IBlockAccess world,
                                         ChunkData chunkBuilder,
                                         BlockCoordinates blockCoordinates,
                                         Vector3 position,
                                         BlockState baseBlock)
        {
            var biome = world == null?BiomeUtils.GetBiomeById(0) : world.GetBiome(position);


            if (baseBlock.ModelData == null)
            {
                return;
            }

            if (baseBlock.VariantMapper.IsMultiPart)
            {
                foreach (var model in baseBlock.ModelData)
                {
                    if (Resources.BlockModelRegistry.TryGet(model.ModelName, out var registryEntry))
                    {
                        CalculateModel(
                            world, blockCoordinates, chunkBuilder, position, baseBlock.Block, model,
                            registryEntry.Value, biome);
                    }
                }

                return;
            }

            //	if (UseRandomizer)
            {
                BlockStateModel selectedModel = null;

                if (baseBlock.ModelData.Count > 1)
                {
                    var weightSum = baseBlock.ModelData.Sum(x => x.Weight);

                    var rnd = ((baseBlock.ModelData.Count == 1) ? 1f : MathF.Abs(
                                   NoiseGenerator.GetValue(position.X * position.Y, position.Z * position.X))) * weightSum;

                    //for (var index = 0; index < Models.Length; index++)
                    foreach (var model in baseBlock.ModelData)
                    {
                        //	var model = Models[index];
                        rnd -= model.Weight;

                        if (rnd < 0)
                        {
                            selectedModel = model;

                            break;
                        }
                    }
                }
                else
                {
                    selectedModel = baseBlock.ModelData.FirstOrDefault();
                }

                if (selectedModel == null)
                {
                    return;
                }

                if (Resources.BlockModelRegistry.TryGet(selectedModel.ModelName, out var registryEntry))
                {
                    CalculateModel(
                        world, blockCoordinates, chunkBuilder, position, baseBlock.Block, selectedModel,
                        registryEntry.Value, biome);
                }

                //	CalculateModel(world, blockCoordinates, chunkBuilder, position, baseBlock, selectedModel.BlockStateModel, selectedModel.BlockModel, biome);
            }
            //else
            //{
            //for (var bsModelIndex = 0; bsModelIndex < Models.Length; bsModelIndex++)
            //{
            //var bsModel = Models[bsModelIndex];

            //	if (string.IsNullOrWhiteSpace(bsModel.ModelName)) continue;

            //}
            //}
        }