Mercurial > hg > Database > Alice
view src/alice/test/topology/aquarium/AutoIncrement.java @ 143:0651fb36a369 working
demo for Open Source Conference
author | sugi |
---|---|
date | Thu, 20 Sep 2012 22:44:11 +0900 |
parents | f995396f2af7 |
children | 88cc33eeafa6 |
line wrap: on
line source
package alice.test.topology.aquarium; import alice.codesegment.CodeSegment; import alice.datasegment.CommandType; import alice.datasegment.Receiver; public class AutoIncrement extends CodeSegment { private Receiver position = ids.create(CommandType.PEEK); private Receiver number = ids.create(CommandType.PEEK); private String key; private float min = -1.3f; private float max; public AutoIncrement(String key,int index){ this.key = key; this.number.setKey("local","num"); this.position.setKey("local", key,index); } @Override public void run() { max = this.number.asInteger()*2-1+0.3f; FishPoint fp = this.position.asClass(FishPoint.class); if (fp.getX()+0.01>max){ fp.setXYZ(min, fp.getY(), fp.getZ()); } else if (fp.getX()+0.01< min){ fp.setXYZ(max, fp.getY(), fp.getZ()); } else { fp.setXYZ(fp.getX()+0.01f, fp.getY(), fp.getZ()); } ods.update("local", key, fp); synchronized(this){ try { // TODO // Waiting should be done in Alice kernel // ids.create(CommandType.WAIT); wait(20); } catch (InterruptedException e) { e.printStackTrace(); } } new AutoIncrement(this.key,this.position.index); } }