- Add 6 face handles for single-axis scaling (in addition to 8 corner handles for uniform scaling) - Implement single-axis scaling for face handles vs uniform scaling for corners - Add automatic handle position updates when target mesh moves or rotates - Track mesh transform changes using quaternions for accurate rotation detection - Update handles in real-time during scaling to match new bounding box - Add FACE_POSITIONS constant array to enums.ts - Fix handle sizing to use consistent size calculation for all handles 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import {Engine, Scene} from "@babylonjs/core";
|
|
import log from "loglevel";
|
|
|
|
|
|
export class DefaultScene {
|
|
private static _Scene: Scene;
|
|
private static _UtilityScene: Scene;
|
|
public static get UtilityScene(): Scene {
|
|
return this._UtilityScene;
|
|
}
|
|
|
|
public static get Scene(): Scene {
|
|
if (!DefaultScene._Scene) {
|
|
const logger = log.getLogger('DefaultScene');
|
|
logger.error('default scene not yet created');
|
|
if (Engine.LastCreatedScene) {
|
|
logger.warn('using last created scene, this may not be what you want, proceed with caution');
|
|
DefaultScene._Scene = Engine.LastCreatedScene;
|
|
return DefaultScene._Scene;
|
|
} else {
|
|
return null;
|
|
}
|
|
} else {
|
|
return DefaultScene._Scene;
|
|
}
|
|
}
|
|
|
|
public static set Scene(scene: Scene) {
|
|
const logger = log.getLogger('DefaultScene');
|
|
if (DefaultScene._Scene) {
|
|
logger.error('default scene already created, disposing and recreating');
|
|
if (DefaultScene._Scene.isDisposed) {
|
|
logger.warn('default scene is already disposed');
|
|
} else {
|
|
DefaultScene._Scene.dispose();
|
|
logger.info('default scene disposed');
|
|
}
|
|
|
|
DefaultScene._Scene = null;
|
|
}
|
|
DefaultScene._Scene = scene;
|
|
logger.info('default scene created');
|
|
}
|
|
} |