Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/scripts/events.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export * from '../../src/events/CursorManager';
export * from '../../src/events/Default';
export * from '../../src/events/InteractionDefault';
export * from '../../src/events/DragAndDropManager';
export * from '../../src/events/Events';
export * from '../../src/events/EventsDispatcher';
Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
</head>

<body>
<script type="module" src="example.ts"></script>
<script type="module" src="./examples/example.ts"></script>
</body>

</html>
2 changes: 1 addition & 1 deletion src/cameras/OrthographicCameraAuto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export class OrthographicCameraAuto extends OrthographicCamera {
* @param near Camera frustum near plane. Default `0.1`.
* @param far Camera frustum far plane. Default `2000`.
*/
constructor(size = 2, fixedWidth = true, near?: number, far?: number) {
constructor(size = 2, fixedWidth = true, near = 0.1, far = 2000) {
super(-1, 1, 1, -1, near, far);
this._size = size;
this._fixedWidth = fixedWidth;
Expand Down
2 changes: 1 addition & 1 deletion src/cameras/PerspectiveCameraAuto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export class PerspectiveCameraAuto extends PerspectiveCamera {
* @param near Camera frustum near plane distance. Default `0.1`.
* @param far Camera frustum far plane distance. Default `2000`.
*/
constructor(fov?: number, near?: number, far?: number) {
constructor(fov = 50, near = 0.1, far = 2000) {
super(fov, undefined, near, far);

this.on('viewportresize', (e) => {
Expand Down
11 changes: 0 additions & 11 deletions src/events/Default.ts

This file was deleted.

14 changes: 14 additions & 0 deletions src/events/InteractionDefault.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
interface InteractionDefault {
/** The default setting for 'focusable' for newly created Object3Ds. Default: true. */
focusable: boolean;
/** The default setting for 'draggable' for newly created Object3Ds. Default: false. */
draggable: boolean;
/** The default setting for 'interceptByRaycaster' for newly created Object3Ds. Default: true. */
interceptByRaycaster: boolean;
}

export const INTERACTION_DEFAULT: InteractionDefault = {
focusable: true,
draggable: false,
interceptByRaycaster: true
};
10 changes: 2 additions & 8 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ import { MaterialExtPrototype } from './patch/Material.js';
import { Object3DExtPrototype } from './patch/Object3D.js';
import { SceneExtPrototype } from './patch/Scene.js';

export * from '@three.ez/asset-manager';
export * as Asset from '@three.ez/asset-manager';

export * from './binding/Binding.js';
export * from './cameras/OrthographicCameraAuto.js';
export * from './cameras/PerspectiveCameraAuto.js';
export * from './core/Main.js';
export * from './events/CursorManager.js';
export * from './events/Default.js';
export * from './events/InteractionDefault.js';
export * from './events/DragAndDropManager.js';
export * from './events/Events.js';
export * from './events/EventsDispatcher.js';
Expand All @@ -18,12 +18,8 @@ export * from './events/InteractionManager.js';
export * from './events/InteractionEventsQueue.js';
export * from './events/MiscEventsManager.js';
export * from './events/RaycasterManager.js';
export * from './instancedMesh/EventsDispatcherInstanced.js';
export * from './instancedMesh/InstancedMesh2.js';
export * from './instancedMesh/InstancedMeshEntity.js';
export * from './patch/Euler.js';
export * from './patch/Material.js';
export * from './patch/Matrix4.js';
export * from './patch/Object3D.js';
export * from './patch/Quaternion.js';
export * from './patch/Scene.js';
Expand All @@ -37,11 +33,9 @@ export * from './tweening/Easings.js';
export * from './tweening/Tween.js';
export * from './tweening/TweenManager.js';
export * from './tweening/RunningTween.js';
export * from './utils/IntersectionUtils.js';
export * from './utils/Query.js';
export * from './utils/Stats.js';
export * from './utils/Utils.js';
export * from './utils/VectorUtils.js';

declare module 'three' {
export interface Material extends MaterialExtPrototype { }
Expand Down
120 changes: 60 additions & 60 deletions src/instancedMesh/EventsDispatcherInstanced.ts
Original file line number Diff line number Diff line change
@@ -1,70 +1,70 @@
import { EventExt, InteractionEvents, MiscEvents } from '../events/Events.js';
import { InstancedMeshEntity } from './InstancedMeshEntity.js';
// import { EventExt, InteractionEvents, MiscEvents } from '../events/Events.js';
// import { InstancedMeshEntity } from './InstancedMeshEntity.js';

export type InstancedMiscUpdateEvents = Omit<MiscEvents, 'viewportresize' | 'beforeanimate' | 'afteranimate'>;
export type InstancedInteractionEvents = Omit<InteractionEvents<InstancedMeshEntity, InstancedMeshEntity>,
'focusout' | 'focusin' | 'pointerleave' | 'pointerenter' | 'dragenter' | 'dragover' | 'dragleave' | 'drop'>;
export type InstancedEvents = InstancedMiscUpdateEvents & InstancedInteractionEvents;
// export type InstancedMiscUpdateEvents = Omit<MiscEvents, 'viewportresize' | 'beforeanimate' | 'afteranimate'>;
// export type InstancedInteractionEvents = Omit<InteractionEvents<InstancedMeshEntity, InstancedMeshEntity>,
// 'focusout' | 'focusin' | 'pointerleave' | 'pointerenter' | 'dragenter' | 'dragover' | 'dragleave' | 'drop'>;
// export type InstancedEvents = InstancedMiscUpdateEvents & InstancedInteractionEvents;

/** @internal */
export class EventsDispatcherInstanced {
public parent: InstancedMeshEntity;
public listeners: { [K in keyof InstancedEvents]?: ((event?: InstancedEvents[K]) => void)[] } = {};
// /** @internal */
// export class EventsDispatcherInstanced {
// public parent: InstancedMeshEntity;
// public listeners: { [K in keyof InstancedEvents]?: ((event?: InstancedEvents[K]) => void)[] } = {};

constructor(parent: InstancedMeshEntity) {
this.parent = parent;
}
// constructor(parent: InstancedMeshEntity) {
// this.parent = parent;
// }

public add<K extends keyof InstancedEvents>(type: K, listener: (event: InstancedEvents[K]) => void): (event: InstancedEvents[K]) => void {
if (!this.listeners[type]) {
this.listeners[type] = [];
}
if (this.listeners[type].indexOf(listener) < 0) {
this.listeners[type].push(listener);
}
return listener;
}
// public add<K extends keyof InstancedEvents>(type: K, listener: (event: InstancedEvents[K]) => void): (event: InstancedEvents[K]) => void {
// if (!this.listeners[type]) {
// this.listeners[type] = [];
// }
// if (this.listeners[type].indexOf(listener) < 0) {
// this.listeners[type].push(listener);
// }
// return listener;
// }

public has<K extends keyof InstancedEvents>(type: K, listener: (event: InstancedEvents[K]) => void): boolean {
return this.listeners[type]?.indexOf(listener) > -1;
}
// public has<K extends keyof InstancedEvents>(type: K, listener: (event: InstancedEvents[K]) => void): boolean {
// return this.listeners[type]?.indexOf(listener) > -1;
// }

public remove<K extends keyof InstancedEvents>(type: K, listener: (event: InstancedEvents[K]) => void): void {
const index = this.listeners[type]?.indexOf(listener) ?? -1;
if (index > -1) {
this.listeners[type].splice(index, 1);
}
}
// public remove<K extends keyof InstancedEvents>(type: K, listener: (event: InstancedEvents[K]) => void): void {
// const index = this.listeners[type]?.indexOf(listener) ?? -1;
// if (index > -1) {
// this.listeners[type].splice(index, 1);
// }
// }

public dispatchDOM<K extends keyof InstancedInteractionEvents>(type: K, event: InstancedInteractionEvents[K]): void {
event._bubbles = false;
event._stoppedImmediatePropagation = false;
event._defaultPrevented = false;
event._type = type;
event._target = this.parent;
this.executeDOM(type, event);
}
// public dispatchDOM<K extends keyof InstancedInteractionEvents>(type: K, event: InstancedInteractionEvents[K]): void {
// event._bubbles = false;
// event._stoppedImmediatePropagation = false;
// event._defaultPrevented = false;
// event._type = type;
// event._target = this.parent;
// this.executeDOM(type, event);
// }

private executeDOM<K extends keyof InstancedInteractionEvents>(type: K, event: InstancedInteractionEvents[K]): void {
if (!this.listeners[type]) return;
const target = event.currentTarget = this.parent;
for (const callback of this.listeners[type]) {
if (event._stoppedImmediatePropagation) break;
callback.call(target, event as any);
}
}
// private executeDOM<K extends keyof InstancedInteractionEvents>(type: K, event: InstancedInteractionEvents[K]): void {
// if (!this.listeners[type]) return;
// const target = event.currentTarget = this.parent;
// for (const callback of this.listeners[type]) {
// if (event._stoppedImmediatePropagation) break;
// callback.call(target, event as any);
// }
// }

public dispatch<T extends keyof InstancedMiscUpdateEvents>(type: T, event?: InstancedMiscUpdateEvents[T]): void {
if (!this.listeners[type]) return;
for (const callback of this.listeners[type]) {
callback.call(this.parent, event as any);
}
}
// public dispatch<T extends keyof InstancedMiscUpdateEvents>(type: T, event?: InstancedMiscUpdateEvents[T]): void {
// if (!this.listeners[type]) return;
// for (const callback of this.listeners[type]) {
// callback.call(this.parent, event as any);
// }
// }

public dispatchManual<T extends keyof InstancedEvents>(type: T, event?: InstancedEvents[T]): void {
if ((event as EventExt<InstancedMeshEntity>)?.cancelable !== undefined) {
return this.dispatchDOM(type as keyof InstancedInteractionEvents, event as any);
}
this.dispatch(type as keyof InstancedMiscUpdateEvents, event as any);
}
}
// public dispatchManual<T extends keyof InstancedEvents>(type: T, event?: InstancedEvents[T]): void {
// if ((event as EventExt<InstancedMeshEntity>)?.cancelable !== undefined) {
// return this.dispatchDOM(type as keyof InstancedInteractionEvents, event as any);
// }
// this.dispatch(type as keyof InstancedMiscUpdateEvents, event as any);
// }
// }
Loading
Loading