diff --git a/web/app/cad/actions/actionSystemPlugin.js b/web/app/cad/actions/actionSystemPlugin.js index f5ea8b41..21e23aae 100644 --- a/web/app/cad/actions/actionSystemPlugin.js +++ b/web/app/cad/actions/actionSystemPlugin.js @@ -1,6 +1,6 @@ import {enableAnonymousActionHint} from './anonHint'; import * as stream from 'lstream'; -import {DEBUG_FLAGS} from '../debugFlags'; +import {LOG_FLAGS} from '../logFlags'; export function activate(context) { @@ -24,7 +24,7 @@ export function activate(context) { return; } if (state.enabled) { - if (DEBUG_FLAGS.ACTION_RUN) { + if (LOG_FLAGS.ACTION_RUN) { console.log("RUNNING ACTION: " + id); } runner(context, data); diff --git a/web/app/cad/debugFlags.js b/web/app/cad/debugFlags.js deleted file mode 100644 index fd72a42e..00000000 --- a/web/app/cad/debugFlags.js +++ /dev/null @@ -1,5 +0,0 @@ -export const DEBUG_FLAGS = { - - ACTION_RUN: false - -}; \ No newline at end of file diff --git a/web/app/cad/debugPlugin.js b/web/app/cad/debugPlugin.js index 7a8663d6..2112e102 100644 --- a/web/app/cad/debugPlugin.js +++ b/web/app/cad/debugPlugin.js @@ -10,7 +10,7 @@ import {toLoops} from '../brep/io/brepLoopsFormat'; import {contributeComponent} from './dom/components/ContributedComponents'; import BrepDebuggerWindow, {BREP_DEBUG_WINDOW_VISIBLE} from '../brep/debug/debugger/BrepDebuggerWindow'; import curveTess from '../brep/geom/impl/curve/curve-tess'; -import {DEBUG_FLAGS} from './debugFlags'; +import {LOG_FLAGS} from './logFlags'; export function activate({bus, services, streams}) { @@ -19,7 +19,7 @@ export function activate({bus, services, streams}) { services.action.registerActions(DebugActions); services.menu.registerMenus([DebugMenuConfig]); services.debug = { - FLAGS: DEBUG_FLAGS + LOG_FLAGS }; streams.ui.controlBars.left.update(actions => [...actions, 'menu.debug']); diff --git a/web/app/cad/logFlags.js b/web/app/cad/logFlags.js new file mode 100644 index 00000000..64f5498e --- /dev/null +++ b/web/app/cad/logFlags.js @@ -0,0 +1,6 @@ +export const LOG_FLAGS = { + + ACTION_RUN: false, + PICK: false + +}; \ No newline at end of file diff --git a/web/app/cad/projectPlugin.js b/web/app/cad/projectPlugin.js index 2334701c..528b3b46 100644 --- a/web/app/cad/projectPlugin.js +++ b/web/app/cad/projectPlugin.js @@ -1,5 +1,6 @@ import {setSketchPrecision} from './sketch/sketchReader'; import {runSandbox} from './sandbox'; +import {LOG_FLAGS} from './logFlags'; export const STORAGE_GLOBAL_PREFIX = 'TCAD'; const STORAGE_PREFIX = `${STORAGE_GLOBAL_PREFIX}.projects.`; @@ -96,11 +97,18 @@ function parseHints(hints) { return [id, params]; } -function processParams({sketchPrecision, sandbox}, context) { - if (sketchPrecision) { +function processParams(params, context) { + if (params.sketchPrecision) { setSketchPrecision(parseInt(sketchPrecision)); } - if (sandbox) { + if (params.sandbox) { setTimeout(() => runSandbox(context)); } + + const DEBUG_FLAGS_PREFIX = "DEBUG."; + Object.keys(params).forEach(key => { + if (key.startsWith(DEBUG_FLAGS_PREFIX)) { + LOG_FLAGS[key.substring(DEBUG_FLAGS_PREFIX.length)] = true + } + }) } diff --git a/web/app/cad/scene/controls/pickControlPlugin.js b/web/app/cad/scene/controls/pickControlPlugin.js index 849a81c7..cb269f3b 100644 --- a/web/app/cad/scene/controls/pickControlPlugin.js +++ b/web/app/cad/scene/controls/pickControlPlugin.js @@ -1,6 +1,7 @@ import * as mask from 'gems/mask' import {getAttribute, setAttribute} from 'scene/objectData'; import {FACE, EDGE, SKETCH_OBJECT, DATUM, SHELL, DATUM_AXIS, LOOP} from '../entites'; +import {LOG_FLAGS} from '../../logFlags'; export const PICK_KIND = { FACE: mask.type(1), @@ -23,7 +24,10 @@ const DEFAULT_SELECTION_MODE = Object.freeze({ export function activate(context) { const {services, streams} = context; - const defaultHandler = (model, event) => { + const defaultHandler = (model, event, rayCastData) => { + if (LOG_FLAGS.PICK) { + printPickInfo(model, rayCastData); + } const type = model.TYPE; let selectionMode = DEFAULT_SELECTION_MODE; let modelId = model.id; @@ -129,7 +133,7 @@ export function activate(context) { if (mask.is(kind, PICK_KIND.SKETCH)) { let sketchObjectV = getAttribute(pickResult.object, SKETCH_OBJECT); if (sketchObjectV) { - return !visitor(sketchObjectV.model, event); + return !visitor(sketchObjectV.model, event, pickResult); } } return false; @@ -138,7 +142,7 @@ export function activate(context) { if (mask.is(kind, PICK_KIND.EDGE)) { let edgeV = getAttribute(pickResult.object, EDGE); if (edgeV) { - return !visitor(edgeV.model, event); + return !visitor(edgeV.model, event, pickResult); } } return false; @@ -147,7 +151,7 @@ export function activate(context) { if (mask.is(kind, PICK_KIND.LOOP) && !!pickResult.face) { let faceV = getAttribute(pickResult.face, LOOP); if (faceV) { - return !visitor(faceV.model, event); + return !visitor(faceV.model, event, pickResult); } } return false; @@ -156,7 +160,7 @@ export function activate(context) { if (mask.is(kind, PICK_KIND.FACE) && !!pickResult.face) { let faceV = getAttribute(pickResult.face, FACE); if (faceV) { - return !visitor(faceV.model, event); + return !visitor(faceV.model, event, pickResult); } } return false; @@ -165,7 +169,7 @@ export function activate(context) { if (mask.is(kind, PICK_KIND.DATUM_AXIS)) { let datumAxisV = getAttribute(pickResult.object, DATUM_AXIS); if (datumAxisV) { - return !visitor(datumAxisV.model, event); + return !visitor(datumAxisV.model, event, pickResult); } } return false; @@ -187,3 +191,10 @@ export function activate(context) { setPickHandler, deselectAll, pick }; } + +function printPickInfo(model, rayCastData) { + console.log("PICKED MODEL:"); + console.dir(model); + console.log("PICK RAYCAST INFO:"); + console.dir(rayCastData); +} \ No newline at end of file