public GrowDecoration(GrowDecorationParam paras)
 {
     _params            = paras;
     _params.growedTime = 0;
     _growMark          = true;
     _curDecoration     = DecorationFactory.GetDecorationInstance((DecorationType)_params.plantData.decorationType);
     (_curDecoration as DecorationRemoveBase).isGrow = true;
     _attachChunk = World.world.GetChunk((int)_params.pos.x, (int)_params.pos.y, (int)_params.pos.z);
     _curDecoration.Decorade(_attachChunk, (int)_params.loacalPos.x, (int)_params.loacalPos.y, (int)_params.loacalPos.z, _params.random);
     _growNeedTime = _params.plantData.growTime;
 }
 private void changeToNextState()
 {
     _params.growedTime = 0;
     (_curDecoration as DecorationRemoveBase).removeDecoration(_attachChunk);
     if (_params.plantData.nextId == 0)
     {
         HasActionObjectManager.Instance.plantManager.endGrow(_params.aoId);
         dispose();
         return;
     }
     _params.plantData = MTBPlantDataManager.Instance.getData(_params.plantData.nextId);
     _curDecoration    = DecorationFactory.GetDecorationInstance((DecorationType)_params.plantData.decorationType);
     _curDecoration.Decorade(_attachChunk, (int)_params.loacalPos.x, (int)_params.loacalPos.y, (int)_params.loacalPos.z, _params.random);
     _growNeedTime = DayNightTime.Instance.normalTimeConfig.daySeconds * _params.plantData.growTime;
     World.world.CheckAndRecalculateMesh((int)_params.pos.x, (int)_params.pos.y, (int)_params.pos.z, World.world.GetBlock((int)_params.pos.x, (int)_params.pos.y, (int)_params.pos.z));
 }
        private void GeneratePopulation(Chunk chunk, BiomeConfig biomeConfig)
        {
            for (int i = 0; i < biomeConfig.populationParams.Count; i++)
            {
                PopulationParam populationParam = biomeConfig.populationParams[i];
                if (_random.Range(0, 100) < populationParam.productRate)
                {
                    IDecoration decoration = DecorationFactory.GetDecoration(populationParam.decorationType);

                    for (int j = 0; j < populationParam.frequency; j++)
                    {
                        int x = _random.Range(0, Chunk.chunkWidth);
                        int z = _random.Range(0, Chunk.chunkDepth);
                        if (chunk.GetBiomeId(x, z, true) != biomeConfig.biomeId)
                        {
                            continue;
                        }
                        DispatchDecoration(chunk, x, z, populationParam, decoration, biomeConfig.biomeId);
                    }
                }
            }
        }