Newer
Older
CactusServer / src / main / java / cactusServer / entities / Object.java
package cactusServer.entities;

import org.ntlab.radishforandroidstudio.framework.model3D.Model3D;
import org.ntlab.radishforandroidstudio.framework.model3D.Object3D;
import org.ntlab.radishforandroidstudio.framework.model3D.Position3D;
import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D;
import org.ntlab.radishforandroidstudio.framework.physics.AngularVelocity3D;
import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D;
import org.ntlab.radishforandroidstudio.java3d.Box;
import org.ntlab.radishforandroidstudio.java3d.Primitive;

import cactusServer.models.ObjectModelManager;
//import framework.model3D.Position3D;
//import framework.physics.AngularVelocity3D;
//import framework.physics.Velocity3D;
import net.arnx.jsonic.JSONHint;

public class Object extends Entity3D {
	private Position3D position;
	private Velocity3D velocity;
	private AngularVelocity3D angularVelocity;
	private Quaternion3D angle;
	private Attribute attribute;
	private Model3D model;
	private Primitive prim;
	private Object3D object;

	@JSONHint(ignore = true)
	public static final int UNIQUE_ID_LENGTH = 12;

	@SuppressWarnings("unused")
	private Object() {
		// JSONDecode時の呼び出し用
	}

	public Object(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, Quaternion3D angle,
			Attribute attribute, int modelID) {
		setPosition(position);
		setVelocity(velocity);
		setAngularVelocity(angularVelocity);
		setAngle(angle);
		setAttribute(attribute);
		setModel(modelID);
		setPrim(new Box());
		setObject(new Object3D("",prim));
		setPlaceable(object);
	}

	public Position3D getPosition() {
		return position;
	}

	public Velocity3D getVelocity() {
		return velocity;
	}

	public AngularVelocity3D getAngularVelocity() {
		return angularVelocity;
	}

	public Quaternion3D getAngle() {
		return angle;
	}

	public Attribute getAttribute() {
		return attribute;
	}

	public Model3D getModel() {
		return model;
	}

	public void setPosition(Position3D position) {
		this.position = position;
	}

	public void setVelocity(Velocity3D velocity) {
		this.velocity = velocity;
	}

	public void setAngularVelocity(AngularVelocity3D angularVelocity) {
		this.angularVelocity = angularVelocity;
	}

	public void setAngle(Quaternion3D angle) {
		this.angle = angle;
	}

	public void setAttribute(Attribute attribute) {
		this.attribute = attribute;
	}

	public void setModel(int modelID) {
		this.model = ObjectModelManager.getInstance().getObject(modelID);
	}

	public static class Attribute {
		private boolean moveable; // 可動
		private double cof; // 摩擦係数

		private Attribute() {

		}

		public Attribute(boolean moveable, double cof) {
			setMoveable(moveable);
			setCof(cof);
		}

		public boolean isMoveable() {
			return moveable;
		}

		public double getCof() {
			return cof;
		}

		public void setMoveable(boolean moveable) {
			this.moveable = moveable;
		}

		public void setCof(double cof) {
			this.cof = cof;
		}
	}

	public Primitive getPrim() {
		return prim;
	}

	public void setPrim(Primitive prim) {
		this.prim = prim;
	}

	public Object3D getObject() {
		return object;
	}

	public void setObject(Object3D object) {
		this.object = object;
	}

}