diff --git a/src/core/graphics/webgl/GraphicsRenderer.js b/src/core/graphics/webgl/GraphicsRenderer.js index b3010bd..10b3563 100644 --- a/src/core/graphics/webgl/GraphicsRenderer.js +++ b/src/core/graphics/webgl/GraphicsRenderer.js @@ -24,7 +24,7 @@ GraphicsRenderer.prototype.constructor = GraphicsRenderer; module.exports = GraphicsRenderer; -WebGLRenderer.registerObjectRenderer('graphics', GraphicsRenderer); +WebGLRenderer.registerPlugin('graphics', GraphicsRenderer); /** * Destroys this renderer. diff --git a/src/core/graphics/webgl/GraphicsRenderer.js b/src/core/graphics/webgl/GraphicsRenderer.js index b3010bd..10b3563 100644 --- a/src/core/graphics/webgl/GraphicsRenderer.js +++ b/src/core/graphics/webgl/GraphicsRenderer.js @@ -24,7 +24,7 @@ GraphicsRenderer.prototype.constructor = GraphicsRenderer; module.exports = GraphicsRenderer; -WebGLRenderer.registerObjectRenderer('graphics', GraphicsRenderer); +WebGLRenderer.registerPlugin('graphics', GraphicsRenderer); /** * Destroys this renderer. diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 6c1fb7d..d45e894 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -204,14 +204,14 @@ */ this.blendModeManager = new WebGLBlendModeManager(this); - + this.blendModes = null; this._boundUpdateTexture = this.updateTexture.bind(this); this._boundDestroyTexture = this.destroyTexture.bind(this); - + // time init the context.. this._initContext(); @@ -228,27 +228,16 @@ */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1}; - /** - * Manages the renderer of specific objects. - * - * @member {object} - */ - this.objectRenderers = {}; - - this.currentRenderer = new ObjectRenderer(); - - // create an instance of each registered object renderer - for (var o in WebGLRenderer._objectRenderers) { - this.objectRenderers[o] = new (WebGLRenderer._objectRenderers[o])(this); - } - - + this.initPlugins(); } // constructor WebGLRenderer.prototype.constructor = WebGLRenderer; module.exports = WebGLRenderer; +WebGLRenderer.glContextId = 0; + +utils.pluginTarget.mixin(WebGLRenderer); utils.eventTarget.mixin(WebGLRenderer.prototype); Object.defineProperties(WebGLRenderer.prototype, { @@ -297,7 +286,7 @@ gl.enable(gl.BLEND); this.renderTarget = new RenderTarget(this.gl, this.width, this.height, null, true); - + this.emit('context', gl); @@ -611,11 +600,3 @@ this.blendModes[CONST.blendModes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; } }; - -WebGLRenderer.glContextId = 0; -WebGLRenderer._objectRenderers = {}; - -WebGLRenderer.registerObjectRenderer = function (name, ctor) { - WebGLRenderer._objectRenderers[name] = ctor; -}; - diff --git a/src/core/graphics/webgl/GraphicsRenderer.js b/src/core/graphics/webgl/GraphicsRenderer.js index b3010bd..10b3563 100644 --- a/src/core/graphics/webgl/GraphicsRenderer.js +++ b/src/core/graphics/webgl/GraphicsRenderer.js @@ -24,7 +24,7 @@ GraphicsRenderer.prototype.constructor = GraphicsRenderer; module.exports = GraphicsRenderer; -WebGLRenderer.registerObjectRenderer('graphics', GraphicsRenderer); +WebGLRenderer.registerPlugin('graphics', GraphicsRenderer); /** * Destroys this renderer. diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 6c1fb7d..d45e894 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -204,14 +204,14 @@ */ this.blendModeManager = new WebGLBlendModeManager(this); - + this.blendModes = null; this._boundUpdateTexture = this.updateTexture.bind(this); this._boundDestroyTexture = this.destroyTexture.bind(this); - + // time init the context.. this._initContext(); @@ -228,27 +228,16 @@ */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1}; - /** - * Manages the renderer of specific objects. - * - * @member {object} - */ - this.objectRenderers = {}; - - this.currentRenderer = new ObjectRenderer(); - - // create an instance of each registered object renderer - for (var o in WebGLRenderer._objectRenderers) { - this.objectRenderers[o] = new (WebGLRenderer._objectRenderers[o])(this); - } - - + this.initPlugins(); } // constructor WebGLRenderer.prototype.constructor = WebGLRenderer; module.exports = WebGLRenderer; +WebGLRenderer.glContextId = 0; + +utils.pluginTarget.mixin(WebGLRenderer); utils.eventTarget.mixin(WebGLRenderer.prototype); Object.defineProperties(WebGLRenderer.prototype, { @@ -297,7 +286,7 @@ gl.enable(gl.BLEND); this.renderTarget = new RenderTarget(this.gl, this.width, this.height, null, true); - + this.emit('context', gl); @@ -611,11 +600,3 @@ this.blendModes[CONST.blendModes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; } }; - -WebGLRenderer.glContextId = 0; -WebGLRenderer._objectRenderers = {}; - -WebGLRenderer.registerObjectRenderer = function (name, ctor) { - WebGLRenderer._objectRenderers[name] = ctor; -}; - diff --git a/src/core/sprites/webgl/SpriteRenderer.js b/src/core/sprites/webgl/SpriteRenderer.js index 2c52116..0ee4dfe 100644 --- a/src/core/sprites/webgl/SpriteRenderer.js +++ b/src/core/sprites/webgl/SpriteRenderer.js @@ -177,7 +177,7 @@ SpriteRenderer.prototype.constructor = SpriteRenderer; module.exports = SpriteRenderer; -WebGLRenderer.registerObjectRenderer('sprite', SpriteRenderer); +WebGLRenderer.registerPlugin('sprite', SpriteRenderer); /** * Sets up the renderer context and necessary buffers. diff --git a/src/core/graphics/webgl/GraphicsRenderer.js b/src/core/graphics/webgl/GraphicsRenderer.js index b3010bd..10b3563 100644 --- a/src/core/graphics/webgl/GraphicsRenderer.js +++ b/src/core/graphics/webgl/GraphicsRenderer.js @@ -24,7 +24,7 @@ GraphicsRenderer.prototype.constructor = GraphicsRenderer; module.exports = GraphicsRenderer; -WebGLRenderer.registerObjectRenderer('graphics', GraphicsRenderer); +WebGLRenderer.registerPlugin('graphics', GraphicsRenderer); /** * Destroys this renderer. diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 6c1fb7d..d45e894 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -204,14 +204,14 @@ */ this.blendModeManager = new WebGLBlendModeManager(this); - + this.blendModes = null; this._boundUpdateTexture = this.updateTexture.bind(this); this._boundDestroyTexture = this.destroyTexture.bind(this); - + // time init the context.. this._initContext(); @@ -228,27 +228,16 @@ */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1}; - /** - * Manages the renderer of specific objects. - * - * @member {object} - */ - this.objectRenderers = {}; - - this.currentRenderer = new ObjectRenderer(); - - // create an instance of each registered object renderer - for (var o in WebGLRenderer._objectRenderers) { - this.objectRenderers[o] = new (WebGLRenderer._objectRenderers[o])(this); - } - - + this.initPlugins(); } // constructor WebGLRenderer.prototype.constructor = WebGLRenderer; module.exports = WebGLRenderer; +WebGLRenderer.glContextId = 0; + +utils.pluginTarget.mixin(WebGLRenderer); utils.eventTarget.mixin(WebGLRenderer.prototype); Object.defineProperties(WebGLRenderer.prototype, { @@ -297,7 +286,7 @@ gl.enable(gl.BLEND); this.renderTarget = new RenderTarget(this.gl, this.width, this.height, null, true); - + this.emit('context', gl); @@ -611,11 +600,3 @@ this.blendModes[CONST.blendModes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; } }; - -WebGLRenderer.glContextId = 0; -WebGLRenderer._objectRenderers = {}; - -WebGLRenderer.registerObjectRenderer = function (name, ctor) { - WebGLRenderer._objectRenderers[name] = ctor; -}; - diff --git a/src/core/sprites/webgl/SpriteRenderer.js b/src/core/sprites/webgl/SpriteRenderer.js index 2c52116..0ee4dfe 100644 --- a/src/core/sprites/webgl/SpriteRenderer.js +++ b/src/core/sprites/webgl/SpriteRenderer.js @@ -177,7 +177,7 @@ SpriteRenderer.prototype.constructor = SpriteRenderer; module.exports = SpriteRenderer; -WebGLRenderer.registerObjectRenderer('sprite', SpriteRenderer); +WebGLRenderer.registerPlugin('sprite', SpriteRenderer); /** * Sets up the renderer context and necessary buffers. diff --git a/src/core/utils/index.js b/src/core/utils/index.js index bfae7ae..1d451c0 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -7,9 +7,10 @@ _uid: 0, _saidHello: false, - PolyK: require('./PolyK'), - EventData: require('./EventData'), - eventTarget: require('./eventTarget'), + PolyK: require('./PolyK'), + EventData: require('./EventData'), + eventTarget: require('./eventTarget'), + pluginTarget: require('./pluginTarget'), /** * Gets the next uuid diff --git a/src/core/graphics/webgl/GraphicsRenderer.js b/src/core/graphics/webgl/GraphicsRenderer.js index b3010bd..10b3563 100644 --- a/src/core/graphics/webgl/GraphicsRenderer.js +++ b/src/core/graphics/webgl/GraphicsRenderer.js @@ -24,7 +24,7 @@ GraphicsRenderer.prototype.constructor = GraphicsRenderer; module.exports = GraphicsRenderer; -WebGLRenderer.registerObjectRenderer('graphics', GraphicsRenderer); +WebGLRenderer.registerPlugin('graphics', GraphicsRenderer); /** * Destroys this renderer. diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 6c1fb7d..d45e894 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -204,14 +204,14 @@ */ this.blendModeManager = new WebGLBlendModeManager(this); - + this.blendModes = null; this._boundUpdateTexture = this.updateTexture.bind(this); this._boundDestroyTexture = this.destroyTexture.bind(this); - + // time init the context.. this._initContext(); @@ -228,27 +228,16 @@ */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1}; - /** - * Manages the renderer of specific objects. - * - * @member {object} - */ - this.objectRenderers = {}; - - this.currentRenderer = new ObjectRenderer(); - - // create an instance of each registered object renderer - for (var o in WebGLRenderer._objectRenderers) { - this.objectRenderers[o] = new (WebGLRenderer._objectRenderers[o])(this); - } - - + this.initPlugins(); } // constructor WebGLRenderer.prototype.constructor = WebGLRenderer; module.exports = WebGLRenderer; +WebGLRenderer.glContextId = 0; + +utils.pluginTarget.mixin(WebGLRenderer); utils.eventTarget.mixin(WebGLRenderer.prototype); Object.defineProperties(WebGLRenderer.prototype, { @@ -297,7 +286,7 @@ gl.enable(gl.BLEND); this.renderTarget = new RenderTarget(this.gl, this.width, this.height, null, true); - + this.emit('context', gl); @@ -611,11 +600,3 @@ this.blendModes[CONST.blendModes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; } }; - -WebGLRenderer.glContextId = 0; -WebGLRenderer._objectRenderers = {}; - -WebGLRenderer.registerObjectRenderer = function (name, ctor) { - WebGLRenderer._objectRenderers[name] = ctor; -}; - diff --git a/src/core/sprites/webgl/SpriteRenderer.js b/src/core/sprites/webgl/SpriteRenderer.js index 2c52116..0ee4dfe 100644 --- a/src/core/sprites/webgl/SpriteRenderer.js +++ b/src/core/sprites/webgl/SpriteRenderer.js @@ -177,7 +177,7 @@ SpriteRenderer.prototype.constructor = SpriteRenderer; module.exports = SpriteRenderer; -WebGLRenderer.registerObjectRenderer('sprite', SpriteRenderer); +WebGLRenderer.registerPlugin('sprite', SpriteRenderer); /** * Sets up the renderer context and necessary buffers. diff --git a/src/core/utils/index.js b/src/core/utils/index.js index bfae7ae..1d451c0 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -7,9 +7,10 @@ _uid: 0, _saidHello: false, - PolyK: require('./PolyK'), - EventData: require('./EventData'), - eventTarget: require('./eventTarget'), + PolyK: require('./PolyK'), + EventData: require('./EventData'), + eventTarget: require('./eventTarget'), + pluginTarget: require('./pluginTarget'), /** * Gets the next uuid diff --git a/src/core/utils/pluginTarget.js b/src/core/utils/pluginTarget.js new file mode 100644 index 0000000..ef272e1 --- /dev/null +++ b/src/core/utils/pluginTarget.js @@ -0,0 +1,28 @@ +/** + * Mixins functionality to make an object have "plugins". + * + * @mixin + * @namespace PIXI + * @param obj {object} The object to mix into. + * @example + * function MyObject() {} + * + * pluginTarget.mixin(MyObject); + */ +function pluginTarget(obj) { + obj.__plugins = {}; + + obj.registerPlugin = function (pluginName, ctor) { + obj.__plugins[pluginName] = ctor; + }; + + obj.prototype.initPlugins = function () { + this.plugins = {}; + + for (var o in obj.__plugins) { + this.plugins[o] = new (obj.__plugins[o])(this); + } + }; +} + +module.exports = pluginTarget;