diff --git a/client/src/components/HitTestView.tsx b/client/src/components/HitTestView.tsx index 9d186f4..43a7b97 100644 --- a/client/src/components/HitTestView.tsx +++ b/client/src/components/HitTestView.tsx @@ -8,8 +8,8 @@ export const HitTestView = observer(function ({ float }: { float: boolean }) { const style: CSSProperties = {}; if (float) { - style.left = state.mousePosition.x; - style.top = state.mousePosition.y; + style.left = 0; //state.mousePosition.x; + style.top = 0; // state.mousePosition.y; style.width = 'auto'; style.height = 'auto'; } @@ -19,7 +19,7 @@ export const HitTestView = observer(function ({ float }: { float: boolean }) {
{
state.hitResults.hits.map((hit) =>
-
+
{yaml.stringify(
{
hit: { ...hit, intersection: { ...hit.intersection, point: formatPoint(hit.intersection.point), object: undefined, triangle: undefined } },
diff --git a/client/src/helpers/circularFrustumIntersect.ts b/client/src/helpers/circularFrustumIntersect.ts
index b1fbbd8..cfdff46 100644
--- a/client/src/helpers/circularFrustumIntersect.ts
+++ b/client/src/helpers/circularFrustumIntersect.ts
@@ -38,6 +38,7 @@ export type BaseHitResult = {
export type FaceHitResult = BaseHitResult & {
kind: 'face',
id?: Id,
+ faceId: Id,
}
export type EdgeHitResult = BaseHitResult & {
@@ -112,9 +113,9 @@ function classifyTriangleHit(
const onBC = u < BARYCENTRIC_EPSILON;
const onCA = v < BARYCENTRIC_EPSILON;
- if (onAB) return { kind: 'edge', index: 0, id: 'none' };
- if (onBC) return { kind: 'edge', index: 1, id: 'none' };
- if (onCA) return { kind: 'edge', index: 2, id: 'none' };
+ if (onAB) return { kind: 'edge', index: 0, id: `${vertexIds?.[0]}-${vertexIds?.[1]}` };
+ if (onBC) return { kind: 'edge', index: 1, id: `${vertexIds?.[1]}-${vertexIds?.[2]}` };
+ if (onCA) return { kind: 'edge', index: 2, id: `${vertexIds?.[2]}-${vertexIds?.[0]}` };
return { kind: 'face' };
}
@@ -383,23 +384,33 @@ export class CircularFrustumIntersection {
const results: HitResult[] = [{
kind: 'face',
- intersection,
id: faceId,
+ faceId,
+ intersection: {
+ ...intersection,
+ triHit: undefined,
+ },
}];
if (intersection.triHit?.kind === 'edge') {
results.unshift({
kind: 'edge',
- intersection,
id: intersection.triHit?.id,
faceId,
+ intersection: {
+ ...intersection,
+ triHit: undefined,
+ },
});
}
if (intersection.triHit?.kind === 'vertex') {
results.unshift({
kind: 'vertex',
- intersection,
id: intersection.triHit?.id,
faceId,
+ intersection: {
+ ...intersection,
+ triHit: undefined,
+ },
});
}
return results;