Skip to content

Commit ab906ab

Browse files
committed
all build errors fixed
1 parent 986875c commit ab906ab

File tree

1 file changed

+65
-33
lines changed

1 file changed

+65
-33
lines changed

mode/libraries/ar/src/processing/ar/ARGraphics.java

Lines changed: 65 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,11 @@ public boolean trackableSelected(int i, int mx, int my) {
277277
Trackable tracki = trackObjects.get(i);
278278
for (HitResult hit : surfar.frame.hitTest(mx, my)) {
279279
Trackable trackable = hit.getTrackable();
280-
if (tracki.equals(trackable) && trackable.isPoseInPolygon(hit.getHitPose())) {
281-
return true;
280+
if (trackable instanceof Plane) {
281+
Plane plane = (Plane)trackable;
282+
if (tracki.equals(plane) && plane.isPoseInPolygon(hit.getHitPose())) {
283+
return true;
284+
}
282285
}
283286
}
284287
return false;
@@ -288,8 +291,11 @@ public boolean trackableSelected(int i, int mx, int my) {
288291
protected HitResult getHitResult(int mx, int my) {
289292
for (HitResult hit : surfar.frame.hitTest(mx, my)) {
290293
Trackable trackable = hit.getTrackable();
291-
if (trackObjects.contains(trackable) && trackable.isPoseInPolygon(hit.getHitPose())) {
292-
return hit;
294+
if (trackable instanceof Plane) {
295+
Plane plane = (Plane)trackable;
296+
if (trackObjects.contains(plane) && plane.isPoseInPolygon(hit.getHitPose())) {
297+
return hit;
298+
}
293299
}
294300
}
295301
return null;
@@ -309,27 +315,41 @@ public float[] getTrackablePolygon(int i) {
309315

310316
public float[] getTrackablePolygon(int i, float[] points) {
311317
Trackable track = trackObjects.get(i);
312-
FloatBuffer buffer = track.getPolygon();
313-
buffer.rewind();
314-
if (points == null || points.length < buffer.capacity()) {
315-
points = new float[buffer.capacity()];
318+
if (track instanceof Plane) {
319+
Plane plane = (Plane)track;
320+
FloatBuffer buffer = plane.getPolygon();
321+
buffer.rewind();
322+
if (points == null || points.length < buffer.capacity()) {
323+
points = new float[buffer.capacity()];
324+
}
325+
buffer.get(points, 0, buffer.capacity());
316326
}
317-
buffer.get(points, 0, buffer.capacity());
318327
return points;
319328
}
320329

321330

322331
public float getTrackableExtentX(int i) {
323332
Trackable track = trackObjects.get(i);
324-
return track.getExtentX();
333+
if (track instanceof Plane) {
334+
return ((Plane)track).getExtentX();
335+
} else if (track instanceof AugmentedImage) {
336+
return ((AugmentedImage)track).getExtentX();
337+
}
338+
return -1;
325339
}
326340

327341

328342
public float getTrackableExtentZ(int i) {
329343
Trackable track = trackObjects.get(i);
330-
return track.getExtentZ();
344+
if (track instanceof Plane) {
345+
return ((Plane)track).getExtentZ();
346+
} else if (track instanceof AugmentedImage) {
347+
return ((AugmentedImage)track).getExtentZ();
348+
}
349+
return -1;
331350
}
332351

352+
333353
public PMatrix3D getTrackableMatrix(int i) {
334354
return getTrackableMatrix(i, null);
335355
}
@@ -353,24 +373,31 @@ public PMatrix3D getTrackableMatrix(int i, PMatrix3D target) {
353373

354374
public int createAnchor(int i, float x, float y, float z) {
355375
Trackable track = trackObjects.get(i);
356-
Pose trackPose = track.getCenterPose();
357-
pointIn[0] = x;
358-
pointIn[1] = y;
359-
pointIn[2] = z;
360-
trackPose.transformPoint(pointIn, 0, pointOut, 0);
361-
Pose anchorPose = Pose.makeTranslation(pointOut);
362-
Anchor anchor = track.createAnchor(anchorPose);
363-
anchors.put(++lastAnchorId, anchor);
364-
return lastAnchorId;
376+
if (track instanceof Plane) {
377+
Plane plane = (Plane)track;
378+
Pose trackPose = plane.getCenterPose();
379+
pointIn[0] = x;
380+
pointIn[1] = y;
381+
pointIn[2] = z;
382+
trackPose.transformPoint(pointIn, 0, pointOut, 0);
383+
Pose anchorPose = Pose.makeTranslation(pointOut);
384+
Anchor anchor = plane.createAnchor(anchorPose);
385+
anchors.put(++lastAnchorId, anchor);
386+
return lastAnchorId;
387+
}
388+
return -1;
365389
}
366390

367391

368392
public int createAnchor(int mx, int my) {
369393
for (HitResult hit : surfar.frame.hitTest(mx, my)) {
370394
Trackable trackable = hit.getTrackable();
371-
if (trackObjects.contains(trackable) && trackable.isPoseInPolygon(hit.getHitPose())) {
372-
return createAnchor(hit);
373-
}
395+
if (trackable instanceof Plane) {
396+
Plane plane = (Plane)trackable;
397+
if (trackObjects.contains(plane) && plane.isPoseInPolygon(hit.getHitPose())) {
398+
return createAnchor(hit);
399+
}
400+
}
374401
}
375402
return 0;
376403
}
@@ -466,16 +493,18 @@ protected void updateTrackables() {
466493
addNewObject(image);
467494
}
468495

469-
470496
// Remove stopped and subsummed trackables
471497
for (int i = trackObjects.size() - 1; i >= 0; i--) {
472498
Trackable track = trackObjects.get(i);
473-
if (track.getTrackingState() == TrackingState.STOPPED || track.getSubsumedBy() != null) {
474-
trackObjects.remove(i);
475-
trackMatrices.remove(track);
476-
int pid = trackIds.remove(track);
477-
trackIdx.remove(pid);
478-
for (ARTracker t: trackers) t.remove(pid);
499+
if (track instanceof Plane) {
500+
Plane plane = (Plane)track;
501+
if (plane.getTrackingState() == TrackingState.STOPPED || plane.getSubsumedBy() != null) {
502+
trackObjects.remove(i);
503+
trackMatrices.remove(plane);
504+
int pid = trackIds.remove(plane);
505+
trackIdx.remove(pid);
506+
for (ARTracker t: trackers) t.remove(pid);
507+
}
479508
}
480509
}
481510

@@ -491,7 +520,8 @@ protected void updateTrackables() {
491520
}
492521

493522
protected void addNewObject(Trackable track) {
494-
if (track.getSubsumedBy() != null) return;
523+
boolean isPlane = track instanceof Plane;
524+
if (isPlane && ((Plane)track).getSubsumedBy() != null) return;
495525
float[] mat;
496526
if (trackMatrices.containsKey(track)) {
497527
mat = trackMatrices.get(track);
@@ -502,8 +532,10 @@ protected void addNewObject(Trackable track) {
502532
trackIds.put(track, ++lastTrackableId);
503533
newObjects.add(track);
504534
}
505-
Pose pose = track.getCenterPose();
506-
pose.toMatrix(mat, 0);
535+
if (isPlane) {
536+
Pose pose = ((Plane)track).getCenterPose();
537+
pose.toMatrix(mat, 0);
538+
}
507539
}
508540

509541

0 commit comments

Comments
 (0)