diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index b79c428..652c853 100644 --- a/.idea/caches/build_file_checksums.ser +++ b/.idea/caches/build_file_checksums.ser Binary files differ diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/ObjectsConnection.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/ObjectsConnection.java index e175902..fc6e111 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/ObjectsConnection.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/ObjectsConnection.java @@ -3,7 +3,7 @@ import org.ntlab.radishforandroidstudio.framework.network.HttpAsyncConnection; public class ObjectsConnection extends HttpAsyncConnection { - public ObjectsConnection() { - super("http://nitta-lab-www.is.konan-u.ac.jp:8080/CactusServer/rest/instances/objects"); + public ObjectsConnection(String instanceId) { + super("http://nitta-lab-www.is.konan-u.ac.jp:8080/CactusServer/rest/instances/" + instanceId + "/objects"); } } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Instance.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Instance.java index 564e380..2ec03c6 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Instance.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Instance.java @@ -7,11 +7,11 @@ import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; import org.ntlab.radishforandroidstudio.framework.model3D.Universe; -import org.ntlab.radishforandroidstudio.framework.physics.AngularVelocity3D; import org.ntlab.radishforandroidstudio.framework.physics.Ground; -import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D; import net.arnx.jsonic.JSONHint; +import org.ntlab.radishforandroidstudio.cactusClient.models.Area.Allowed; + /** * インスタンス @@ -27,7 +27,7 @@ private Universe universe; private Ground stage; private HashMap areaMap = new HashMap<>(); - private HashMap objMap = new HashMap<>(); + private HashMap objMap = new HashMap<>(); private HashMap characterMap = new HashMap<>(); @JSONHint(ignore = true) public static final int UNIQUE_ID_LENGTH = 12; @@ -40,7 +40,7 @@ setName(name); setState(Instance.State.AVAILABLE); setStageID(stageID); - // initUniverse(); + initUniverse(); } private void initUniverse() { @@ -78,11 +78,11 @@ } @JSONHint(ignore = true) - public HashMap getObjects() { + public HashMap getObjects() { return objMap; } - public Object getObject(String objId) { + public MovableObject getObject(String objId) { return objMap.get(objId); } @@ -91,10 +91,26 @@ return characterMap; } + public HashMap getCharacters(String accountID) { + if (accountID == null || accountID.isEmpty()) { + return getCharacters(); + } + HashMap returnedMap = new HashMap<>(); + for (String id : characterMap.keySet()) { + Character character = characterMap.get(id); + String[] accountURISplit = character.getAccountURI().split("/"); + if (accountURISplit[accountURISplit.length - 1].equals(accountID)) { + returnedMap.put(id, character); + } + } + return returnedMap; + } + public Character getCharacter(String characterId) { return characterMap.get(characterId); } + public void setName(String name) { this.name = name; } @@ -107,7 +123,7 @@ this.stageID = stageURI; } - public HashMap createArea(String name, Plain[] region, HashSet permissions) { + public HashMap createArea(String name, Plain[] region, HashSet permissions) { String id = RandomStringGenerator.generateUniqueString(Area.UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, areaMap.keySet()); Area area = new Area(name, region, permissions); @@ -117,18 +133,6 @@ return returnedMap; } - public HashMap createObject(Position3D position, Velocity3D velocity, - AngularVelocity3D angularVelocity, Quaternion3D angle, Object.Attribute attribute, String model) { - String id = RandomStringGenerator.generateUniqueString(Object.UNIQUE_ID_LENGTH, - RandomStringGenerator.ALPHA_NUMERIC, objMap.keySet()); - Object object = new Object(position, velocity, angularVelocity, angle, attribute, model); - objMap.put(id, object); - universe.place(object.getPlaceable()); - HashMap returnedMap = new HashMap<>(); - returnedMap.put(id, object); - return returnedMap; - } - public HashMap createCharacter(String instanceId, String accountURI, String name, Position3D position, Quaternion3D angle, int modelID) { String id = RandomStringGenerator.generateUniqueString(Character.UNIQUE_ID_LENGTH, @@ -145,12 +149,6 @@ return this; } - public Character updateCharacter(String characterId, Position3D position, Quaternion3D angle, String modelID) { - Character character = characterMap.get(characterId); - character.update(position, angle, modelID, null); // areaURI(第4引数)の更新は呼び出し先で自動で行われる - return character; - } - public Character destroyCharacter(String characterId) { return characterMap.remove(characterId); } @@ -159,10 +157,11 @@ return areaMap.remove(areaId); } - public Object destroyObject(String objId) { + public MovableObject destroyObject(String objId) { return objMap.remove(objId); } + public static enum State { AVAILABLE, MAINTENANCE; } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/MovableObjectModel.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/MovableObjectModel.java index c4bc8b7..87b5e63 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/MovableObjectModel.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/MovableObjectModel.java @@ -1,10 +1,24 @@ package org.ntlab.radishforandroidstudio.cactusClient.models; +import net.arnx.jsonic.JSON; +import net.arnx.jsonic.TypeReference; + import org.ntlab.radishforandroidstudio.cactusClient.connections.ObjectsConnection; import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModel; import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment; +import org.ntlab.radishforandroidstudio.framework.model3D.ModelFactory; +import org.ntlab.radishforandroidstudio.framework.model3D.Object3D; +import org.ntlab.radishforandroidstudio.framework.model3D.Property3D; import org.ntlab.radishforandroidstudio.framework.model3D.Universe; import org.ntlab.radishforandroidstudio.framework.network.CallBack; +import org.ntlab.radishforandroidstudio.java3d.Appearance; +import org.ntlab.radishforandroidstudio.java3d.Material; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; /** * オブジェクトを管理するモデル @@ -13,28 +27,90 @@ public class MovableObjectModel implements GameBaseModel, CallBack { private Universe universe; private RealTime3DFragment fragment; - private ObjectsConnection objectsConnection; + private ObjectsConnection con; + private int nextConnectRenaimdTime = 0; + private int connectInterval = 300; private String instanceId; + private Map visibleobject = new HashMap<>(); - public MovableObjectModel(RealTime3DFragment fragment, Universe universe) { + public MovableObjectModel(RealTime3DFragment fragment, Universe universe,String instanceId) { this.fragment = fragment; this.universe = universe; + this.setInstanceId(instanceId); } @Override - public void setInstanceId(String id) { - this.instanceId = id; + public void setInstanceId(String instanceId) { + this.instanceId = instanceId; } + + /** + * オブジェクトの状態更新 + * + * @param interval 前回の更新からの時間差 + */ @Override public void update(double interval) { - + nextConnectRenaimdTime -= interval; + if (nextConnectRenaimdTime <= 0) { + nextConnectRenaimdTime = connectInterval; + con = new ObjectsConnection(instanceId); + con.setCallBack(this); + con.doGet(); + } } @Override public void onResponse(String response) { + JSON json = new JSON(); + + + Map o = json.decode(response, new TypeReference>() { + }); + for (Map.Entry entry : o.entrySet()) { + ArrayList properties = new ArrayList<>(); + Object object = entry.getValue(); + + + properties.add(object.getPosition()); + properties.add(object.getAngle()); + + if (!visibleobject.containsKey(entry.getKey())) { + Appearance ap1 = new Appearance(); + Material mat = new Material(); + mat.setDiffuseColor(0.0f, 0.3f, 1.0f); + mat.setAmbientColor(0.0f, 0.0f, 0.0f); + mat.setEmissiveColor(0.0f, 0.0f, 0.0f); + mat.setSpecularColor(0.0f, 0.0f, 0.0f); + mat.setShininess(5.0f); + ap1.setMaterial(mat); + + Object3D objBody = null; + try { + objBody = ModelFactory.loadModel(fragment.getResources(), "cube-binary.stl", ap1).createObject(); + } catch (Exception e) { + e.printStackTrace(); + } + + MovableObject object1 = new MovableObject(objBody); + visibleobject.put(entry.getKey(), object1); + universe.place(entry.getKey(), object1); + universe.place(object1); + + } + universe.apply(entry.getKey(), properties); + } + + for (String key : visibleobject.keySet()) { + if (!o.containsKey(key)) { + universe.displace(visibleobject.get(key)); + } + } + + } } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Object.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Object.java index 5ee62ac..7dfc485 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Object.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Object.java @@ -1,9 +1,13 @@ package org.ntlab.radishforandroidstudio.cactusClient.models; +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 framework.model3D.Position3D; //import framework.physics.AngularVelocity3D; @@ -16,7 +20,9 @@ private AngularVelocity3D angularVelocity; private Quaternion3D angle; private Attribute attribute; - private String model; + private Model3D model; + private Primitive prim; + private Object3D object; @JSONHint(ignore = true) public static final int UNIQUE_ID_LENGTH = 12; @@ -26,24 +32,29 @@ // JSONDecode時の呼び出し用 } - public Object(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, Quaternion3D angle, - Attribute attribute, String model) { + public Object(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, + Quaternion3D angle, Attribute attribute, int modelID) { + setPrim(new Box()); + setObject(new Object3D("", prim)); + setPlaceable(object); setPosition(position); setVelocity(velocity); setAngularVelocity(angularVelocity); setAngle(angle); setAttribute(attribute); - setModel(model); + setModel(modelID); } public Position3D getPosition() { return position; } + @JSONHint(ignore = true) public Velocity3D getVelocity() { return velocity; } + @JSONHint(ignore = true) public AngularVelocity3D getAngularVelocity() { return angularVelocity; } @@ -52,16 +63,19 @@ return angle; } + @JSONHint(ignore = true) public Attribute getAttribute() { return attribute; } - public String getModel() { + @JSONHint(ignore = true) + public Model3D getModel() { return model; } public void setPosition(Position3D position) { this.position = position; +// ((Object3D)(getPlaceable().getBody())).setPosition(position); } public void setVelocity(Velocity3D velocity) { @@ -74,35 +88,41 @@ public void setAngle(Quaternion3D angle) { this.angle = angle; +// ((Object3D) getPlaceable().getBody()).apply(angle, false); } public void setAttribute(Attribute attribute) { this.attribute = attribute; } - public void setModel(String model) { - this.model = model; + public void setModel(int modelID) { + this.model = ObjectModelManager.getInstance().getObject(modelID); } public static class Attribute { - private boolean moveable; // 可動 + private boolean movable; // 可動 private double cof; // 摩擦係数 + @SuppressWarnings("unused") + private Attribute() { + + } + public Attribute(boolean moveable, double cof) { - setMoveable(moveable); + setMovable(moveable); setCof(cof); } - public boolean isMoveable() { - return moveable; + public boolean isMovable() { + return movable; } public double getCof() { return cof; } - public void setMoveable(boolean moveable) { - this.moveable = moveable; + public void setMovable(boolean moveable) { + this.movable = moveable; } public void setCof(double cof) { @@ -110,4 +130,22 @@ } } + @JSONHint(ignore = true) + public Primitive getPrim() { + return prim; + } + + public void setPrim(Primitive prim) { + this.prim = prim; + } + + @JSONHint(ignore = true) + public Object3D getObject() { + return (Object3D) getPlaceable().getBody(); + } + + public void setObject(Object3D object) { + this.object = object; + } + } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/ObjectModelManager.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/ObjectModelManager.java new file mode 100644 index 0000000..1d33074 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/ObjectModelManager.java @@ -0,0 +1,46 @@ +package org.ntlab.radishforandroidstudio.cactusClient.models; + +import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment; +import org.ntlab.radishforandroidstudio.framework.model3D.Model3D; +import org.ntlab.radishforandroidstudio.framework.model3D.ModelFactory; +import org.ntlab.radishforandroidstudio.framework.model3D.ModelFileFormatException; + +import java.io.IOException; +import java.util.HashMap; + +class ObjectModelManager { + + private static ObjectModelManager theInstance = null; + private HashMap model = new HashMap<>(); + private RealTime3DFragment fragment; + + // TODO: 2018/10/23 ObjectModelManagerの記述 + private ObjectModelManager() { + try { + setObject(0, ModelFactory.loadModel(fragment.getResources(),getClass().getResource("cube-binary.stl").getPath())); + setObject(1, ModelFactory.loadModel(fragment.getResources(),getClass().getResource("cube-binary.stl").getPath())); + + } catch (IOException | ModelFileFormatException e) { + e.printStackTrace(); + } + } + + public static ObjectModelManager getInstance() { + if (theInstance == null) { + theInstance = new ObjectModelManager(); + } + return theInstance; + } + + public void setObject(int key, Model3D loadModel) { + model.put(key, loadModel); + } + + public Model3D getObject(int objectID) { + return model.get(objectID); + } + + public int getObjectModelCount() { + return model.size(); + } +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java index 321a9b6..b578b75 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java @@ -1,12 +1,26 @@ package org.ntlab.radishforandroidstudio.cactusClient.models; +import android.app.Activity; +import android.app.Fragment; import android.content.res.Resources; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.view.LayoutInflater; import android.view.MotionEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.Toast; import net.arnx.jsonic.JSON; +import org.ntlab.radishforandroidstudio.R; import org.ntlab.radishforandroidstudio.cactusClient.Cactus; import org.ntlab.radishforandroidstudio.cactusClient.connections.CharacterConnection; +import org.ntlab.radishforandroidstudio.cactusClient.views.PlayerFragment; +import org.ntlab.radishforandroidstudio.framework.RWT.RWTUIFragment; import org.ntlab.radishforandroidstudio.framework.animation.Animation3D; import org.ntlab.radishforandroidstudio.framework.event.PadEvent; import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModel; @@ -75,6 +89,7 @@ updateCamera(); } + public void setPlayerId(String id) { playerId = id; } @@ -83,9 +98,22 @@ Vector3d charaVector3d = actor.getDirection(); charaVector3d.normalize();//キャラの向きを単位ベクトルに camera.setViewPoint(actor.getPosition() - .add(-5.0 * charaVector3d.getX(), charaVector3d.getY() + 5.0, -5.0 * charaVector3d.getZ()));//視点 - camera.setViewLine(new Vector3d(5.0 * charaVector3d.getX(), charaVector3d.getY() - 2.5, 5.0 * charaVector3d.getZ() + touchX));//視線 + .add(5.0 * charaVector3d.getX(), charaVector3d.getY() + 5.0, 5.0 * charaVector3d.getZ()));//視点 + camera.setViewLine(new Vector3d(-5.0 * charaVector3d.getX(), charaVector3d.getY() - 2.5, -5.0 * charaVector3d.getZ()));//視線 } +// +// @Override +// public void onClick(View v) { +// if(actor.isOnGround()) { +// Velocity3D vel = actor.getVelocity(); +// vel.setY(vel.getY() + 15); +// actor.setVelocity(vel); +// System.out.print("Jumpしました。"); +// }else{ +// System.out.print("地に足がついてない。"); +// } +// System.out.print("onClick押されましたよ----------------------------------------------------"); +// } /** * パッドを動かしたときのイベント処理 @@ -99,6 +127,7 @@ charaVector3d.normalize();//キャラの向きを単位ベクトルに MotionEvent motionEvent = event.getMotionEvent(); + if (motionEvent.getAction() == MotionEvent.ACTION_DOWN || motionEvent.getAction() == MotionEvent.ACTION_MOVE) { isTouched = true; touchX = (float) (Math.cos(event.getAngle()) * event.getLength()); @@ -112,19 +141,52 @@ actor.setVelocity(vel); isTouched = false; } + return false; } @Override public void update(double interval) { updateCamera(); + Velocity3D vel = actor.getVelocity(); + Vector3d actorVec = actor.getDirection(); bullets.setPosition(actor.getPosition()); bullets.setAngle(((Solid3D)(actor.getBody())).getQuaternion()); if (isTouched) { - Velocity3D vel = actor.getVelocity(); - vel.setX(touchX); - vel.setY(touchY); + + Vector3d up = new Vector3d(0,1,0); + Vector3d total = new Vector3d(); + Vector3d right = new Vector3d(); + + right.cross(actorVec,up); + + Vector3d touchXVec = right.clone(); + Vector3d touchYVec = actorVec.clone(); + + touchXVec.scale(touchX * -5); + touchYVec.scale(touchY * 5); + + total.add(touchXVec); + total.add(touchYVec); + total.y = vel.getY(); + + +// Button jumpButton = (Button) getActivity().findViewById(R.id.Button); +// jumpButton.setOnClickListener(new View.OnClickListener() { +// public void onClick(View v) { +// if(actor.isOnGround()) total.y = vel.getY() + 15; +// } +// }); + + vel.setVector3d(total); + actor.setVelocity(vel); + + + } else { + vel.setX(0.0); + vel.setZ(0.0); + actor.setVelocity(vel); } @@ -162,6 +224,20 @@ } + public void jump(){ + if(actor.isOnGround()) { + Velocity3D vel = actor.getVelocity(); + vel.setY(vel.getY() + 5); + actor.setVelocity(vel); + System.out.print("Jumpしました。"); + }else{ + System.out.print("地に足がついてない。"); + } + System.out.print("onClick押されましたよ----------------------------------------------------"); + + } + + public void logout() { con = new CharacterConnection(playerId); con.setCallBack(this); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/CharactersFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/CharactersFragment.java index a85f43b..dc07b5c 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/CharactersFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/CharactersFragment.java @@ -31,7 +31,6 @@ import java.util.Map; public class CharactersFragment extends Fragment { - private CharactersFragmentConnection connection; private String instanceId; private Account account; diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java index f8b7615..2f15c67 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java @@ -1,18 +1,25 @@ package org.ntlab.radishforandroidstudio.cactusClient.views; +import android.app.Activity; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; +import android.support.v7.widget.ActivityChooserView; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import org.ntlab.radishforandroidstudio.R; +import org.ntlab.radishforandroidstudio.cactusClient.connections.ObjectsConnection; import org.ntlab.radishforandroidstudio.cactusClient.models.BulletsManager; import org.ntlab.radishforandroidstudio.cactusClient.models.CactusModels; import org.ntlab.radishforandroidstudio.cactusClient.models.MovableObjectModel; +import org.ntlab.radishforandroidstudio.cactusClient.models.Object; import org.ntlab.radishforandroidstudio.cactusClient.models.OtherPlayerCharactersModel; import org.ntlab.radishforandroidstudio.cactusClient.models.OwnPlayer; import org.ntlab.radishforandroidstudio.cactusClient.models.Player; @@ -22,6 +29,7 @@ import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment; import org.ntlab.radishforandroidstudio.framework.model3D.BaseObject3D; import org.ntlab.radishforandroidstudio.framework.physics.Ground; +import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D; import org.ntlab.radishforandroidstudio.java3d.AmbientLight; import org.ntlab.radishforandroidstudio.java3d.Appearance; import org.ntlab.radishforandroidstudio.java3d.Color3f; @@ -29,15 +37,19 @@ import org.ntlab.radishforandroidstudio.java3d.IndexedTriangleArray; import org.ntlab.radishforandroidstudio.java3d.Material; import org.ntlab.radishforandroidstudio.java3d.Point3d; +import org.ntlab.radishforandroidstudio.java3d.Vector3d; import org.ntlab.radishforandroidstudio.java3d.Vector3f; public class PlayerFragment extends RealTime3DFragment { private OvergroundActor pocha; RWTPad pad = null; private OwnPlayer player; + private Object object; private OtherPlayerCharactersModel otherPlayerCharactersModel; private BulletsManager bulletsManager; private MovableObjectModel movableObjectModel; + private ObjectsConnection con; + RWTUIFragment f = null; public PlayerFragment() { // Required empty public constructor @@ -52,16 +64,12 @@ //環境光 AmbientLight amblight = new AmbientLight(new Color3f(1.0f, 1.0f, 1.0f)); - -// amblight.setInfluencingBounds(new BoundingSphere(new Point3d(), 10000.0)); universe.placeLight(amblight); - //平行光源 DirectionalLight dirlight = new DirectionalLight( new Color3f(1.0f, 1.0f, 1.0f), //光の色 new Vector3f(0.0f, -1.0f, -0.5f) //光の方向ベクトル ); -// dirlight.setInfluencingBounds(new BoundingSphere(new Point3d(), 10000.0)); universe.placeLight(dirlight); // 地面の作成 @@ -97,12 +105,18 @@ String instanceId = bundle.getString("instanceId"); player = new OwnPlayer((Player)bundle.getSerializable("player"), getResources(), universe, camera, playerId, instanceId); modelManager.addModel(player); + otherPlayerCharactersModel = new OtherPlayerCharactersModel(this, universe); otherPlayerCharactersModel.setPlayerId(playerId); bulletsManager = new BulletsManager(this.getResources(), universe); bulletsManager.setPlayerId(playerId); modelManager.addModel(otherPlayerCharactersModel); + //objectの通信 + movableObjectModel = new MovableObjectModel(this, universe, instanceId); + modelManager.addModel(movableObjectModel); + + //画面の生成 modelManager.addModel(bulletsManager); modelManager.addModel(player); modelManager.setInstanceId(instanceId); @@ -114,12 +128,21 @@ @Override protected void progress(long interval) { super.progress(interval); + Button jumpButton = (Button) getActivity().findViewById(R.id.Button); + jumpButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + player.jump(); + } + }); + + } + + //sampleUiFragmentからそのまま持ってきた public void initGameWindowView() { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); - RWTUIFragment f = new RWTUIFragment(); f.setListener(this); View uiLayout = parentView.findViewById(R.id.ui_layout); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java index 5082cd9..5e97251 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java @@ -7,18 +7,23 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import org.ntlab.radishforandroidstudio.R; +import org.ntlab.radishforandroidstudio.cactusClient.models.OwnPlayer; import org.ntlab.radishforandroidstudio.cactusClient.views.PlayerFragment; import org.ntlab.radishforandroidstudio.framework.event.PadEvent; import org.ntlab.radishforandroidstudio.framework.listener.PadListener; +import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D; import static android.view.View.*; +import static org.ntlab.radishforandroidstudio.framework.subject.PadSubject.own; public class RWTUIFragment extends Fragment implements OnTouchListener,PadListener { PlayerFragment listener = null; View v = null; + public RWTUIFragment() {} @Override @@ -35,6 +40,9 @@ RWTPad pad = v.findViewById(R.id.pad); pad.addListener(this); + + + if (listener != null) { listener.onCreateFragmentEvent(this); } @@ -46,6 +54,11 @@ System.out.println("RWTUIFragment touch"); return false; } +// +// +// public void onClick(View v) { +// System.out.print("onClick押されましたよ----------------------------------------------------IN RWTUIFragment"); +// } @Override public boolean onEvent(PadEvent event) { diff --git a/app/src/main/res/layout/ui_fragment.xml b/app/src/main/res/layout/ui_fragment.xml index 34a7203..43604b7 100644 --- a/app/src/main/res/layout/ui_fragment.xml +++ b/app/src/main/res/layout/ui_fragment.xml @@ -7,16 +7,16 @@