Skip to content

Commit

Permalink
Merge pull request #177 from GrimoireGL/feat/0.33.0
Browse files Browse the repository at this point in the history
feat: add mouse click and dblclick event on mesh
  • Loading branch information
kyasbal authored Dec 2, 2017
2 parents 9f4ff83 + 279f732 commit c67db3a
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 13 deletions.
23 changes: 13 additions & 10 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
12 changes: 12 additions & 0 deletions src/Components/RenderStage/RenderHitareaComponent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions src/Components/RenderStage/RenderStageBase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 = "";
Expand Down
20 changes: 18 additions & 2 deletions src/Components/RendererComponent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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);
Expand All @@ -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 {
Expand All @@ -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 {
Expand Down Expand Up @@ -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],
Expand All @@ -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),
};
}
}

0 comments on commit c67db3a

Please sign in to comment.