From 6627ba47368eabe8b699bff194589b4cf2ea773c Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Tue, 30 Aug 2016 01:14:12 -0400 Subject: [PATCH] v0.4.2: performance improvements to visibility checking --- .../src/main/java/com/watabou/noosa/Gizmo.java | 2 +- .../main/java/com/watabou/noosa/Visual.java | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/SPD-classes/src/main/java/com/watabou/noosa/Gizmo.java b/SPD-classes/src/main/java/com/watabou/noosa/Gizmo.java index 5b45f1187..32dc14f8b 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/Gizmo.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/Gizmo.java @@ -64,7 +64,7 @@ public class Gizmo { if (camera != null) { return camera; } else if (parent != null) { - return parent.camera(); + return this.camera = parent.camera(); } else { return null; } diff --git a/SPD-classes/src/main/java/com/watabou/noosa/Visual.java b/SPD-classes/src/main/java/com/watabou/noosa/Visual.java index d930fc8bd..70cc7222b 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/Visual.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/Visual.java @@ -240,10 +240,18 @@ public class Visual extends Gizmo { if (c == null || !visible) return false; - float cx = c.scroll.x; - float cy = c.scroll.y; - float w = width(); - float h = height(); - return x + w >= cx && y + h >= cy && x < cx + c.width && y < cy + c.height; + //x coord + if (x > c.scroll.x + c.width) + return false; + else if (!(x >= c.scroll.x || x + width() >= c.scroll.x)) + return false; + + //y coord + if (y > c.scroll.y + c.height) + return false; + else if (!(y >= c.scroll.y || y + height() >= c.scroll.y)) + return false; + + return true; } }