changeset 394:c0cf9fe00d77 multicast

add direction Information
author sugi
date Tue, 17 Jun 2014 17:11:18 +0900
parents b64b650fb74c
children 4d5d7721f78f
files src/main/java/alice/test/topology/aquarium/fx/Aquarium.java src/main/java/alice/test/topology/aquarium/fx/CalculatePosition.java src/main/java/alice/test/topology/aquarium/fx/CreateObject.java src/main/java/alice/test/topology/aquarium/fx/FishInfo.java src/main/java/alice/test/topology/aquarium/fx/RegisterList.java src/main/java/alice/test/topology/aquarium/fx/SetTranslate.java
diffstat 6 files changed, 71 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/alice/test/topology/aquarium/fx/Aquarium.java	Tue Jun 17 17:08:08 2014 +0900
+++ b/src/main/java/alice/test/topology/aquarium/fx/Aquarium.java	Tue Jun 17 17:11:18 2014 +0900
@@ -38,31 +38,41 @@
 		Scene scene = new Scene(createContent());
 		scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
 		    public void handle(KeyEvent t) {
+		    	FishInfo info = null;
 		    	switch (t.getCode()) {
 		    	case RIGHT:
-		    		ods.update(myName+"FishdiffP", new FishInfo(0.1,0,0));
+		    		info = new FishInfo(0.1,0,0);
+		    		info.rolY = -1;
+		    		info.rotate = 90;
 		    		break;
 		    	case LEFT:
-		    		ods.update(myName+"FishdiffP", new FishInfo(-0.1,0,0));
+		    		info = new FishInfo(-0.1,0,0);
+		    		info.rolY = 1;
+		    		info.rotate = 90;
 		    		break;
 		    	case UP:
-		    		ods.update(myName+"FishdiffP", new FishInfo(0,-0.1,0));
+		    		info = new FishInfo(0,-0.1,0);
+		    		info.rolX = -1;
+		    		info.rotate = 90;
 		    		break;
 		    	case DOWN:
-		    		ods.update(myName+"FishdiffP", new FishInfo(0,0.1,0));
+		    		info = new FishInfo(0,0.1,0);
+		    		info.rolX = 1;
+		    		info.rotate = 90;
 		    		break;
 		    	case N:
-		    		ods.update(myName+"FishdiffP", new FishInfo(0,0,0.1));
+		    		info = new FishInfo(0,0,0.1);
+		    		info.rolX = -1;
 		    		break;
 		    	case M:
-		    		ods.update(myName+"FishdiffP", new FishInfo(0,0,-0.1));
-		    		break;
-		    	case R: // reset. need absolute position
-		    		ods.update(myName+"FishdiffP", new FishInfo(0,0,0));
+		    		info = new FishInfo(0,0,-0.1);
+		    		info.rotate = 180;
 		    		break;
 				default: // do nothing
+					// reset. send median position. after implement
 					break;
 		    	}
+		    	ods.update(myName+"FishdiffP", info);
 		    }
 		});
 		primaryStage.setScene(scene);
--- a/src/main/java/alice/test/topology/aquarium/fx/CalculatePosition.java	Tue Jun 17 17:08:08 2014 +0900
+++ b/src/main/java/alice/test/topology/aquarium/fx/CalculatePosition.java	Tue Jun 17 17:11:18 2014 +0900
@@ -10,7 +10,6 @@
 	private Receiver info1 = ids.create(CommandType.TAKE); // absolute fish position value 
 	private Receiver info2 = ids.create(CommandType.PEEK);
 	
-	
 	public CalculatePosition(String key){
 		info.setKey(key+"FishdiffP");
 		info1.setKey("OwnFishP");
@@ -26,10 +25,15 @@
 		
 		afp.setX(afp.getX() + dfp.getX());
 		afp.setY(afp.getY() + dfp.getY());
-		afp.setZ(afp.getZ() + dfp.getZ());
-				
+		afp.setZ(afp.getZ() + dfp.getZ());		
 		ods.update(info1.key, afp);
-		ods.update(myName+"FishabsoluteP", new FishInfo(afp.getX(),afp.getY(),afp.getZ()));
+		
+		FishInfo fishInfo = new FishInfo(afp.getX(),afp.getY(),afp.getZ());
+		fishInfo.rolX = dfp.rolX;
+		fishInfo.rolY = dfp.rolY;
+		fishInfo.rolZ = dfp.rolZ;
+		fishInfo.rotate = dfp.rotate;
+		ods.update(myName+"FishabsoluteP", fishInfo);
 		
 		this.recycle();
 	}
--- a/src/main/java/alice/test/topology/aquarium/fx/CreateObject.java	Tue Jun 17 17:08:08 2014 +0900
+++ b/src/main/java/alice/test/topology/aquarium/fx/CreateObject.java	Tue Jun 17 17:11:18 2014 +0900
@@ -4,9 +4,11 @@
 import javafx.beans.property.BooleanProperty;
 import javafx.beans.property.SimpleBooleanProperty;
 import javafx.scene.Group;
+import javafx.scene.Node;
 import javafx.scene.shape.DrawMode;
 import javafx.scene.shape.MeshView;
 
+import com.interactivemesh.jfx.importer.col.ColModelImporter;
 import com.interactivemesh.jfx.importer.obj.ObjModelImporter;
 
 import alice.codesegment.CodeSegment;
