ThemeManager.cs 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.PostProcessing;
  5. using UnityEngine.UI;
  6. using UnityEngine.SceneManagement;
  7. public interface MatPropertySet {}
  8. public class MatPropertySetBase : MatPropertySet{
  9. public Color ColorTint;
  10. public float BaseSmoothnessMultiplier;
  11. public float BaseMetallic;
  12. }
  13. public class SciFiTheme {
  14. public static int NUM_BASEMAT = 3;
  15. public MatPropertySetBase[] MatBaseProperties = new MatPropertySetBase[NUM_BASEMAT];
  16. public Color DecalColor;
  17. }
  18. /*
  19. *
  20. * ThemeManager class
  21. *
  22. */
  23. public class ThemeManager : MonoBehaviour {
  24. public Material[] BaseMaterial_01 = new Material[4];
  25. public Material[] BaseMaterial_02 = new Material[2];
  26. public Material[] BaseMaterial_03 = new Material[1];
  27. public Material DecalMaterial;
  28. public PostProcessingProfile[] PPProfiles;
  29. private SciFiTheme[] scifiThemesArray = new SciFiTheme[4];
  30. private Light [] streetLights;
  31. private Camera mainCam;
  32. void OnEnable () {
  33. mainCam = Camera.main;
  34. Initialze();
  35. //streetLights ;
  36. }
  37. public void setTheme(int themeId) {
  38. MatPropertySetBase baseSet = scifiThemesArray[themeId].MatBaseProperties[0];
  39. for (int j = 0; j < BaseMaterial_01.Length; j++) {
  40. BaseMaterial_01[j].SetColor("_ColorTint",baseSet.ColorTint);
  41. BaseMaterial_01[j].SetFloat("_Metallic", baseSet.BaseMetallic);
  42. BaseMaterial_01[j].SetFloat("_SmoothnessMultiplier", baseSet.BaseSmoothnessMultiplier);
  43. }
  44. baseSet = scifiThemesArray[themeId].MatBaseProperties[1];
  45. for (int j = 0; j < BaseMaterial_02.Length; j++) {
  46. BaseMaterial_02[j].SetColor("_ColorTint",baseSet.ColorTint);
  47. BaseMaterial_02[j].SetFloat("_Metallic", baseSet.BaseMetallic);
  48. BaseMaterial_02[j].SetFloat("_SmoothnessMultiplier", baseSet.BaseSmoothnessMultiplier);
  49. }
  50. baseSet = scifiThemesArray[themeId].MatBaseProperties[2];
  51. for (int j = 0; j < BaseMaterial_03.Length; j++) {
  52. BaseMaterial_03[j].SetColor("_ColorTint",baseSet.ColorTint);
  53. BaseMaterial_03[j].SetFloat("_Metallic", baseSet.BaseMetallic);
  54. BaseMaterial_03[j].SetFloat("_SmoothnessMultiplier", baseSet.BaseSmoothnessMultiplier);
  55. }
  56. DecalMaterial.SetColor("_Color", scifiThemesArray [themeId].DecalColor);
  57. }
  58. public void setPostProcessingProfile(int ppId) {
  59. PostProcessingBehaviour ppb = mainCam.GetComponent<PostProcessingBehaviour>();
  60. ppb.profile = PPProfiles[ppId];
  61. }
  62. /*
  63. *
  64. * Initializing
  65. *
  66. */
  67. void Initialze () {
  68. InitializeTheme_1();
  69. InitializeTheme_2();
  70. InitializeTheme_3();
  71. InitializeTheme_4();
  72. }
  73. void InitializeTheme_1 () {
  74. SciFiTheme scifiTheme = new SciFiTheme();
  75. // Color 1
  76. MatPropertySetBase mpsb_1 = new MatPropertySetBase();
  77. mpsb_1.ColorTint = ColorConverter.HexToColor("CECECE");
  78. mpsb_1.BaseMetallic = 0f;
  79. mpsb_1.BaseSmoothnessMultiplier = 1f;
  80. scifiTheme.MatBaseProperties[0] = mpsb_1;
  81. // Color 2
  82. MatPropertySetBase mpsb_2 = new MatPropertySetBase();
  83. mpsb_2.ColorTint = ColorConverter.HexToColor("8C8C8C");
  84. mpsb_2.BaseMetallic = 0f;
  85. mpsb_2.BaseSmoothnessMultiplier = 1f;
  86. scifiTheme.MatBaseProperties[1] = mpsb_2;
  87. // Color 3
  88. MatPropertySetBase mpsb_3 = new MatPropertySetBase();
  89. mpsb_3.ColorTint = ColorConverter.HexToColor("FF9B37");
  90. mpsb_3.BaseMetallic = 0f;
  91. mpsb_3.BaseSmoothnessMultiplier = 1f;
  92. scifiTheme.MatBaseProperties[2] = mpsb_3;
  93. scifiTheme.DecalColor = ColorConverter.HexToColor ("636363");
  94. scifiThemesArray[0] = scifiTheme;
  95. }
  96. void InitializeTheme_2 () {
  97. SciFiTheme scifiTheme = new SciFiTheme();
  98. // Color 1
  99. MatPropertySetBase mpsb_1 = new MatPropertySetBase();
  100. mpsb_1.ColorTint = ColorConverter.HexToColor("CECECE");
  101. mpsb_1.BaseMetallic = 1f;
  102. mpsb_1.BaseSmoothnessMultiplier = 1f;
  103. scifiTheme.MatBaseProperties[0] = mpsb_1;
  104. // Color 2
  105. MatPropertySetBase mpsb_2 = new MatPropertySetBase();
  106. mpsb_2.ColorTint = ColorConverter.HexToColor("8C8C8C");
  107. mpsb_2.BaseMetallic = 1f;
  108. mpsb_2.BaseSmoothnessMultiplier = 1f;
  109. scifiTheme.MatBaseProperties[1] = mpsb_2;
  110. // Color 3
  111. MatPropertySetBase mpsb_3 = new MatPropertySetBase();
  112. mpsb_3.ColorTint = ColorConverter.HexToColor("FF9B37");
  113. mpsb_3.BaseMetallic = 0f;
  114. mpsb_3.BaseSmoothnessMultiplier = 1f;
  115. scifiTheme.MatBaseProperties[2] = mpsb_3;
  116. scifiTheme.DecalColor = ColorConverter.HexToColor ("636363");
  117. scifiThemesArray[1] = scifiTheme;
  118. }
  119. void InitializeTheme_3 () {
  120. SciFiTheme scifiTheme = new SciFiTheme();
  121. // Color 1
  122. MatPropertySetBase mpsb_1 = new MatPropertySetBase();
  123. mpsb_1.ColorTint = ColorConverter.HexToColor("FFE6C1");
  124. mpsb_1.BaseMetallic = 0f;
  125. mpsb_1.BaseSmoothnessMultiplier = 1f;
  126. scifiTheme.MatBaseProperties[0] = mpsb_1;
  127. // Color 2
  128. MatPropertySetBase mpsb_2 = new MatPropertySetBase();
  129. mpsb_2.ColorTint = ColorConverter.HexToColor("93A3AE");
  130. mpsb_2.BaseMetallic = 0f;
  131. mpsb_2.BaseSmoothnessMultiplier = 1f;
  132. scifiTheme.MatBaseProperties[1] = mpsb_2;
  133. // Color 3
  134. MatPropertySetBase mpsb_3 = new MatPropertySetBase();
  135. mpsb_3.ColorTint = ColorConverter.HexToColor("FF9B37");
  136. mpsb_3.BaseMetallic = 0f;
  137. mpsb_3.BaseSmoothnessMultiplier = 1f;
  138. scifiTheme.MatBaseProperties[2] = mpsb_3;
  139. scifiTheme.DecalColor = ColorConverter.HexToColor ("2881B2");
  140. scifiThemesArray[2] = scifiTheme;
  141. }
  142. void InitializeTheme_4 () {
  143. SciFiTheme scifiTheme = new SciFiTheme();
  144. // Color 1
  145. MatPropertySetBase mpsb_1 = new MatPropertySetBase();
  146. mpsb_1.ColorTint = ColorConverter.HexToColor("77979E");
  147. mpsb_1.BaseMetallic = 0f;
  148. mpsb_1.BaseSmoothnessMultiplier = 1f;
  149. scifiTheme.MatBaseProperties[0] = mpsb_1;
  150. // Color 2
  151. MatPropertySetBase mpsb_2 = new MatPropertySetBase();
  152. mpsb_2.ColorTint = ColorConverter.HexToColor("D0C9A5");
  153. mpsb_2.BaseMetallic = 0f;
  154. mpsb_2.BaseSmoothnessMultiplier = 1f;
  155. scifiTheme.MatBaseProperties[1] = mpsb_2;
  156. // Color 3
  157. MatPropertySetBase mpsb_3 = new MatPropertySetBase();
  158. mpsb_3.ColorTint = ColorConverter.HexToColor("FF9B37");
  159. mpsb_3.BaseMetallic = 0f;
  160. mpsb_3.BaseSmoothnessMultiplier = 1f;
  161. scifiTheme.MatBaseProperties[2] = mpsb_3;
  162. scifiTheme.DecalColor = ColorConverter.HexToColor ("DDDDDD");
  163. scifiThemesArray[3] = scifiTheme;
  164. }
  165. }