/*
* Copyright (C) 2014 BeyondAR
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* This code is based on Yasir.Ali <ali.yasir0@gmail.com> work. More on
* https://github.com/yasiralijaved/GenRadar
*/
package com.beyondar.android.plugin.radar;
import android.graphics.Color;
import android.location.Location;
import com.beyondar.android.opengl.renderable.Renderable;
import com.beyondar.android.opengl.texture.Texture;
import com.beyondar.android.plugin.GeoObjectPlugin;
import com.beyondar.android.util.math.geom.Point3;
import com.beyondar.android.world.BeyondarObject;
import com.beyondar.android.world.GeoObject;
public class RadarPointPlugin implements GeoObjectPlugin {
public static final int DEFAULT_COLOR = Color.BLUE;
public static final float DEFAULT_RADIUS_DP = 1.5f;
private RadarWorldPlugin mRadarWorldPlugin;
private GeoObject mGeoObject;
private boolean mAttached;
private float mX;
private float mY;
private float mRaduis, mRaduisPixels;
private int mColor;
private float[] mDistanceArray = new float[1];
public RadarPointPlugin(RadarWorldPlugin radarWorldPlugin, BeyondarObject beyondarObject) {
mRadarWorldPlugin = radarWorldPlugin;
mColor = DEFAULT_COLOR;
mRaduis = DEFAULT_RADIUS_DP;
mRaduisPixels = -1;
setBeyondarObject(beyondarObject);
}
public void setBeyondarObject(BeyondarObject beyondarObject) {
if (beyondarObject instanceof GeoObject) {
mGeoObject = (GeoObject) beyondarObject;
}
mAttached = true;
}
@Override
public void onAngleChanged(Point3 angle) {
}
@Override
public void onPositionChanged(Point3 position) {
}
@Override
public void onTextureChanged(Texture texture) {
}
@Override
public void onRenderableChanged(Renderable openglObject) {
}
@Override
public void onFaceToCameraChanged(boolean faceToCamera) {
}
@Override
public void onVisibilityChanged(boolean visible) {
}
@Override
public void onNameChanged(String name) {
}
@Override
public void onImageUriChanged(String uri) {
}
@Override
public void onDetached() {
mAttached = false;
}
@Override
public boolean isAttached() {
return mAttached;
}
@Override
public void onGeoPositionChanged(double latitude, double longitude, double altitude) {
updateDistanceWithThisLocation();
}
@Override
public GeoObject getGeoObject() {
return mGeoObject;
}
private void updateDistanceWithThisLocation() {
Location.distanceBetween(mRadarWorldPlugin.getWorld().getLatitude(), mRadarWorldPlugin.getWorld()
.getLongitude(), mGeoObject.getLatitude(), mGeoObject.getLongitude(), mDistanceArray);
mDistanceArray[0] = mDistanceArray[0] * 0.05f;
}
public int getColor() {
return mColor;
}
public void setColor(int color) {
mColor = color;
}
public float getX() {
return mX;
}
public void setX(float x) {
mX = x;
}
public float getY() {
return mY;
}
public void setY(float y) {
mY = y;
}
public float getRaduis() {
return mRaduis;
}
public void setRaduis(float raduis) {
mRaduis = raduis;
mRaduisPixels = -1;
}
float getRaduisPixels() {
return mRaduisPixels;
}
void setRaduisPixels(float raduis) {
mRaduisPixels = raduis;
}
@Override
public BeyondarObject getbeyondarObject() {
return getGeoObject();
}
}