phaser3-rex-plugins
Version:
96 lines (75 loc) • 2.8 kB
JavaScript
import OverlapSizer from '../../../overlapsizer/OverlapSizer.js';
import HPaletteCanvas from './HPaletteCanvas.js';
import RoundRectangle from '../../../roundrectangle/RoundRectangle.js';
import { LocalToWorld } from './Transform.js';
class HPalette extends OverlapSizer {
constructor(scene, config) {
if (config === undefined) {
config = {};
}
super(scene, config);
var orientation = (config.width != null) ? 1 : 0;
var paletteCanvas = (new HPaletteCanvas(scene))
.setOrientation(orientation)
scene.add.existing(paletteCanvas);
this.type = 'rexColorPicker.HPalette';
paletteCanvas
.setInteractive()
.on('pointerdown', this.onPaletteCanvasPointerDown, this)
.on('pointermove', this.onPaletteCanvasPointerDown, this)
var marker = new RoundRectangle(scene, { strokeColor: 0xffffff, strokeWidth: 2 });
scene.add.existing(marker);
this
.add(
paletteCanvas,
{ key: 'paletteCanvas', expand: true }
)
.add(
marker,
{ key: 'marker', expand: false }
)
}
resize(width, height) {
if ((this.width === width) && (this.height === height)) {
return this;
}
super.resize(width, height);
var size = Math.min(width, height);
this.childrenMap.marker.setSize(size, size);
return this;
}
onPaletteCanvasPointerDown(pointer, localX, localY, event) {
if (!pointer.isDown) {
return;
}
var paletteCanvas = this.childrenMap.paletteCanvas;
var color = paletteCanvas.getColor(localX, localY);
this.setMarkerPosition(color);
this.emit('input', color);
}
get color() {
return this.childrenMap.paletteCanvas.color;
}
setColor(color) {
if (this.color === color) {
return this;
}
var paletteCanvas = this.childrenMap.paletteCanvas;
paletteCanvas.setColor(color);
this.setMarkerPosition(color);
return this;
}
setMarkerPosition(color) {
var paletteCanvas = this.childrenMap.paletteCanvas;
var marker = this.childrenMap.marker;
var localXY = paletteCanvas.colorToLocalPosition(color, true);
LocalToWorld(paletteCanvas, localXY.x, localXY.y, marker);
this.resetChildPositionState(marker);
return this;
}
getHue(localX, localY) {
var paletteCanvas = this.childrenMap.paletteCanvas;
return paletteCanvas.getHue(localX, localY);
}
}
export default HPalette;