/// <summary> /// Apply dungeon texture table. /// </summary> /// <param name="dungeonTextureTable">Dungeon texture table changes to apply.</param> public void SetDungeonTextures(int[] dungeonTextureTable) { if (defaultTextures.Count == 0) { return; } DaggerfallUnity dfUnity = DaggerfallUnity.Instance; if (!dfUnity.IsReady) { return; } // Get new material array Material[] materials = new Material[defaultTextures.Count]; DFLocation.ClimateBaseType climateIndex = Game.GameManager.Instance.PlayerGPS.ClimateSettings.ClimateType; for (int i = 0; i < defaultTextures.Count; i++) { MaterialReader.ReverseTextureKey(defaultTextures[i], out int archive, out int record, out _); archive = DungeonTextureTables.ApplyTextureTable(archive, dungeonTextureTable, climateIndex); materials[i] = dfUnity.MaterialReader.GetMaterial(archive, record); } // Assign material array if (materials != null) { GetComponent <MeshRenderer>().sharedMaterials = materials; } }
/// <summary> /// Apply dungeon texture table. /// </summary> /// <param name="dungeonTextureTable">Dungeon texture table changes to apply.</param> public void SetDungeonTextures(int[] dungeonTextureTable) { if (defaultTextures.Count == 0) { return; } DaggerfallUnity dfUnity = DaggerfallUnity.Instance; if (!dfUnity.IsReady) { return; } // Get new material array int archive, record, frame; Material[] materials = new Material[defaultTextures.Count]; for (int i = 0; i < defaultTextures.Count; i++) { MaterialReader.ReverseTextureKey(defaultTextures[i], out archive, out record, out frame); switch (archive) { case 119: archive = dungeonTextureTable[0]; break; case 120: archive = dungeonTextureTable[1]; break; case 122: archive = dungeonTextureTable[2]; break; case 123: archive = dungeonTextureTable[3]; break; case 124: archive = dungeonTextureTable[4]; break; case 168: archive = dungeonTextureTable[5]; break; } materials[i] = dfUnity.MaterialReader.GetMaterial(archive, record); } // Assign material array if (materials != null) { GetComponent <MeshRenderer>().sharedMaterials = materials; } }
/// <summary> /// Rebuild materials back to default with no climate modifier. /// </summary> /// <param name="dfUnity">DaggerfallUnity singleton. Required for content readers and settings.</param> public void DisableClimate(DaggerfallUnity dfUnity) { if (defaultTextures.Count == 0) { return; } // Get new material array int archive, record, frame; Material[] materials = new Material[defaultTextures.Count]; for (int i = 0; i < defaultTextures.Count; i++) { MaterialReader.ReverseTextureKey(defaultTextures[i], out archive, out record, out frame); materials[i] = dfUnity.MaterialReader.GetMaterial(archive, record); } // Assign material array if (materials != null) { GetComponent <MeshRenderer>().sharedMaterials = materials; } }