Ejemplo n.º 1
0
        /// <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;
            }
        }
Ejemplo n.º 2
0
        /// <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;
            }
        }
Ejemplo n.º 3
0
        /// <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;
            }
        }