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(); Depth3D ad = another.getDepth(); if (position.getX() <= ap.getX() && position.getX() + depth.getDepthX() >= ap.getX() + ad.getDepthX()) { if (position.getY() <= ap.getY() && position.getY() + depth.getDepthY() >= ap.getY() + ad.getDepthY()) { if (position.getZ() <= ap.getZ() && position.getZ() + depth.getDepthZ() >= ap.getZ() + ad.getDepthZ()) { return true; } } } return false; } // public boolean isPerDesion(Player another) { // Position3D ap = another.getPosition(); // Depth3D ad = another.getDepth(); // if (position.getX() <= ap.getX() && position.getX() + depth.getDepthX() >= ap.getX() + ad.getDepthX()) { // if (position.getY() <= ap.getY() && position.getY() + depth.getDepthY() >= ap.getY() + ad.getDepthY()) { // if (position.getZ() <= ap.getZ() && position.getZ() + depth.getDepthZ() >= ap.getZ() + ad.getDepthZ()) { // return true; // } // } // } // return false; // } }