@@ -28,6 +30,28 @@
 		FishInfo fishInfo = info.asClass(FishInfo.class);
 		String myName = info1.asString();
 
+		Group obj = new Group();
+		addColladaObject(obj);
+
+		obj.setScaleX(fishInfo.size);
+		obj.setScaleY(fishInfo.size);
+		obj.setScaleZ(fishInfo.size);
+		obj.setId(fishInfo.name);
+
+		// controlled own fish  
+		if (myName.equals(fishInfo.name)){
+			new CalculatePosition(fishInfo.name);
+		} 
+
+		new SetTranslate(fishInfo.name+"Fish");	
+		ods.put("addOffer", obj);
+		ods.put("register", fishInfo);
+		new SendDataOthers(info, "fishData");
+		new CreateObject();
+	}
+
+	// for read *.obj file
+	public void addObject(Group obj){
 		BooleanProperty showWireframe = new SimpleBooleanProperty(false);
 		ObjModelImporter objImporter = new ObjModelImporter();
 		objImporter.read(getClass().getClassLoader().getResource("objects/Scooter-smgrps.obj"));
@@ -35,26 +59,19 @@
 		MeshView[] dukeMesh = objImporter.getImport();
 		objImporter.close();
 
-		Group obj = new Group();
 		for (MeshView _dukeMesh : dukeMesh) {
 			obj.getChildren().addAll(_dukeMesh);
 			_dukeMesh.drawModeProperty().bind(new When(showWireframe).then(DrawMode.LINE).otherwise(DrawMode.FILL));
 		}
-		obj.setScaleX(fishInfo.size); // twice size
-		obj.setScaleY(fishInfo.size);
-		obj.setScaleZ(fishInfo.size);
-		obj.setId(fishInfo.name);
-
-		if (myName.equals(fishInfo.name)){
-			new CalculatePosition(fishInfo.name);
-		} 
-		
-		new SetTranslate(fishInfo.name+"Fish");	
-		ods.put("addOffer", obj);
-		ods.put("register", fishInfo);
-		new SendDataOthers(info, "fishData");
-		new CreateObject();
 	}
 
+	// for read *.dae file
+	public void addColladaObject(Group obj){
+		ColModelImporter colImporter = new ColModelImporter();
+		colImporter.read(getClass().getClassLoader().getResource("objects/seymourplane-150-im.dae"));
+		System.out.println(colImporter.getImport().length);
+		Node[] node = colImporter.getImport();
+		obj.getChildren().add(node[0]);
+	}
 
 }
--- a/src/main/java/alice/test/topology/aquarium/fx/FishInfo.java	Tue Jun 17 17:08:08 2014 +0900
+++ b/src/main/java/alice/test/topology/aquarium/fx/FishInfo.java	Tue Jun 17 17:11:18 2014 +0900
@@ -9,9 +9,14 @@
 	public double y = 0;
 	public double z = 0;
 	public String name;
-	public int size = 1;
+	public double size = 0.1;
 	public String type = "defalut"; // use select object type. after implement may be...
 	
+	public double rolX = 0; // these parameters use RotationAxis
+	public double rolY = 0;
+	public double rolZ = 0;
+	public double rotate = 0;
+	
 	public FishInfo(){
 		// this constructor is nothing to do, but need for serializing with MessagePack
 	}
--- a/src/main/java/alice/test/topology/aquarium/fx/RegisterList.java	Tue Jun 17 17:08:08 2014 +0900
+++ b/src/main/java/alice/test/topology/aquarium/fx/RegisterList.java	Tue Jun 17 17:11:18 2014 +0900
@@ -1,6 +1,6 @@
 package alice.test.topology.aquarium.fx;
 
-import java.util.ArrayList;
+import java.util.List;
 
 import alice.codesegment.CodeSegment;
 import alice.datasegment.CommandType;
@@ -21,7 +21,7 @@
 		FishInfo fishInfo = info.asClass(FishInfo.class);
 	
 		@SuppressWarnings("unchecked")
-		ArrayList<FishInfo> list = info1.asClass(ArrayList.class);
+		List<FishInfo> list = info1.asClass(List.class);
 		
 		list.add(fishInfo);
 		ods.update(info1.key, list);
--- a/src/main/java/alice/test/topology/aquarium/fx/SetTranslate.java	Tue Jun 17 17:08:08 2014 +0900
+++ b/src/main/java/alice/test/topology/aquarium/fx/SetTranslate.java	Tue Jun 17 17:11:18 2014 +0900
@@ -1,6 +1,7 @@
 package alice.test.topology.aquarium.fx;
 
 import javafx.application.Platform;
+import javafx.geometry.Point3D;
 import javafx.scene.Group;
 import alice.codesegment.CodeSegment;
 import alice.datasegment.CommandType;
@@ -30,6 +31,9 @@
 			Group fish = info.asClass(Group.class);
 			FishInfo fp = info1.asClass(FishInfo.class);
 			int median = info2.asInteger();
+			
+			fish.setRotate(fp.rotate);
+			fish.setRotationAxis(new Point3D(fp.rolX,fp.rolY,fp.rolZ));
         	fish.setTranslateX(fp.getX() - median);
         	fish.setTranslateY(fp.getY());
         	fish.setTranslateZ(fp.getZ());