Location renderers: add animation option

This commit is contained in:
Emux
2018-07-01 12:01:38 +03:00
parent df67f81156
commit cfb12dd3f1
2 changed files with 20 additions and 2 deletions

View File

@@ -64,6 +64,7 @@ public class LocationRenderer extends LayerRenderer {
private boolean mLocationIsVisible;
private boolean mRunAnim;
private boolean mAnimate = true;
private long mAnimStart;
private Callback mCallback;
@@ -88,6 +89,10 @@ public class LocationRenderer extends LayerRenderer {
mColors[3] = a;
}
public void setAnimate(boolean animate) {
mAnimate = animate;
}
public void setCallback(Callback callback) {
mCallback = callback;
}
@@ -122,6 +127,8 @@ public class LocationRenderer extends LayerRenderer {
mRunAnim = enable;
if (!enable)
return;
if (!mAnimate)
return;
final Runnable action = new Runnable() {
private long lastRun;
@@ -130,6 +137,8 @@ public class LocationRenderer extends LayerRenderer {
public void run() {
if (!mRunAnim)
return;
if (!mAnimate)
return;
long diff = System.currentTimeMillis() - lastRun;
mMap.postDelayed(this, Math.min(ANIM_RATE, diff));
@@ -242,7 +251,7 @@ public class LocationRenderer extends LayerRenderer {
v.mvp.multiplyMM(v.viewproj, v.mvp);
v.mvp.setAsUniform(hMatrixPosition);
if (!viewShed) {
if (!viewShed && mAnimate) {
float phase = Math.abs(animPhase() - 0.5f) * 2;
//phase = Interpolation.fade.apply(phase);
phase = Interpolation.swing.apply(phase);

View File

@@ -96,6 +96,7 @@ public class LocationTextureRenderer extends BucketRenderer {
private final Point screenPoint = new Point();
private final Box boundingBox = new Box();
private boolean runAnim;
private boolean animate = true;
private long animStart;
private boolean update;
private float bearing;
@@ -115,6 +116,10 @@ public class LocationTextureRenderer extends BucketRenderer {
this.accuracyColor = color;
}
public void setAnimate(boolean animate) {
this.animate = animate;
}
public void setBillboard(boolean billboard) {
this.billboard = billboard;
}
@@ -147,6 +152,8 @@ public class LocationTextureRenderer extends BucketRenderer {
runAnim = enable;
if (!enable)
return;
if (!animate)
return;
final Runnable action = new Runnable() {
private long lastRun;
@@ -155,6 +162,8 @@ public class LocationTextureRenderer extends BucketRenderer {
public void run() {
if (!runAnim)
return;
if (!animate)
return;
long diff = System.currentTimeMillis() - lastRun;
map.postDelayed(this, Math.min(ANIM_RATE, diff));
@@ -311,7 +320,7 @@ public class LocationTextureRenderer extends BucketRenderer {
v.mvp.multiplyMM(v.viewproj, v.mvp);
v.mvp.setAsUniform(hMatrixPosition);
if (!viewShed) {
if (!viewShed && animate) {
float phase = Math.abs(animPhase() - 0.5f) * 2;
//phase = Interpolation.fade.apply(phase);
phase = Interpolation.swing.apply(phase);