diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index c212c12..a3f0973 100644
--- a/.idea/caches/build_file_checksums.ser
+++ b/.idea/caches/build_file_checksums.ser
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c86cd5d..7c3c703 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,7 +3,6 @@
package="org.ntlab.radishforandroidstudio">
-
-
- コメントアウトか消すといい-->
+
+
@@ -33,16 +33,26 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/PlayerActivity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/PlayerActivity.java
new file mode 100644
index 0000000..8aaabb5
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/PlayerActivity.java
@@ -0,0 +1,210 @@
+package org.ntlab.radishforandroidstudio.cactusClient;
+
+import android.annotation.SuppressLint;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.app.FragmentTransaction;
+import android.os.Bundle;
+import android.text.Layout;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+import android.widget.Toast;
+
+import android.R;
+
+import org.ntlab.radishforandroidstudio.framework.RWT.RWTPad;
+import org.ntlab.radishforandroidstudio.framework.RWT.RWTSurfaceView;
+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.OvergroundActor;
+import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DActivity;
+import org.ntlab.radishforandroidstudio.framework.listener.PadListener;
+import org.ntlab.radishforandroidstudio.framework.model3D.ModelFactory;
+import org.ntlab.radishforandroidstudio.framework.model3D.Object3D;
+import org.ntlab.radishforandroidstudio.framework.model3D.Position3D;
+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;
+import org.ntlab.radishforandroidstudio.java3d.DirectionalLight;
+import org.ntlab.radishforandroidstudio.java3d.Material;
+import org.ntlab.radishforandroidstudio.java3d.Vector3d;
+import org.ntlab.radishforandroidstudio.java3d.Vector3f;
+import org.ntlab.radishforandroidstudio.java3d.View;
+
+
+public class PlayerActivity extends RealTime3DActivity implements PadListener{
+ private OvergroundActor pocha;
+ private Ground stage;
+ private boolean isTouched = false;
+ private float touchX = 0.0f;
+ private float touchY = 0.0f;
+ RWTPad pad = null;
+
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+
+ //環境光
+ 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);
+
+ Appearance ap1 = new Appearance();
+ Material m = new Material();
+ m.setDiffuseColor(0.0f, 0.3f, 1.0f);
+ m.setAmbientColor(0.0f, 0.0f, 0.0f);
+ m.setEmissiveColor(0.0f, 0.0f, 0.0f);
+ m.setSpecularColor(0.0f, 0.0f, 0.0f);
+ m.setShininess(5.0f);
+ ap1.setMaterial(m);
+
+ Object3D pochaBody = null;
+ try {
+ pochaBody = ModelFactory.loadModel(getResources(), "pocha.stl", ap1).createObject();
+ Animation3D pochaAnimation = null; //AnimationFactory.loadAnimation("data\\pocha\\walk.wrl");
+ pocha = new OvergroundActor(pochaBody, pochaAnimation);
+ pocha.setPosition(new Position3D(0.0, -100.0, 250.0));
+ universe.place(pocha);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ Appearance ap2 = new Appearance();
+ Material m2 = new Material();
+ m2.setDiffuseColor(0.1f, 0.0f, 0.02f);
+ m2.setAmbientColor(0.1f, 0.1f, 0.1f);
+ m2.setEmissiveColor(0.0f, 0.0f, 0.0f);
+ m2.setSpecularColor(0.2f, 0.2f, 0.2f);
+ m2.setShininess(5.0f);
+ ap2.setMaterial(m2);
+
+ Object3D stageObj = null;
+ try {
+ stageObj = ModelFactory.loadModel(getResources(), "konan/konan.obj").createObject();
+ stage = new Ground(stageObj);
+ universe.place(stage);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ //pad 追加部分
+
+
+ setContentView(org.ntlab.radishforandroidstudio.R.layout.activity_main);
+
+ FrameLayout l = findViewById(org.ntlab.radishforandroidstudio.R.id.game_layout);
+ view = new RWTSurfaceView(this);
+ view.attachCamera(camera);
+ l.addView(view, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
+
+
+ FragmentManager fragmentManager = getFragmentManager();
+ FragmentTransaction transaction = fragmentManager.beginTransaction();
+ RWTUIFragment f = new RWTUIFragment();
+ f.setListener(this);
+ android.view.View uiLayout = (android.view.View)findViewById(org.ntlab.radishforandroidstudio.R.id.ui_layout);
+ uiLayout.setOnTouchListener((RWTUIFragment)f);
+ transaction.add(org.ntlab.radishforandroidstudio.R.id.ui_layout, f);
+ transaction.commit();
+
+
+
+ /*camera.setViewPoint(pocha.getPosition().add(0.0, 1.5, 0.0));
+ camera.setViewLine(pocha.getDirection());
+ camera.setFieldOfView(1.5);
+ camera.setBackClipDistance(10000.0);*/
+ start(1000L, 50L, true);
+ }
+
+ @Override
+ public void progress(long interval) {
+ Velocity3D curV = pocha.getVelocity();
+ if (isTouched) {
+ pocha.rotY(0.001 * (0.5f - touchX) * (double)(interval / 15.0));
+ curV.setX(pocha.getDirection().getX() * 200.0 * (0.5f - touchY));
+ curV.setZ(pocha.getDirection().getZ() * 200.0 * (0.5f - touchX));
+ pocha.setVelocity(curV);
+
+ } else {
+ curV.setX(0.0);
+ curV.setZ(0.0);
+ pocha.setVelocity(curV);
+ }
+
+
+
+ Vector3d charaVector3d = pocha.getDirection();
+ charaVector3d.normalize();//キャラの向きを単位ベクトルに
+ camera.setViewPoint(pocha.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));//視線
+ }
+
+
+ @SuppressLint("NewApi")
+ /*@Override
+ public boolean onTouchEvent (MotionEvent event){
+ Vector3d charaVector3d = pocha.getDirection();
+ charaVector3d.normalize();//キャラの向きを単位ベクトルに
+ super.onTouchEvent(event);
+
+ if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
+ isTouched = true;
+ float maxX = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMax() / 2.0f;
+ float minX = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMin();
+ float maxY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMax();
+ float minY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMin();
+ } else if (event.getAction() == MotionEvent.ACTION_UP) {
+ isTouched = false;
+ }
+ return true;
+ }*/
+
+ public void onCreateFragmentEvent(RWTUIFragment f) {
+ pad = (RWTPad) f.findViewById(org.ntlab.radishforandroidstudio.R.id.button3);
+ pad.addListener(this);
+ }
+
+ @Override
+ public boolean onEvent(PadEvent event) {
+ Vector3d charaVector3d = pocha.getDirection();
+ charaVector3d.normalize();//キャラの向きを単位ベクトルに
+ MotionEvent motionEvent = event.getMotionEvent();
+ super.onTouchEvent(motionEvent);
+
+ if (motionEvent.getAction() == MotionEvent.ACTION_DOWN || motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
+ isTouched = true;
+ float maxX = motionEvent.getDevice().getMotionRange(MotionEvent.AXIS_X).getMax() / 2.0f;
+ float minX = motionEvent.getDevice().getMotionRange(MotionEvent.AXIS_X).getMin();
+ float maxY = motionEvent.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMax();
+ float minY = motionEvent.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMin();
+ touchX = (float) (Math.cos(event.getAngle())*event.getLength());
+ touchY = (float) (Math.sin(event.getAngle())*event.getLength());
+
+ //motion.eventをevent.getLengthみたいに変えればいい?
+ //touchYのもとは(motionEvent.getY() - minY) / (maxY - minY),X (motionEvent.getX() - minX) / (maxX - minX)
+ camera.setViewPoint(pocha.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));//視線
+ } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
+ isTouched = false;
+ }
+ return false;
+ }
+}
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 e528f91..4ab001a 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
@@ -1,35 +1,64 @@
package org.ntlab.radishforandroidstudio.framework.RWT;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
+import android.app.Activity;
+import android.app.Fragment;
import android.os.Bundle;
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.PlayerActivity;
+import org.ntlab.radishforandroidstudio.framework.event.PadEvent;
+import org.ntlab.radishforandroidstudio.framework.listener.PadListener;
+import org.ntlab.radishforandroidstudio.sample.SampleGameActivity;
import static android.view.View.*;
-public class RWTUIFragment extends Fragment implements OnTouchListener {
+public class RWTUIFragment extends Fragment implements OnTouchListener,PadListener {
+ PlayerActivity listener = null;
+ View v = null;
public RWTUIFragment() {}
@Override
public void onCreate(Bundle savedInstanceState) {
+
super.onCreate(savedInstanceState);
+
}
@Override
- public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- return inflater.inflate(R.layout.ui_fragment, container, false);
+ v = inflater.inflate(R.layout.ui_fragment, container, false);
+ RWTPad pad = v.findViewById(org.ntlab.radishforandroidstudio.R.id.button3);
+ pad.addListener(this);
+
+ if (listener != null) {
+ listener.onCreateFragmentEvent(this);
+ }
+ return inflater.inflate(R.layout.ui_fragment, null);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
System.out.println("RWTUIFragment touch");
- v.performClick();
return false;
}
+
+ @Override
+ public boolean onEvent(PadEvent event) {
+ return false;
+ }
+
+ public void setListener(PlayerActivity activity) {
+ listener = activity;
+ }
+
+ public View findViewById(int id) {
+ return v.findViewById(id);
+ }
+
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/PadEvent.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/PadEvent.java
index 8e5d25e..3b81015 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/PadEvent.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/PadEvent.java
@@ -23,11 +23,11 @@
this.angle = angle;
}
- public final float getLength() {
+ public float getLength() {
return length;
}
- public final float getAngle() {
+ public float getAngle() {
return angle;
}
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/sample/SampleGameActivity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/sample/SampleGameActivity.java
index fe6d53a..3ebd41d 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/sample/SampleGameActivity.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/sample/SampleGameActivity.java
@@ -1,12 +1,18 @@
package org.ntlab.radishforandroidstudio.sample;
import android.annotation.SuppressLint;
+import android.app.Fragment;
import android.os.Bundle;
import android.view.MotionEvent;
+import org.ntlab.radishforandroidstudio.R;
+import org.ntlab.radishforandroidstudio.framework.RWT.RWTPad;
+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.OvergroundActor;
import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DActivity;
+import org.ntlab.radishforandroidstudio.framework.listener.PadListener;
import org.ntlab.radishforandroidstudio.framework.model3D.ModelFactory;
import org.ntlab.radishforandroidstudio.framework.model3D.Object3D;
import org.ntlab.radishforandroidstudio.framework.model3D.Position3D;
@@ -20,7 +26,7 @@
import org.ntlab.radishforandroidstudio.java3d.Vector3f;
-public class SampleGameActivity extends RealTime3DActivity {
+public class SampleGameActivity extends RealTime3DActivity{
private OvergroundActor pocha;
private Ground stage;
private boolean isTouched = false;
@@ -94,8 +100,8 @@
Velocity3D curV = pocha.getVelocity();
if (isTouched) {
pocha.rotY(0.1 * (0.5f - touchX) * (double)(interval / 15.0));
- curV.setX(pocha.getDirection().getX() * 200.0 * (0.5f - touchY));
- curV.setZ(pocha.getDirection().getZ() * 200.0 * (0.5f - touchY));
+ curV.setX(/*pocha.getDirection().getX() **/ 200.0 /** (0.5f - touchY)*/);
+ curV.setZ(/*pocha.getDirection().getZ() **/ 200.0 /** (0.5f - touchY)*/);
pocha.setVelocity(curV);
} else {
curV.setX(0.0);
diff --git a/app/src/main/res/layout/test_activity.xml b/app/src/main/res/layout/test_activity.xml
index b514099..95c07ce 100644
--- a/app/src/main/res/layout/test_activity.xml
+++ b/app/src/main/res/layout/test_activity.xml
@@ -11,5 +11,6 @@
android:layout_height="wrap_content"
android:text="Button"
tools:layout_editor_absoluteX="16dp"
- tools:layout_editor_absoluteY="16dp" />
+ tools:layout_editor_absoluteY="16dp"
+ tools:ignore="MissingConstraints" />
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 22d7231..43c0708 100644
--- a/build.gradle
+++ b/build.gradle
@@ -8,6 +8,8 @@
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
+
+
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}