/// <summary> /// Creates a new block node. /// </summary> /// <param name="name">Block name.</param> /// <param name="climate">Climate settings.</param> /// <param name="clearGroundTextures">Clear ground plane texture dictionary.</param> /// <returns>BlockNode.</returns> public BlockNode CreateBlockNode(string name, DFLocation.ClimateSettings?climate, bool clearGroundTextures) { // Load block DFBlock block; if (!LoadDaggerfallBlock(name, out block)) { return(null); } // Set default world climate if (climate == null) { climate = MapsFile.GetWorldClimateSettings(defaultWorldClimate); } // Reset ground plane texture cache if (clearGroundTextures) { textureManager.ClearGroundTextures(); } // Build node BlockNode node = null; switch (block.Type) { case DFBlock.BlockTypes.Rmb: textureManager.ClimateType = climate.Value.ClimateType; node = BuildRMBNode(ref block, climate.Value); break; case DFBlock.BlockTypes.Rdb: textureManager.ClimateType = DFLocation.ClimateBaseType.None; node = BuildRDBNode(ref block); break; } return(node); }