Newer
Older
CactusServer / src / main / java / cactusServer / entities / Object.java
y-ota on 14 Jun 2018 3 KB Depth3Dを作成
package cactusServer.entities;

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 Depth3D depth;
	private Angle angle;
	private Attribute attribute;
	private String model;
	
	@JSONHint(ignore = true)
	public static final int UNIQUE_ID_LENGTH = 12;

	private Object() {
		// JSONDecode時の呼び出し用
	}
	
	public Object(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, Angle angle,
			 Attribute attribute, String model) {
		setPosition(position);
		setVelocity(velocity);
		setAngularVelocity(angularVelocity);
		setAngle(angle);
		setAttribute(attribute);
		setModel(model);
	}
	
	public Object(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, Angle angle,
			Depth3D depth, Attribute attribute, String model) {
		setPosition(position);
		setVelocity(velocity);
		setAngularVelocity(angularVelocity);
		setAngle(angle);
		setDepth(depth);
		setAttribute(attribute);
		setModel(model);
	}

	public Position3D getPosition() {
		return position;
	}

	public Velocity3D getVelocity() {
		return velocity;
	}

	public AngularVelocity3D getAngularVelocity() {
		return angularVelocity;
	}

	public Angle getAngle() {
		return angle;
	}

	public Depth3D getDepth() {
		return depth;
	}

	public Attribute getAttribute() {
		return attribute;
	}

	public String 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(Angle angle) {
		this.angle = angle;
	}
	
	public void setDepth(Depth3D depth) {
		this.depth = depth;
	}

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

	public void setModel(String model) {
		this.model = model;
	}

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

		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 boolean isPerDesion(Object another) {
		Position3D ap = another.getPosition();
		if (position.getX() == ap.getX() && position.getY() == ap.getY() && position.getZ() == ap.getZ()) {
			return true;
		}
		return false;
	}

	public boolean isPerDesion(Player another) {
		Position3D ap = another.getPosition();
		if (position.getX() == ap.getX() && position.getY() == ap.getY() && position.getZ() == ap.getZ()) {
			return true;
		}
		return false;
	}
}