Skip to content

Commit

Permalink
refactored proximity check
Browse files Browse the repository at this point in the history
  • Loading branch information
mountler committed Feb 24, 2025
1 parent f039a00 commit 5926f3b
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import { ActionEvent } from "@babylonjs/core";

export default interface ILearningElementController {
picked( overrideIsInteractable?: boolean): void;
interface IAccessibilityControls {
accessibilityPicked(): void;
}

export default interface ILearningElementController
extends IAccessibilityControls {
picked(event?: ActionEvent): void;
pointerOver(event?: ActionEvent): void;
pointerOut(event?: ActionEvent): void;
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,25 @@ export default class LearningElementController
}
}

@bind
picked(): void {
if (this.viewModel.isInteractable.Value) {
this.onPicked();
}
}

@bind
accessibilityPicked(): void {
this.onPicked();
}

@bind
picked(overrideIsInteractable?: boolean): void {
if (this.viewModel.isInteractable.Value || overrideIsInteractable) {
this.bottomTooltipPresenter.hideAll();
if (this.viewModel.type === LearningElementTypes.adaptivity) {
this.startLoadAdaptivityElementUseCase();
} else {
this.startLoadElementUseCase();
}
private onPicked() {
this.bottomTooltipPresenter.hideAll();
if (this.viewModel.type === LearningElementTypes.adaptivity) {
this.startLoadAdaptivityElementUseCase();
} else {
this.startLoadElementUseCase();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,32 +89,34 @@ export default class LearningElementView {
true,
)) as Mesh[];


this.viewModel.modelMeshes[0].accessibilityTag = {
description: this.viewModel.name + " " + this.viewModel.id,
// @ts-ignore
eventHandler:{
eventHandler: {
click: () => {
// this.viewModel.isInteractable.Value = true;
this.controller.picked(true);
this.controller.accessibilityPicked();

// get position on screen
const canvas = this.scenePresenter.Scene.getEngine().getRenderingCanvas();
const position = this.viewModel.modelMeshes[0].getPositionInCameraSpace(this.scenePresenter.Scene.activeCamera!);

const canvas =
this.scenePresenter.Scene.getEngine().getRenderingCanvas();
const position =
this.viewModel.modelMeshes[0].getPositionInCameraSpace(
this.scenePresenter.Scene.activeCamera!,
);

// simulate click on that position
const event = new MouseEvent('click', {
const event = new MouseEvent("click", {
view: window,
bubbles: true,
cancelable: true,
clientX: position.x,
clientY: position.y
clientY: position.y,
});
canvas!.dispatchEvent(event);

}
}
}
},
},
};

// position and rotate model
this.viewModel.modelMeshes[0].position = this.viewModel.position;
Expand Down Expand Up @@ -177,9 +179,8 @@ export default class LearningElementView {

// register interaction callbacks
actionManager.registerAction(
new ExecuteCodeAction(
ActionManager.OnPickTrigger,
(e) => this.controller.picked(false),
new ExecuteCodeAction(ActionManager.OnPickTrigger, (e) =>
this.controller.picked(),
),
);
actionManager.registerAction(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import ILoggerPort from "src/Components/Core/Application/Ports/Interfaces/ILogge
import CORE_TYPES from "~DependencyInjection/CoreTypes";
import { LogLevelTypes } from "src/Components/Core/Domain/Types/LogLevelTypes";
import { Inspector } from "@babylonjs/inspector";
import {HTMLTwinRenderer} from "@babylonjs/accessibility";

/**
* @description This class is responsible for creating the Scene and managing the NavMesh navigation.
Expand Down Expand Up @@ -111,7 +110,6 @@ export default class ScenePresenter implements IScenePresenter {
sceneOptions?: SceneOptions,
): Promise<void> {
await this.sceneDefinition.createScene(engine, sceneOptions);

}

disposeScene(): void {
Expand Down

0 comments on commit 5926f3b

Please sign in to comment.