view src/main/java/alice/test/topology/aquarium/fx/SetTranslate.java @ 394:c0cf9fe00d77 multicast

add direction Information
author sugi
date Tue, 17 Jun 2014 17:11:18 +0900
parents e29cf08ad1f3
children aefbe41fcf12
line wrap: on
line source

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;
import alice.datasegment.Receiver;

public class SetTranslate extends CodeSegment {
	
	private Receiver info  = ids.create(CommandType.TAKE); // object instance
	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+"absoluteP");
		info2.setKey("median");
	}

	@Override
	public void run() {
		if (!executed) {
			executed = true;
			new SendDataOthers(info1, info1.key);
			// javafx's Scene can be accessed only FX application thread.
			Platform.runLater(this);
		} else {
			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());
        	ods.flip(info);

        	executed = false;
    		new SetTranslate(info.key);
		}		
	}

}