From dbe23882724f95b143aa8517740ba4feb99ceee2 Mon Sep 17 00:00:00 2001 From: Bill Date: Sat, 12 Nov 2022 20:00:15 -0500 Subject: [PATCH] Add avatar double click event --- src/events/room/RoomEngineObjectEvent.ts | 1 + src/nitro/room/RoomObjectEventHandler.ts | 15 +++++++++++++++ src/nitro/room/object/logic/avatar/AvatarLogic.ts | 5 ++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/events/room/RoomEngineObjectEvent.ts b/src/events/room/RoomEngineObjectEvent.ts index a447f7e4..75ff09b5 100644 --- a/src/events/room/RoomEngineObjectEvent.ts +++ b/src/events/room/RoomEngineObjectEvent.ts @@ -14,6 +14,7 @@ export class RoomEngineObjectEvent extends RoomEngineEvent public static REQUEST_MANIPULATION: string = 'REOE_REQUEST_MANIPULATION'; public static MOUSE_ENTER: string = 'REOE_MOUSE_ENTER'; public static MOUSE_LEAVE: string = 'REOE_MOUSE_LEAVE'; + public static DOUBLE_CLICK: string = 'REOE_DOUBLE_CLICK'; private _objectId: number; private _category: number; diff --git a/src/nitro/room/RoomObjectEventHandler.ts b/src/nitro/room/RoomObjectEventHandler.ts index 1dd2c915..5731eba2 100644 --- a/src/nitro/room/RoomObjectEventHandler.ts +++ b/src/nitro/room/RoomObjectEventHandler.ts @@ -296,6 +296,9 @@ export class RoomObjectEventHandler extends Disposable implements IRoomCanvasMou case RoomObjectMouseEvent.CLICK: this.handleRoomObjectMouseClickEvent(event, roomId); return; + case RoomObjectMouseEvent.DOUBLE_CLICK: + this.handleRoomObjectMouseDoubleClickEvent(event, roomId); + return; case RoomObjectMouseEvent.MOUSE_MOVE: this.handleRoomObjectMouseMoveEvent(event, roomId); return; @@ -491,6 +494,18 @@ export class RoomObjectEventHandler extends Disposable implements IRoomCanvasMou } } + private handleRoomObjectMouseDoubleClickEvent(event: RoomObjectMouseEvent, roomId: number): void + { + const id = event.objectId; + const type = event.objectType; + const category = this._roomEngine.getRoomObjectCategoryForType(type); + + if(this._roomEngine.events) + { + this._roomEngine.events.dispatchEvent(new RoomEngineObjectEvent(RoomEngineObjectEvent.DOUBLE_CLICK, roomId, id, category)); + } + } + private handleRoomObjectMouseMoveEvent(event: RoomObjectMouseEvent, roomId: number): void { if(!event) return; diff --git a/src/nitro/room/object/logic/avatar/AvatarLogic.ts b/src/nitro/room/object/logic/avatar/AvatarLogic.ts index 4a4cab77..66f7c7db 100644 --- a/src/nitro/room/object/logic/avatar/AvatarLogic.ts +++ b/src/nitro/room/object/logic/avatar/AvatarLogic.ts @@ -57,7 +57,7 @@ export class AvatarLogic extends MovingObjectLogic public getEventTypes(): string[] { - const types = [RoomObjectMouseEvent.CLICK, RoomObjectMoveEvent.POSITION_CHANGED, RoomObjectMouseEvent.MOUSE_ENTER, RoomObjectMouseEvent.MOUSE_LEAVE, RoomObjectFurnitureActionEvent.MOUSE_BUTTON, RoomObjectFurnitureActionEvent.MOUSE_ARROW]; + const types = [RoomObjectMouseEvent.CLICK, RoomObjectMouseEvent.DOUBLE_CLICK, RoomObjectMoveEvent.POSITION_CHANGED, RoomObjectMouseEvent.MOUSE_ENTER, RoomObjectMouseEvent.MOUSE_LEAVE, RoomObjectFurnitureActionEvent.MOUSE_BUTTON, RoomObjectFurnitureActionEvent.MOUSE_ARROW]; return this.mergeTypes(super.getEventTypes(), types); } @@ -461,6 +461,9 @@ export class AvatarLogic extends MovingObjectLogic case MouseEventType.MOUSE_CLICK: eventType = RoomObjectMouseEvent.CLICK; break; + case MouseEventType.DOUBLE_CLICK: + eventType = RoomObjectMouseEvent.DOUBLE_CLICK; + break; case MouseEventType.ROLL_OVER: eventType = RoomObjectMouseEvent.MOUSE_ENTER;