diff --git a/package-lock.json b/package-lock.json index 84d8337..f686fe1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3158,12 +3158,6 @@ "through": "2.3.8" } }, - "eventemitter3": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", - "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=", - "dev": true - }, "events": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", @@ -4759,12 +4753,21 @@ "dev": true }, "grimoirejs": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/grimoirejs/-/grimoirejs-0.19.5.tgz", - "integrity": "sha1-LO+XV2e3k6u6v+0cpcNhXFkqRI4=", + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/grimoirejs/-/grimoirejs-0.18.1.tgz", + "integrity": "sha1-9sa6H/FkPBT7Uui3ccgA50mTti4=", "dev": true, "requires": { - "eventemitter3": "2.0.3" + "@types/node": "7.0.48", + "events": "1.1.1" + }, + "dependencies": { + "@types/node": { + "version": "7.0.48", + "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.48.tgz", + "integrity": "sha512-LLlXafM3BD52MH056tHxTXO8JFCnpJJQkdzIU3+m8ew+CXJY/5zIXgDNb4TK/QFvlI8QexLS5tL+sE0Qhegr1w==", + "dev": true + } } }, "grimoirejs-cauldron": { diff --git a/package.json b/package.json index 03d9510..c5dd11a 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "condition-circle": "^1.5.0", "cpx": "^1.5.0", "deflate-js": "^0.2.3", - "grimoirejs": "^0.19.5", + "grimoirejs": "^0.18.1", "grimoirejs-cauldron": "^3.1.8", "grimoirejs-math": "^1.15.1", "http-server": "^0.10.0", diff --git a/src/Components/RenderStage/RenderHitareaComponent.ts b/src/Components/RenderStage/RenderHitareaComponent.ts index 8e5c9ca..49098c3 100644 --- a/src/Components/RenderStage/RenderHitareaComponent.ts +++ b/src/Components/RenderStage/RenderHitareaComponent.ts @@ -125,6 +125,18 @@ export default class RenderHitareaComponent extends SingleBufferRenderStageBase this._lastRenderable = null; } + public $click(v: ViewportMouseEvent): void { + if (this._lastRenderable instanceof Component) { + this._lastRenderable.node.emit("click", this._lastRenderable); + } + } + + public $dblclick(v: ViewportMouseEvent): void { + if (this._lastRenderable instanceof Component) { + this._lastRenderable.node.emit("dblclick", this._lastRenderable); + } + } + /** * Update current mesh index. Emit events if need. * @param index diff --git a/src/Components/RenderStage/RenderStageBase.ts b/src/Components/RenderStage/RenderStageBase.ts index d38a58e..94decc8 100644 --- a/src/Components/RenderStage/RenderStageBase.ts +++ b/src/Components/RenderStage/RenderStageBase.ts @@ -44,6 +44,14 @@ export default class RenderStageBase extends Component { this._assignMouseState(v); } + public $click(v: ViewportMouseEvent): void { + return; + } + + public $dblclick(v: ViewportMouseEvent): void { + return; + } + protected __beforeRender(): boolean { if (GrimoireJS.debug && !!window["spector"]) { let metas = ""; diff --git a/src/Components/RendererComponent.ts b/src/Components/RendererComponent.ts index b039b95..b34ff7d 100644 --- a/src/Components/RendererComponent.ts +++ b/src/Components/RendererComponent.ts @@ -61,6 +61,10 @@ export default class RendererComponent extends Component { private _mouseUpHandler: (e: MouseEvent) => void; + private _mouseClickHandler: (e: MouseEvent) => void; + + private _dblClickHandler: (e: MouseEvent) => void; + private _wasInside = false; public $awake(): void { @@ -155,6 +159,12 @@ export default class RendererComponent extends Component { } this._wasInside = false; }; + this._mouseClickHandler = (e: MouseEvent) => { + this._sendMouseEvent("click", e); + }; + this._dblClickHandler = (e: MouseEvent) => { + this._sendMouseEvent("dblclick", e); + }; this._mouseDownHandler = (e: MouseEvent) => { if (this._isViewportInside(e)) { this._sendMouseEvent("mousedown", e); @@ -173,6 +183,8 @@ export default class RendererComponent extends Component { this._canvas.addEventListener("mouseenter", this._mouseEnterHandler); this._canvas.addEventListener("mousedown", this._mouseDownHandler); this._canvas.addEventListener("mouseup", this._mouseUpHandler); + this._canvas.addEventListener("click", this._mouseClickHandler); + this._canvas.addEventListener("dblclick", this._dblClickHandler); } private _disableMouseHandling(): void { @@ -181,6 +193,8 @@ export default class RendererComponent extends Component { this._canvas.removeEventListener("mouseenter", this._mouseEnterHandler); this._canvas.removeEventListener("mousedown", this._mouseDownHandler); this._canvas.removeEventListener("mouseup", this._mouseUpHandler); + this._canvas.removeEventListener("click", this._mouseClickHandler); + this._canvas.removeEventListener("dblclick", this._dblClickHandler); } private _sendMouseEvent(eventName: string, e: MouseEvent): void { @@ -223,7 +237,8 @@ export default class RendererComponent extends Component { const ro = this._getRelativePosition(e); const r = this._viewportCache.toLocal(ro[0], ro[1]); const n = this._viewportCache.toLocalNormalized(ro[0], ro[1]); - return {...e, + return { + ...e, viewportX: r[0], viewportY: r[1], viewportNormalizedX: n[0], @@ -232,6 +247,7 @@ export default class RendererComponent extends Component { canvasY: ro[1], canvasNormalizedX: ro[0] / ro[2], canvasNormalizedY: ro[1] / ro[3], - inside: this._isViewportInside(e)}; + inside: this._isViewportInside(e), + }; } }