76 lines
2.8 KiB
JavaScript
76 lines
2.8 KiB
JavaScript
'use strict';
|
|
|
|
var TextureSource = require('../rendering/renderers/shared/texture/sources/TextureSource.js');
|
|
var Texture = require('../rendering/renderers/shared/texture/Texture.js');
|
|
var Container = require('../scene/container/Container.js');
|
|
var Graphics = require('../scene/graphics/shared/Graphics.js');
|
|
var GraphicsContext = require('../scene/graphics/shared/GraphicsContext.js');
|
|
var Mesh = require('../scene/mesh/shared/Mesh.js');
|
|
var Sprite = require('../scene/sprite/Sprite.js');
|
|
var AnimatedSprite = require('../scene/sprite-animated/AnimatedSprite.js');
|
|
var TilingSprite = require('../scene/sprite-tiling/TilingSprite.js');
|
|
var Text = require('../scene/text/Text.js');
|
|
var PrepareBase = require('./PrepareBase.js');
|
|
|
|
"use strict";
|
|
class PrepareQueue extends PrepareBase.PrepareBase {
|
|
/**
|
|
* Resolve the given resource type and return an item for the queue
|
|
* @param source
|
|
* @param queue
|
|
*/
|
|
resolveQueueItem(source, queue) {
|
|
if (source instanceof Container.Container) {
|
|
this.resolveContainerQueueItem(source, queue);
|
|
} else if (source instanceof TextureSource.TextureSource || source instanceof Texture.Texture) {
|
|
queue.push(source.source);
|
|
} else if (source instanceof GraphicsContext.GraphicsContext) {
|
|
queue.push(source);
|
|
}
|
|
return null;
|
|
}
|
|
/**
|
|
* Resolve the given container and return an item for the queue
|
|
* @param container
|
|
* @param queue
|
|
*/
|
|
resolveContainerQueueItem(container, queue) {
|
|
if (container instanceof Sprite.Sprite || container instanceof TilingSprite.TilingSprite || container instanceof Mesh.Mesh) {
|
|
queue.push(container.texture.source);
|
|
} else if (container instanceof Text.Text) {
|
|
queue.push(container);
|
|
} else if (container instanceof Graphics.Graphics) {
|
|
queue.push(container.context);
|
|
} else if (container instanceof AnimatedSprite.AnimatedSprite) {
|
|
container.textures.forEach((textureOrFrame) => {
|
|
if (textureOrFrame.source) {
|
|
queue.push(textureOrFrame.source);
|
|
} else {
|
|
queue.push(textureOrFrame.texture.source);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
/**
|
|
* Resolve the given graphics context and return an item for the queue
|
|
* @param graphicsContext
|
|
*/
|
|
resolveGraphicsContextQueueItem(graphicsContext) {
|
|
this.renderer.graphicsContext.getContextRenderData(graphicsContext);
|
|
const { instructions } = graphicsContext;
|
|
for (const instruction of instructions) {
|
|
if (instruction.action === "texture") {
|
|
const { image } = instruction.data;
|
|
return image.source;
|
|
} else if (instruction.action === "fill") {
|
|
const { texture } = instruction.data.style;
|
|
return texture.source;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|
|
exports.PrepareQueue = PrepareQueue;
|
|
//# sourceMappingURL=PrepareQueue.js.map
|