changeset 390:e29cf08ad1f3 multicast

add CalculatePosition CodeSegment
author sugi
date Mon, 16 Jun 2014 21:45:43 +0900
parents 4515fe620e3a
children a049f025583b
files src/main/java/alice/test/topology/aquarium/fx/CheckMyName.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/SetTranslate.java
diffstat 4 files changed, 38 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/alice/test/topology/aquarium/fx/CheckMyName.java	Mon Jun 16 21:44:25 2014 +0900
+++ b/src/main/java/alice/test/topology/aquarium/fx/CheckMyName.java	Mon Jun 16 21:45:43 2014 +0900
@@ -26,8 +26,10 @@
 		// use view scope
 		int num = new Integer(matcher.group(2));
 		// scope: A_n = 5 + 10(n - 1);
-		int scope = 5 + INNER_WIDTH * (num - 1);
-		ods.put("startX", scope);
+		int median = INNER_WIDTH * num;
+		ods.put("median", median); // node0 median : 0
+								   // node1 median : 10
+		                           // node2 median : 20
 		
 		if (num == 0){ // root node
 			new RegisterList();
@@ -36,9 +38,10 @@
 			new ReceiveRegisterList();
 		}
 
-		FishInfo fishInfo = new FishInfo(0,0,0);
+		FishInfo fishInfo = new FishInfo(median,0,0);
 		fishInfo.setName(name);
-
+		
+		ods.put("OwnFishP", fishInfo.clone());
 		ods.put("fishData", fishInfo);
 
 		new CreateObject();
--- a/src/main/java/alice/test/topology/aquarium/fx/CreateObject.java	Mon Jun 16 21:44:25 2014 +0900
+++ b/src/main/java/alice/test/topology/aquarium/fx/CreateObject.java	Mon Jun 16 21:45:43 2014 +0900
@@ -16,19 +16,22 @@
 public class CreateObject extends CodeSegment{
 
 	private Receiver info = ids.create(CommandType.TAKE);
-	
+	private Receiver info1 = ids.create(CommandType.PEEK);	
+
 	public CreateObject(){
 		info.setKey("fishData");
+		info1.setKey("host");
 	}
-	
+
 	@Override
 	public void run() {
 		FishInfo fishInfo = info.asClass(FishInfo.class);
-		
+		String myName = info1.asString();
+
 		BooleanProperty showWireframe = new SimpleBooleanProperty(false);
 		ObjModelImporter objImporter = new ObjModelImporter();
 		objImporter.read(getClass().getClassLoader().getResource("objects/Scooter-smgrps.obj"));
-		
+
 		MeshView[] dukeMesh = objImporter.getImport();
 		objImporter.close();
 
@@ -41,13 +44,17 @@
 		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");
+		new SetTranslate(fishInfo.name+"Fish");	
 		ods.put("addOffer", obj);
 		ods.put("register", fishInfo);
 		new SendDataOthers(info, "fishData");
 		new CreateObject();
 	}
-	
+
 
 }
--- a/src/main/java/alice/test/topology/aquarium/fx/FishInfo.java	Mon Jun 16 21:44:25 2014 +0900
+++ b/src/main/java/alice/test/topology/aquarium/fx/FishInfo.java	Mon Jun 16 21:45:43 2014 +0900
@@ -52,5 +52,12 @@
 	
 	public void setZ(double z){
 		this.z = z;
-	} 
+	}
+	
+	public FishInfo clone(){
+		FishInfo info = new FishInfo(this.x,this.y,this.z);
+		info.setName(this.name);
+		return info;
+	}
+
 }
--- a/src/main/java/alice/test/topology/aquarium/fx/SetTranslate.java	Mon Jun 16 21:44:25 2014 +0900
+++ b/src/main/java/alice/test/topology/aquarium/fx/SetTranslate.java	Mon Jun 16 21:45:43 2014 +0900
@@ -9,14 +9,14 @@
 public class SetTranslate extends CodeSegment {
 	
 	private Receiver info  = ids.create(CommandType.TAKE); // object instance
-	private Receiver info1 = ids.create(CommandType.TAKE); // differential value
-	//private Receiver info2 = ids.create(CommandType.TAKE); // absolute fish position value
-	private Receiver info3 = ids.create(CommandType.PEEK); // start x
+	private Receiver info1 = ids.create(CommandType.TAKE); // absolute fish position value
+	private Receiver info2 = ids.create(CommandType.PEEK); // median
 	private boolean executed = false;
+	
 	public SetTranslate(String key) {
 		info.setKey(key);
-		info1.setKey(key+"diffP");
-		info3.setKey("startX");
+		info1.setKey(key+"absoluteP");
+		info2.setKey("median");
 	}
 
 	@Override
@@ -29,12 +29,12 @@
 		} else {
 			Group fish = info.asClass(Group.class);
 			FishInfo fp = info1.asClass(FishInfo.class);
-			//int scope = info3.asInteger();
-        	
-        	fish.setTranslateX(fish.getTranslateX()+fp.getX());
-        	fish.setTranslateY(fish.getTranslateY()+fp.getY());
-        	fish.setTranslateZ(fish.getTranslateZ()+fp.getZ());
+			int median = info2.asInteger();
+        	fish.setTranslateX(fp.getX() - median);
+        	fish.setTranslateY(fp.getY());
+        	fish.setTranslateZ(fp.getZ());
         	ods.flip(info);
+
         	executed = false;
     		new SetTranslate(info.key);
 		}