1   package fi.jyu.mit.graphics;
2   import java.util.Timer;
3   import java.util.TimerTask;
4   
5   /**
6    * Kantaluokka yleisille ajastetuille muuntimille
7    * @author Vesa Lappalainen
8    */
9   public class BasicTransformer extends TimerTask implements Transformer {
10      
11      private final Transformable object; 
12      private Matrix tra;
13      private final Timer timer;
14      
15      /**
16       * Luo uuden liikuttajan
17       * @param object olio jota liikutetaan
18       * @param tra muunosmatriisi
19       * @param dt muunnos askelien välinen aika millisekunteina
20       */
21      public BasicTransformer(Transformable object,Matrix tra,long dt) {
22          super();
23          this.object = object;
24          this.tra = tra;
25          timer = new Timer();
26          timer.schedule(this,dt,dt);
27      }
28      
29      
30     /**
31       * Käynnistää liikuttajan
32       */
33      @Override
34      public void run() {
35          object.transform(tra);
36      }
37  
38      
39      /**
40       * Asettaa muuntelijalle uuden muunnosmatriisin
41       * @param rot uusi kiertomatriisi
42       */
43      public void setTransform(Matrix rot) {
44          this.tra = rot;
45      }
46      
47      
48      /**
49       * @return nykyinen muunnosmatriisi
50       */
51      public Matrix getTransform() {
52          return tra;
53      }
54  
55      
56      /**
57       * Poistaa muuntelijan
58       */
59      @Override
60      public void remove() {
61          this.cancel();
62          timer.cancel();
63      }
64      
65      
66      /**
67       * @return muunneltava olio
68       */
69      public Transformable getObject() {
70          return object;
71      }
72      
73  }
74