Source: Core/Resources/Engine_DefaultResources.js

  1. /*
  2. * File: Engine_DefaultResources.js
  3. */
  4. /*jslint node: true, vars: true, evil: true, white: true */
  5. /*global SimpleShader, TextureShader, SpriteShader,
  6. LineShader, LightShader, IllumShader, ShadowCasterShader, vec4 */
  7. /* find out more about jslint: http://www.jslint.com/help.html */
  8. "use strict"; // Operate in Strict mode such that variables must be declared before used!
  9. /**
  10. * Static refrence to gEngine
  11. * @type gEngine
  12. */
  13. var gEngine = gEngine || { };
  14. /**
  15. *
  16. * @class gEngine.DefaultResources
  17. * @type Function|Engine_DefaultResources_L21.mPublic
  18. */
  19. gEngine.DefaultResources = (function () {
  20. // Global Ambient color
  21. var mGlobalAmbientColor = [0.3, 0.3, 0.3, 1];
  22. var mGlobalAmbientIntensity = 1;
  23. /**
  24. * Return Global Ambient Intensity Value
  25. * @memberOf gEngine.DefaultResources
  26. * @returns {Number} Global Ambient Intensity Value
  27. */
  28. var getGlobalAmbientIntensity = function () { return mGlobalAmbientIntensity; };
  29. /**
  30. * Set Global Ambient Intensity Value
  31. * @memberOf gEngine.DefaultResources
  32. * @param {Number} v Global Ambient Intensity Value
  33. * @returns {void}
  34. */
  35. var setGlobalAmbientIntensity = function (v) { mGlobalAmbientIntensity = v; };
  36. /**
  37. * Return Global Ambient Color [R, G, B, A]
  38. * @memberOf gEngine.DefaultResources
  39. * @returns {Float[]} Global Ambient Color
  40. */
  41. var getGlobalAmbientColor = function () { return mGlobalAmbientColor; };
  42. /**
  43. * Set Global Ambient Color [R, G, B, A]
  44. * @memberOf gEngine.DefaultResources
  45. * @param {type} v Global Ambient Color
  46. * @returns {void}
  47. */
  48. var setGlobalAmbientColor = function (v) { mGlobalAmbientColor = vec4.fromValues(v[0], v[1], v[2], v[3]); };
  49. // Unlit Shader
  50. var kUnlitFS = "src/GLSLShaders/UnlitFS.glsl"; // Path to the unlit FragmentShader
  51. var mUnlitShader = null;
  52. // Unlit Texture Shader
  53. var kUnlitTextureFS = "src/GLSLShaders/UnlitTextureFS.glsl"; // Path to the texture FragmentShader
  54. var mUnlitTextureShader = null;
  55. var mUnlitSpriteShader = null;
  56. // Simple Shader
  57. var kSimpleVS = "src/GLSLShaders/SimpleVS.glsl"; // Path to the VertexShader
  58. var kSimpleFS = "src/GLSLShaders/SimpleFS.glsl"; // Path to the simple FragmentShader
  59. var mConstColorShader = null;
  60. // Texture Shader
  61. var kTextureVS = "src/GLSLShaders/TextureVS.glsl"; // Path to the VertexShader
  62. var kTextureFS = "src/GLSLShaders/TextureFS.glsl"; // Path to the texture FragmentShader
  63. var mTextureShader = null;
  64. var mSpriteShader = null;
  65. var kLineFS = "src/GLSLShaders/LineFS.glsl"; // Path to the Line FragmentShader
  66. var mLineShader = null;
  67. // Light Shader
  68. var kLightFS = "src/GLSLShaders/LightFS.glsl"; // Path to the Light FragmentShader
  69. var mLightShader = null;
  70. // Illumination Shader
  71. var kIllumFS = "src/GLSLShaders/IllumFS.glsl"; // Path to the Illumination FragmentShader
  72. var mIllumShader = null;
  73. // Shadow shaders
  74. var kShadowReceiverFS = "src/GLSLShaders/ShadowReceiverFS.glsl"; // Path to the FragmentShader
  75. var mShadowReceiverShader = null;
  76. var kShadowCasterFS = "src/GLSLShaders/ShadowCasterFS.glsl"; // Path to the FragmentShader
  77. var mShadowCasterShader = null;
  78. var kParticleFS = "src/GLSLShaders/ParticleFS.glsl";
  79. var mParticleShader = null;
  80. // Default font
  81. var kDefaultFont = "assets/fonts/system-default-font";
  82. // Particles
  83. var kParticleTexture = "assets/ParticleSystem/particle.png";
  84. var fireParticleTexture = "assets/ParticleSystem/flameparticle.png";
  85. var smokeParticleTexture = "assets/ParticleSystem/smokeparticle.png";
  86. var snowParticleTexture = "assets/ParticleSystem/snowparticle.png";
  87. var tinyParticleTexture = "assets/ParticleSystem/tiny.png";
  88. var dustParticleTexture = "assets/ParticleSystem/dust.png";
  89. var dust2ParticleTexture = "assets/ParticleSystem/dust2.png";
  90. var flareParticleTexture = "assets/ParticleSystem/flare.png";
  91. var shockParticleTexture = "assets/ParticleSystem/shock.png";
  92. var shock2ParticleTexture = "assets/ParticleSystem/shock2.png";
  93. var targetParticleTexture = "assets/Fire/target.png";
  94. var sparkleParticleTexture = "assets/ParticleSystem/sparkle.png";
  95. var bubbleParticleTexture = "assets/ParticleSystem/bubble.png";
  96. // UI
  97. var UIRadarButtonTexture = "assets/UI/radarbutton.png";
  98. var UIDropDownArrow = "assets/UI/ddarrow.png";
  99. var BarStencil = "assets/UI/BarStencil.png";
  100. var VBarStencil = "assets/UI/VBarStencil.png";
  101. var SliderHandle = "assets/UI/SliderHandle.png";
  102. var VSliderHandle = "assets/UI/VSliderHandle.png";
  103. var SwitchToggleHandle = "assets/UI/SwitchToggleHandle.png";
  104. var SwitchToggleStencil = "assets/UI/SwitchToggleStencil.png";
  105. var ButtonStencil = "assets/UI/ButtonStencil.png";
  106. /**
  107. * Return the Global default font
  108. * @memberOf gEngine.DefaultResources
  109. * @returns {String} Default font name
  110. */
  111. var getDefaultFont = function () { return kDefaultFont; };
  112. var _createShaders = function (callBackFunction) {
  113. gEngine.ResourceMap.setLoadCompleteCallback(null);
  114. mUnlitShader = new UnlitShader(kSimpleVS, kUnlitFS);
  115. mUnlitTextureShader = new UnlitTextureShader(kTextureVS, kUnlitTextureFS);
  116. mUnlitSpriteShader = new UnlitSpriteShader(kTextureVS, kUnlitTextureFS);
  117. mConstColorShader = new SimpleShader(kSimpleVS, kSimpleFS);
  118. mTextureShader = new TextureShader(kTextureVS, kTextureFS);
  119. mSpriteShader = new SpriteShader(kTextureVS, kTextureFS);
  120. mLineShader = new LineShader(kSimpleVS, kLineFS);
  121. mLightShader = new LightShader(kTextureVS, kLightFS);
  122. mIllumShader = new IllumShader(kTextureVS, kIllumFS);
  123. mShadowReceiverShader = new SpriteShader(kTextureVS, kShadowReceiverFS);
  124. mShadowCasterShader = new ShadowCasterShader(kTextureVS, kShadowCasterFS);
  125. mParticleShader = new TextureShader(kTextureVS, kParticleFS);
  126. callBackFunction();
  127. };
  128. /**
  129. * Return the Unlit Shader
  130. * @memberOf gEngine.DefaultResources
  131. * @returns {UnlitShader} Unlit Shader
  132. */
  133. var getUnlitShader = function () { return mUnlitShader; };
  134. /**
  135. * Return the Unlit Texture Shader
  136. * @memberOf gEngine.DefaultResources
  137. * @returns {UnlitTextureShader} Unlit Texture Shader
  138. */
  139. var getUnlitTextureShader = function () { return mUnlitTextureShader; };
  140. /**
  141. * Return the Unlit Sprite Shader
  142. * @memberOf gEngine.DefaultResources
  143. * @returns {UnlitSpriteShader} Unlit Sprite Shader
  144. */
  145. var getUnlitSpriteShader = function () { return mUnlitSpriteShader; };
  146. /**
  147. * Return the Constant Color Shader
  148. * @memberOf gEngine.DefaultResources
  149. * @returns {SimpleShader} Simple Shader
  150. */
  151. var getConstColorShader = function () { return mConstColorShader; };
  152. /**
  153. * Return the Texture Shader
  154. * @memberOf gEngine.DefaultResources
  155. * @returns {TextureShader} Texture Shader
  156. */
  157. var getTextureShader = function () { return mTextureShader; };
  158. /**
  159. * Return the Sprite Shader
  160. * @memberOf gEngine.DefaultResources
  161. * @returns {SpriteShader} Sprite Shader
  162. */
  163. var getSpriteShader = function () { return mSpriteShader; };
  164. /**
  165. * Return the Line Shader
  166. * @memberOf gEngine.DefaultResources
  167. * @returns {LineShader} Line Shader
  168. */
  169. var getLineShader = function () { return mLineShader; };
  170. /**
  171. * Return the Light Shader
  172. * @memberOf gEngine.DefaultResources
  173. * @returns {LightShader} Light Shader
  174. */
  175. var getLightShader = function () { return mLightShader; };
  176. /**
  177. * Return the Illum Shader
  178. * @memberOf gEngine.DefaultResources
  179. * @returns {IllumShader} Illum Shader
  180. */
  181. var getIllumShader = function () { return mIllumShader; };
  182. /**
  183. * Return the Shadow Receiver Shader
  184. * @memberOf gEngine.DefaultResources
  185. * @returns {SpriteShader} Shadow Receiver Shader
  186. */
  187. var getShadowReceiverShader = function () { return mShadowReceiverShader; };
  188. /**
  189. * Return the Shadow Caster Shader
  190. * @memberOf gEngine.DefaultResources
  191. * @returns {ShadowCasterShader} Shadow Caster Shader
  192. */
  193. var getShadowCasterShader = function () { return mShadowCasterShader; };
  194. /**
  195. * Return the Particle Shader
  196. * @memberOf gEngine.DefaultResources
  197. * @returns {TextureShader} Particle Shader
  198. */
  199. var getParticleShader = function () { return mParticleShader; };
  200. /**
  201. * Initilize Default Resources.<p>
  202. * Calls callBackFunction when finished loading.
  203. * @memberOf gEngine.DefaultResources
  204. * @param {Function} callBackFunction to call after loading completes
  205. * @returns {void}
  206. */
  207. var initialize = function (callBackFunction) {
  208. // unlit shader: UnlitFS
  209. gEngine.TextFileLoader.loadTextFile(kUnlitFS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  210. // unlit texture shader:
  211. gEngine.TextFileLoader.loadTextFile(kUnlitTextureFS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  212. // constant color shader: SimpleVS, and SimpleFS
  213. gEngine.TextFileLoader.loadTextFile(kSimpleVS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  214. gEngine.TextFileLoader.loadTextFile(kSimpleFS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  215. // texture shader:
  216. gEngine.TextFileLoader.loadTextFile(kTextureVS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  217. gEngine.TextFileLoader.loadTextFile(kTextureFS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  218. // Line Shader:
  219. gEngine.TextFileLoader.loadTextFile(kLineFS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  220. // Light Shader
  221. gEngine.TextFileLoader.loadTextFile(kLightFS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  222. // Illumination Shader
  223. gEngine.TextFileLoader.loadTextFile(kIllumFS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  224. // Shadow caster and receiver shaders
  225. gEngine.TextFileLoader.loadTextFile(kShadowReceiverFS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  226. gEngine.TextFileLoader.loadTextFile(kShadowCasterFS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  227. // particle shader
  228. gEngine.TextFileLoader.loadTextFile(kParticleFS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  229. // load default font
  230. gEngine.Fonts.loadFont(kDefaultFont);
  231. // load particles
  232. gEngine.Textures.loadTexture(kParticleTexture);
  233. gEngine.Textures.loadTexture(fireParticleTexture);
  234. gEngine.Textures.loadTexture(smokeParticleTexture);
  235. gEngine.Textures.loadTexture(snowParticleTexture);
  236. gEngine.Textures.loadTexture(tinyParticleTexture);
  237. gEngine.Textures.loadTexture(dustParticleTexture);
  238. gEngine.Textures.loadTexture(dust2ParticleTexture);
  239. gEngine.Textures.loadTexture(flareParticleTexture);
  240. gEngine.Textures.loadTexture(shockParticleTexture);
  241. gEngine.Textures.loadTexture(shock2ParticleTexture);
  242. gEngine.Textures.loadTexture(targetParticleTexture);
  243. gEngine.Textures.loadTexture(bubbleParticleTexture);
  244. gEngine.Textures.loadTexture(sparkleParticleTexture);
  245. gEngine.Textures.loadTexture(UIRadarButtonTexture);
  246. gEngine.Textures.loadTexture(UIDropDownArrow);
  247. gEngine.Textures.loadTexture(BarStencil);
  248. gEngine.Textures.loadTexture(VBarStencil);
  249. gEngine.Textures.loadTexture(SliderHandle);
  250. gEngine.Textures.loadTexture(VSliderHandle);
  251. gEngine.Textures.loadTexture(SwitchToggleHandle);
  252. gEngine.Textures.loadTexture(SwitchToggleStencil);
  253. gEngine.Textures.loadTexture(ButtonStencil);
  254. gEngine.ResourceMap.setLoadCompleteCallback(function s() {_createShaders(callBackFunction); });
  255. };
  256. /**
  257. * unload all resources
  258. * @memberOf gEngine.DefaultResources
  259. * @returns {void}
  260. */
  261. var cleanUp = function () {
  262. mUnlitShader.cleanUp();
  263. mUnlitTextureShader.cleanUp();
  264. mUnlitSpriteShader.cleanUp();
  265. mConstColorShader.cleanUp();
  266. mTextureShader.cleanUp();
  267. mSpriteShader.cleanUp();
  268. mLineShader.cleanUp();
  269. mLightShader.cleanUp();
  270. mIllumShader.cleanUp();
  271. mShadowReceiverShader.cleanUp();
  272. mShadowCasterShader.cleanUp();
  273. mParticleShader.cleanUp();
  274. // unlit shader:
  275. gEngine.TextFileLoader.unloadTextFile(kUnlitFS);
  276. // unlit texture shader:
  277. gEngine.TextFileLoader.unloadTextFile(kUnlitTextureFS);
  278. // constant color shader:
  279. gEngine.TextFileLoader.unloadTextFile(kSimpleVS);
  280. gEngine.TextFileLoader.unloadTextFile(kSimpleFS);
  281. // texture shader:
  282. gEngine.TextFileLoader.unloadTextFile(kTextureVS);
  283. gEngine.TextFileLoader.unloadTextFile(kTextureFS);
  284. // Line Shader:
  285. gEngine.TextFileLoader.unloadTextFile(kLineFS);
  286. // Light Shader
  287. gEngine.TextFileLoader.unloadTextFile(kLightFS);
  288. // Illumination Shader
  289. gEngine.TextFileLoader.unloadTextFile(kIllumFS);
  290. // Shadow shaders
  291. gEngine.TextFileLoader.unloadTextFile(kShadowReceiverFS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  292. gEngine.TextFileLoader.unloadTextFile(kShadowCasterFS, gEngine.TextFileLoader.eTextFileType.eTextFile);
  293. // particle shader
  294. gEngine.TextFileLoader.unloadTextFile(kParticleFS);
  295. // default font
  296. gEngine.Fonts.unloadFont(kDefaultFont);
  297. // particles
  298. gEngine.Textures.unloadTexture(kParticleTexture);
  299. gEngine.Textures.unloadTexture(fireParticleTexture);
  300. gEngine.Textures.unloadTexture(smokeParticleTexture);
  301. gEngine.Textures.unloadTexture(snowParticleTexture);
  302. gEngine.Textures.unloadTexture(tinyParticleTexture);
  303. gEngine.Textures.unloadTexture(dustParticleTexture);
  304. gEngine.Textures.unloadTexture(dust2ParticleTexture);
  305. gEngine.Textures.unloadTexture(flareParticleTexture);
  306. gEngine.Textures.unloadTexture(shockParticleTexture);
  307. gEngine.Textures.unloadTexture(shock2ParticleTexture);
  308. gEngine.Textures.unloadTexture(targetParticleTexture);
  309. gEngine.Textures.unloadTexture(bubbleParticleTexture);
  310. gEngine.Textures.unloadTexture(sparkleParticleTexture);
  311. gEngine.Textures.unloadTexture(UIRadarButtonTexture);
  312. gEngine.Textures.unloadTexture(UIDropDownArrow);
  313. gEngine.Textures.unloadTexture(BarStencil);
  314. gEngine.Textures.unloadTexture(VBarStencil);
  315. gEngine.Textures.unloadTexture(SliderHandle);
  316. gEngine.Textures.unloadTexture(VSliderHandle);
  317. gEngine.Textures.unloadTexture(SwitchToggleHandle);
  318. gEngine.Textures.unloadTexture(SwitchToggleStencil);
  319. gEngine.Textures.unloadTexture(ButtonStencil);
  320. };
  321. // Public interface for this object. Anything not in here will
  322. // not be accessable.
  323. var mPublic = {
  324. initialize: initialize,
  325. getUnlitShader: getUnlitShader,
  326. getUnlitTextureShader: getUnlitTextureShader,
  327. getUnlitSpriteShader: getUnlitSpriteShader,
  328. getConstColorShader: getConstColorShader,
  329. getTextureShader: getTextureShader,
  330. getSpriteShader: getSpriteShader,
  331. getLineShader: getLineShader,
  332. getLightShader: getLightShader,
  333. getIllumShader: getIllumShader,
  334. getShadowReceiverShader: getShadowReceiverShader,
  335. getShadowCasterShader: getShadowCasterShader,
  336. getParticleShader: getParticleShader,
  337. getDefaultFont: getDefaultFont,
  338. getGlobalAmbientColor: getGlobalAmbientColor,
  339. setGlobalAmbientColor: setGlobalAmbientColor,
  340. getGlobalAmbientIntensity: getGlobalAmbientIntensity,
  341. setGlobalAmbientIntensity: setGlobalAmbientIntensity,
  342. cleanUp: cleanUp
  343. };
  344. return mPublic;
  345. }());