CameraToneMap.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. using System;
  2. using System.Collections.Generic;
  3. using Colorful;
  4. using GameWorld;
  5. using UnityEngine;
  6. using UnityEngine.SceneManagement;
  7. [RequireComponent(typeof(Camera))]
  8. public class CameraToneMap : BaseBehaviour
  9. {
  10. private void Awake()
  11. {
  12. this.ActiveCameraFilter(QualitySettings.GetQualityLevel() > 1);
  13. this.InitMapList();
  14. }
  15. private void InitMapList()
  16. {
  17. Dictionary<CameraToneMap.ToneMapType, string[]> dictionary = new Dictionary<CameraToneMap.ToneMapType, string[]>
  18. {
  19. {
  20. CameraToneMap.ToneMapType.BrightCold,
  21. new string[]
  22. {
  23. "C1L1S4",
  24. "C1L1S4_t",
  25. "C1L1S11",
  26. "C1L2S9",
  27. "C1L3S3",
  28. "C1L3S8",
  29. "C1L3S11",
  30. "C2L1S3",
  31. "C2L1S9",
  32. "C2L2S4",
  33. "C2L2S7",
  34. "C2L2S8",
  35. "C2L2S10",
  36. "C3L1S7",
  37. "C3L1S9",
  38. "C4L1S6",
  39. "C4L1S9",
  40. "C4L1S10",
  41. "C4L1S11",
  42. "C4L1S13",
  43. "C4L1S15",
  44. "C4L2S1",
  45. "C4L2S3",
  46. "C4L2S6",
  47. "C4L2S8",
  48. "C4L2S14",
  49. "C4L2S15",
  50. "C4L2S22",
  51. "C4L2S23",
  52. "C4L2S25",
  53. "C4L2S27",
  54. "C4L2S30",
  55. "C4L2S32",
  56. "C4L2S34",
  57. "C4L2S35",
  58. "C5L1S4",
  59. "palace0",
  60. "palace1",
  61. "palace2",
  62. "palace3",
  63. "palace4",
  64. "palace5",
  65. "palace6",
  66. "palace7"
  67. }
  68. },
  69. {
  70. CameraToneMap.ToneMapType.DarkCold,
  71. new string[]
  72. {
  73. "C0L1S1_t",
  74. "C0L1S2_t",
  75. "C0L1S3_t",
  76. "C0L1S4_t",
  77. "C1L1S1",
  78. "C1L1S1_t",
  79. "C1L1S2",
  80. "C1L1S2_t",
  81. "C1L1S3",
  82. "C1L1S3_t",
  83. "C1L1S5",
  84. "C1L1S5_t",
  85. "C1L1S6",
  86. "C1L1S6_t",
  87. "C1L1S7",
  88. "C1L1S7_t",
  89. "C1L1S8",
  90. "C1L1S12",
  91. "C1L1S13",
  92. "C1L3S14",
  93. "C1L3S15",
  94. "C1L3S16",
  95. "C2L1S11",
  96. "C2L1S12",
  97. "C2L1S13",
  98. "C2L2S6",
  99. "C3L1S1",
  100. "C3L1S2",
  101. "C3L1S21",
  102. "C3L1S22",
  103. "C4L1S4",
  104. "C4L1S5",
  105. "C4L1S7",
  106. "C4L1S8",
  107. "C4L1S14",
  108. "C4L2S10",
  109. "C4L2S13",
  110. "C4L2S18",
  111. "C4L2S20",
  112. "C4L2S21",
  113. "C4L2S33",
  114. "C5L1S1",
  115. "C5L1S2",
  116. "C5L1S3",
  117. "C6L1S1"
  118. }
  119. },
  120. {
  121. CameraToneMap.ToneMapType.BrightWarm,
  122. new string[]
  123. {
  124. "C1L2S4",
  125. "C1L3S1",
  126. "C1L3S2",
  127. "C1L3S4",
  128. "C1L3S5",
  129. "C1L3S6",
  130. "C1L3S7",
  131. "C1L3S9",
  132. "C1L3S12",
  133. "C1L3S13",
  134. "C2L1S1",
  135. "C2L1S2",
  136. "C2L1S4",
  137. "C2L1S5",
  138. "C3L1S4",
  139. "C3L1S8",
  140. "C3L1S10",
  141. "C3L1S14",
  142. "C3L1S15",
  143. "C3L1S16",
  144. "C3L1S20",
  145. "C4L2S9",
  146. "C4L2S11",
  147. "C4L2S16",
  148. "C4L2S17",
  149. "C4L2S24",
  150. "C4L2S28",
  151. "C4L2S31"
  152. }
  153. },
  154. {
  155. CameraToneMap.ToneMapType.DarkWarm,
  156. new string[]
  157. {
  158. "C1L2S1",
  159. "C1L2S2",
  160. "C1L2S3",
  161. "C1L2S5",
  162. "C1L2S7",
  163. "C1L2S8",
  164. "C1L2S10",
  165. "C1L2S11",
  166. "C1L2S12",
  167. "C1L2S13",
  168. "C1L2S14",
  169. "C1L3S10",
  170. "C2L1S6",
  171. "C2L1S7",
  172. "C2L1S8",
  173. "C2L1S10",
  174. "C2L2S1",
  175. "C2L2S2",
  176. "C2L2S3",
  177. "C2L2S5",
  178. "C2L2S9",
  179. "C2L2S11",
  180. "C2L2S12",
  181. "C2L2S13",
  182. "C3L1S3",
  183. "C3L1S5",
  184. "C3L1S6",
  185. "C3L1S11",
  186. "C3L1S12",
  187. "C3L1S13",
  188. "C3L1S18",
  189. "C3L1S19",
  190. "C4L1S12",
  191. "C4L2S2",
  192. "C4L2S5",
  193. "C4L2S7",
  194. "C4L2S12",
  195. "C4L2S19",
  196. "C4L2S26",
  197. "C4L2S29"
  198. }
  199. }
  200. };
  201. foreach (KeyValuePair<CameraToneMap.ToneMapType, string[]> keyValuePair in dictionary)
  202. {
  203. for (int i = 0; i < keyValuePair.Value.Length; i++)
  204. {
  205. this._mapList.Add(keyValuePair.Value[i], keyValuePair.Key);
  206. }
  207. }
  208. }
  209. private void OnEnable()
  210. {
  211. SceneManager.sceneLoaded += this.OnSceneLoaded;
  212. EventManager.RegisterEvent<EventArgs>("QualityChange", new EventManager.FBEventHandler<EventArgs>(this.OnQualityChange), EventManager.ListenerQueue.Game);
  213. }
  214. private void OnDisable()
  215. {
  216. SceneManager.sceneLoaded -= this.OnSceneLoaded;
  217. EventManager.UnregisterEvent<EventArgs>("QualityChange", new EventManager.FBEventHandler<EventArgs>(this.OnQualityChange), EventManager.ListenerQueue.Game);
  218. }
  219. private void OnSceneLoaded(Scene scene, LoadSceneMode loadSceneMode)
  220. {
  221. if (QualitySettings.GetQualityLevel() < 1)
  222. {
  223. return;
  224. }
  225. if (this._brightnessContrastGamma == null || this._photoFilter == null)
  226. {
  227. return;
  228. }
  229. this._brightnessContrastGamma.enabled = true;
  230. this._photoFilter.enabled = true;
  231. CameraToneMap.ToneMapType toneMapType = CameraToneMap.ToneMapType.Unknow;
  232. if (this._mapList.ContainsKey(scene.name))
  233. {
  234. toneMapType = this._mapList[scene.name];
  235. }
  236. switch (toneMapType)
  237. {
  238. case CameraToneMap.ToneMapType.BrightCold:
  239. this._brightnessContrastGamma.Contrast = 6f;
  240. this._photoFilter.Color = new Color(0f, 0.3647059f, 1f);
  241. this._photoFilter.Density = 0.097f;
  242. break;
  243. case CameraToneMap.ToneMapType.DarkCold:
  244. this._brightnessContrastGamma.Contrast = 8f;
  245. this._photoFilter.Color = new Color(0f, 0.3647059f, 1f);
  246. this._photoFilter.Density = 0.107f;
  247. break;
  248. case CameraToneMap.ToneMapType.BrightWarm:
  249. this._brightnessContrastGamma.Contrast = 5f;
  250. this._photoFilter.Color = new Color(0.980392158f, 0.5411765f, 0f);
  251. this._photoFilter.Density = 0.087f;
  252. break;
  253. case CameraToneMap.ToneMapType.DarkWarm:
  254. this._brightnessContrastGamma.Contrast = 6f;
  255. this._photoFilter.Color = new Color(0.980392158f, 0.5411765f, 0f);
  256. this._photoFilter.Density = 0.087f;
  257. break;
  258. default:
  259. this._brightnessContrastGamma.enabled = false;
  260. this._photoFilter.enabled = false;
  261. break;
  262. }
  263. }
  264. private bool OnQualityChange(string eventdefine, object sender, EventArgs msg)
  265. {
  266. this.ActiveCameraFilter(QualitySettings.GetQualityLevel() > 1);
  267. return true;
  268. }
  269. private void ActiveCameraFilter(bool active)
  270. {
  271. if (active)
  272. {
  273. if (this._brightnessContrastGamma == null)
  274. {
  275. this._brightnessContrastGamma = base.gameObject.AddComponent<BrightnessContrastGamma>();
  276. this._brightnessContrastGamma.Brightness = 0f;
  277. this._brightnessContrastGamma.Gamma = 1f;
  278. this._brightnessContrastGamma.enabled = false;
  279. }
  280. if (this._photoFilter == null)
  281. {
  282. this._photoFilter = base.gameObject.AddComponent<PhotoFilter>();
  283. this._photoFilter.enabled = false;
  284. }
  285. }
  286. else
  287. {
  288. UnityEngine.Object.Destroy(this._brightnessContrastGamma);
  289. UnityEngine.Object.Destroy(this._photoFilter);
  290. }
  291. }
  292. private BrightnessContrastGamma _brightnessContrastGamma;
  293. private PhotoFilter _photoFilter;
  294. private readonly Dictionary<string, CameraToneMap.ToneMapType> _mapList = new Dictionary<string, CameraToneMap.ToneMapType>();
  295. private enum ToneMapType
  296. {
  297. Unknow,
  298. BrightCold,
  299. DarkCold,
  300. BrightWarm,
  301. DarkWarm
  302. }
  303. }