package min3d.vos;
import java.nio.FloatBuffer;
import android.util.Log;
import min3d.Min3d;
import min3d.Utils;
import min3d.interfaces.IDirtyParent;
/**
* 'Managed' version of Number3d VO
*/
public class Number3dManaged extends AbstractDirtyManaged
{
private float _x;
private float _y;
private float _z;
private FloatBuffer _fb;
public Number3dManaged(IDirtyParent $parent)
{
super($parent);
_x = 0;
_y = 0;
_z = 0;
_fb = this.toFloatBuffer();
setDirtyFlag();
}
public Number3dManaged(float $x, float $y, float $z, IDirtyParent $parent)
{
super($parent);
_x = $x;
_y = $y;
_z = $z;
_fb = this.toFloatBuffer();
setDirtyFlag();
}
public float getX() {
return _x;
}
public void setX(float x) {
_x = x;
setDirtyFlag();
}
public float getY() {
return _y;
}
public void setY(float y) {
_y = y;
setDirtyFlag();
}
public float getZ() {
return _z;
}
public void setZ(float z) {
_z = z;
setDirtyFlag();
}
public void setAll(float $x, float $y, float $z)
{
_x = $x;
_y = $y;
_z = $z;
setDirtyFlag();
}
public void setAllFrom(Number3d $n)
{
_x = $n.x;
_y = $n.y;
_z = $n.z;
setDirtyFlag();
}
public void setAllFrom(Number3dManaged $n)
{
_x = $n.getX();
_y = $n.getY();
_z = $n.getZ();
setDirtyFlag();
}
public Number3d toNumber3d()
{
return new Number3d(_x,_y,_z);
}
@Override
public String toString()
{
return _x + "," + _y + "," + _z;
}
/**
* Convenience method
*/
public FloatBuffer toFloatBuffer()
{
return Utils.makeFloatBuffer3(_x, _y, _z);
}
/**
* Convenience method
*/
public void toFloatBuffer(FloatBuffer $floatBuffer)
{
$floatBuffer.position(0);
$floatBuffer.put(_x);
$floatBuffer.put(_y);
$floatBuffer.put(_z);
$floatBuffer.position(0);
}
/**
* Used by Renderer
*/
public FloatBuffer floatBuffer()
{
return _fb;
}
/**
* Used by Renderer
*/
public void commitToFloatBuffer()
{
toFloatBuffer(_fb);
}
}