public void FromTreeAttributes(ITreeAttribute tree)
        {
            State = (EnumFruitTreeState)tree.GetInt("rootFruitTreeState", (int)EnumFruitTreeState.Empty);
            lastCheckAtTotalDays     = tree.GetDouble("lastCheckAtTotalDays");
            vernalizedHours          = tree.GetDouble("vernalizedHours");
            lastStateChangeTotalDays = tree.GetDouble("lastStateChangeTotalDays");

            FloweringDays  = tree.GetFloat("floweringDays");
            FruitingDays   = tree.GetFloat("fruitingDays");
            RipeDays       = tree.GetFloat("ripeDays");
            GrowthStepDays = tree.GetFloat("growthStepDays");
            RootSizeMul    = tree.GetFloat("rootSizeMul");

            DieBelowTemp = tree.GetFloat("dieBelowTemp");
            CycleType    = (EnumTreeCycleType)tree.GetInt("cycleType");

            if (CycleType == EnumTreeCycleType.Deciduous)
            {
                VernalizationHours = tree.GetFloat("vernalizationHours");
                VernalizationTemp  = tree.GetFloat("vernalizationTemp");
            }

            if (CycleType == EnumTreeCycleType.Evergreen)
            {
                LooseLeavesBelowTemp = tree.GetFloat("looseLeavesBelowTemp");
                BlossomAtYearRel     = tree.GetFloat("blossomAtYearRel");
            }
        }
        protected void RootBh_OnFruitingStateChange(EnumFruitTreeState nowState)
        {
            switch (nowState)
            {
            case EnumFruitTreeState.EnterDormancy: FoliageState = EnumFoliageState.Plain; break;

            case EnumFruitTreeState.Dormant: FoliageState = EnumFoliageState.DormantNoLeaves; break;

            case EnumFruitTreeState.Flowering: FoliageState = EnumFoliageState.Flowering; break;

            case EnumFruitTreeState.Fruiting: FoliageState = EnumFoliageState.Fruiting; break;

            case EnumFruitTreeState.Ripe: FoliageState = EnumFoliageState.Ripe; break;

            case EnumFruitTreeState.Empty: FoliageState = EnumFoliageState.Plain; break;

            case EnumFruitTreeState.Young: FoliageState = EnumFoliageState.Plain; break;

            case EnumFruitTreeState.Dead: FoliageState = EnumFoliageState.Dead; break;
            }

            calcFruitingSide();
            MarkDirty();
        }