package cactusServer.entities; import org.ntlab.radishforandroidstudio.framework.model3D.Object3D; import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; import cactusServer.models.BulletModelManager; import net.arnx.jsonic.JSONHint; public class Bullet extends Entity3D { private String playerID; private Position3D position; private Quaternion3D angle; private boolean isAlive = true; private Bullet() { // JSONエンコード時の呼び出し用 } public Bullet(String playerID, Position3D position, Quaternion3D angle) { Object3D body = BulletModelManager.getInstance().getBulletModel(0).createObject(); // モデルIDは仮に0を指定 setPlaceable(body); setPlayerID(playerID); setPosition(position); setAngle(angle); } public String getPlayerID() { return playerID; } public Position3D getPosition() { return position; } public Quaternion3D getAngle() { return angle; } @JSONHint(ignore = true) public boolean isAlive() { return isAlive; } public void setPlayerID(String playerID) { this.playerID = playerID; } public void setPosition(Position3D position) { this.position = position; if (this.placeable != null) { ((Object3D)this.placeable.getBody()).setPosition(position); } } public void setAngle(Quaternion3D angle) { this.angle = angle; if (this.placeable != null) { ((Object3D)this.placeable.getBody()).apply(angle, false); } } @JSONHint(ignore = true) public void setAlive(boolean isAlive) { this.isAlive = isAlive; } public void update(Position3D position, Quaternion3D angle) { setPosition(position); setAngle(angle); } }