Location renderers: add animation option

This commit is contained in:
Emux 2018-07-01 12:01:38 +03:00
parent df67f81156
commit cfb12dd3f1
No known key found for this signature in database
GPG Key ID: 64ED9980896038C3
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);