'use strict'; "use strict"; const blendModeIds = { normal: 0, add: 1, multiply: 2, screen: 3, overlay: 4, erase: 5, "normal-npm": 6, "add-npm": 7, "screen-npm": 8, min: 9, max: 10 }; const BLEND = 0; const OFFSET = 1; const CULLING = 2; const DEPTH_TEST = 3; const WINDING = 4; const DEPTH_MASK = 5; const _State = class _State { constructor() { this.data = 0; this.blendMode = "normal"; this.polygonOffset = 0; this.blend = true; this.depthMask = true; } /** * Activates blending of the computed fragment color values. * @default true */ get blend() { return !!(this.data & 1 << BLEND); } set blend(value) { if (!!(this.data & 1 << BLEND) !== value) { this.data ^= 1 << BLEND; } } /** * Activates adding an offset to depth values of polygon's fragments * @default false */ get offsets() { return !!(this.data & 1 << OFFSET); } set offsets(value) { if (!!(this.data & 1 << OFFSET) !== value) { this.data ^= 1 << OFFSET; } } /** The culling settings for this state none - No culling back - Back face culling front - Front face culling */ set cullMode(value) { if (value === "none") { this.culling = false; return; } this.culling = true; this.clockwiseFrontFace = value === "front"; } get cullMode() { if (!this.culling) { return "none"; } return this.clockwiseFrontFace ? "front" : "back"; } /** * Activates culling of polygons. * @default false */ get culling() { return !!(this.data & 1 << CULLING); } set culling(value) { if (!!(this.data & 1 << CULLING) !== value) { this.data ^= 1 << CULLING; } } /** * Activates depth comparisons and updates to the depth buffer. * @default false */ get depthTest() { return !!(this.data & 1 << DEPTH_TEST); } set depthTest(value) { if (!!(this.data & 1 << DEPTH_TEST) !== value) { this.data ^= 1 << DEPTH_TEST; } } /** * Enables or disables writing to the depth buffer. * @default true */ get depthMask() { return !!(this.data & 1 << DEPTH_MASK); } set depthMask(value) { if (!!(this.data & 1 << DEPTH_MASK) !== value) { this.data ^= 1 << DEPTH_MASK; } } /** * Specifies whether or not front or back-facing polygons can be culled. * @default false */ get clockwiseFrontFace() { return !!(this.data & 1 << WINDING); } set clockwiseFrontFace(value) { if (!!(this.data & 1 << WINDING) !== value) { this.data ^= 1 << WINDING; } } /** * The blend mode to be applied when this state is set. Apply a value of `normal` to reset the blend mode. * Setting this mode to anything other than NO_BLEND will automatically switch blending on. * @default 'normal' */ get blendMode() { return this._blendMode; } set blendMode(value) { this.blend = value !== "none"; this._blendMode = value; this._blendModeId = blendModeIds[value] || 0; } /** * The polygon offset. Setting this property to anything other than 0 will automatically enable polygon offset fill. * @default 0 */ get polygonOffset() { return this._polygonOffset; } set polygonOffset(value) { this.offsets = !!value; this._polygonOffset = value; } toString() { return `[pixi.js/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`; } /** * A quickly getting an instance of a State that is configured for 2d rendering. * @returns a new State with values set for 2d rendering */ static for2d() { const state = new _State(); state.depthTest = false; state.blend = true; return state; } }; _State.default2d = _State.for2d(); let State = _State; exports.State = State; //# sourceMappingURL=State.js.map