示例#1
0
 public LightingPalette(EnvironmentLightingColors data)
 {
     Shadow        = data.ShadowColor;
     ActorAmbient  = data.ActorAmbientColor;
     RoomLight     = data.RoomLightColor;
     RoomAmbient   = data.RoomAmbientColor;
     WaveColor     = data.WaveColor;
     OceanColor    = data.OceanColor;
     UnknownWhite1 = data.UnknownWhite1;
     UnknownWhite2 = data.UnknownWhite2;
     Doorway       = data.DoorBackfill;
     UnknownColor3 = data.Unknown3;
 }
示例#2
0
文件: Stage.cs 项目: Hengle/Winditor
        private List <EnvironmentLighting> GetLightingData()
        {
            List <EnvironmentLighting>  lights   = new List <EnvironmentLighting>();
            List <LightingTimePreset>   times    = new List <LightingTimePreset>();
            List <LightingPalette>      palettes = new List <LightingPalette>();
            List <LightingSkyboxColors> skyboxes = new List <LightingSkyboxColors>();

            if (!m_fourCCGroups.ContainsKey(FourCC.EnvR) ||
                !m_fourCCGroups.ContainsKey(FourCC.Colo) ||
                !m_fourCCGroups.ContainsKey(FourCC.Virt) ||
                !m_fourCCGroups.ContainsKey(FourCC.Pale))
            {
                return(lights);
            }

            foreach (var virt in m_fourCCGroups[FourCC.Virt].Children)
            {
                EnvironmentLightingSkyboxColors skybox    = (EnvironmentLightingSkyboxColors)virt;
                LightingSkyboxColors            skycolors = new LightingSkyboxColors(skybox);

                skyboxes.Add(skycolors);
            }

            foreach (var pale in m_fourCCGroups[FourCC.Pale].Children)
            {
                EnvironmentLightingColors colors  = (EnvironmentLightingColors)pale;
                LightingPalette           palette = new LightingPalette(colors);

                if (colors.SkyboxColorIndex < skyboxes.Count)
                {
                    palette.Skybox = skyboxes[colors.SkyboxColorIndex];
                }
                else
                {
                    palette.Skybox = new LightingSkyboxColors();
                }

                palettes.Add(palette);
            }

            foreach (var colo in m_fourCCGroups[FourCC.Colo].Children)
            {
                EnvironmentLightingTimesOfDay daytimes = (EnvironmentLightingTimesOfDay)colo;
                LightingTimePreset            preset   = new LightingTimePreset();

                preset.TimePresetA[0] = palettes[daytimes.DawnA];
                preset.TimePresetA[1] = palettes[daytimes.MorningA];
                preset.TimePresetA[2] = palettes[daytimes.NoonA];
                preset.TimePresetA[3] = palettes[daytimes.AfternoonA];
                preset.TimePresetA[4] = palettes[daytimes.DuskA];
                preset.TimePresetA[5] = palettes[daytimes.NightA];

                preset.TimePresetB[0] = palettes[0]; //daytimes.DawnB];
                preset.TimePresetB[1] = palettes[0]; //palettes[daytimes.MorningB];
                preset.TimePresetB[2] = palettes[0]; //palettes[daytimes.NoonB];
                preset.TimePresetB[3] = palettes[0]; //palettes[daytimes.AfternoonB];
                preset.TimePresetB[4] = palettes[0]; //palettes[daytimes.DuskB];
                preset.TimePresetB[5] = palettes[0]; //palettes[daytimes.NightB];

                times.Add(preset);
            }

            foreach (var envr in m_fourCCGroups[FourCC.EnvR].Children)
            {
                EnvironmentLightingConditions condition = (EnvironmentLightingConditions)envr;
                EnvironmentLighting           env       = new EnvironmentLighting();

                env.WeatherA[0] = times[condition.ClearA];
                env.WeatherA[1] = times[condition.RainingA < times.Count ? condition.RainingA : 0];
                env.WeatherA[2] = times[condition.SnowingA];
                env.WeatherA[3] = times[condition.UnknownA];

                env.WeatherB[0] = times[condition.ClearB];
                env.WeatherB[1] = times[condition.RainingB];
                env.WeatherB[2] = times[condition.SnowingB];
                env.WeatherB[3] = times[condition.UnknownB];

                lights.Add(env);
            }

            return(lights);
        }