package com.fdangelo.circleworld.universeview.objects;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.fdangelo.circleworld.universeengine.objects.IUniverseObjectListener;
import com.fdangelo.circleworld.universeengine.objects.UniverseObject;
import com.fdangelo.circleworld.universeengine.tilemap.TilemapCircle;
import com.fdangelo.circleworld.universeview.UniverseView;
import com.fdangelo.circleworld.universeview.tilemap.TilemapCircleView;
public class UniverseObjectView extends Actor implements IUniverseObjectListener {
protected UniverseObject universeObject;
protected UniverseView universeView;
protected TilemapCircleView parentView;
protected boolean visible = true;
public final UniverseObject getUniverseObject() {
return universeObject;
}
public final TilemapCircleView getParentView() {
return parentView;
}
public final UniverseView getUniverseView() {
return universeView;
}
public UniverseObjectView() {
}
public final void init(final UniverseObject universeObject, final UniverseView universeView) {
this.universeView = universeView;
this.universeObject = universeObject;
universeObject.setListener(this);
parentView = universeView.getPlanetView(universeObject.getParent());
setSize(universeObject.getSizeX(), universeObject.getSizeY());
updatePosition();
}
@Override
public void onUniverseObjectUpdated(final float deltaTime) {
updatePosition();
}
@Override
public void onParentChanged(final TilemapCircle parent) {
parentView = universeView.getPlanetView(universeObject.getParent());
updatePosition();
}
protected final void updatePosition() {
if (universeObject.getVisible()) {
if (!visible) {
visible = true;
setVisible(true);
}
setPosition(universeObject.getPositionX(), universeObject.getPositionY());
setScale(universeObject.getScale());
setRotation(universeObject.getRotation() * MathUtils.radiansToDegrees);
} else {
if (visible) {
visible = false;
setVisible(false);
}
}
}
/*
* public virtual void OnDrawGizmosSelected() { OnDrawGizmos(); } public
* virtual void OnDrawGizmos() { if (universeObject != null) { Gizmos.color
* = Color.red; Gizmos.DrawLine(transform.position, transform.position +
* transform.up * universeObject.Size.y); Gizmos.color = Color.blue;
* Gizmos.DrawLine(transform.position + transform.up * universeObject.Size.y
* * 0.5f, transform.position + transform.up * universeObject.Size.y * 0.5f
* + transform.right * universeObject.Size.x * 0.5f); } }
*/
}