-
Notifications
You must be signed in to change notification settings - Fork 1
/
Rule.java
82 lines (59 loc) · 1.75 KB
/
Rule.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package bleh;
import java.util.ArrayList;
import processing.core.PApplet;
import toxi.geom.Vec3D;
public class Rule {
ArrayList<Type> allTypes; // holds alphabet of this grammar
Type axiom; // start of the fractal
Vec3D origin, iniVel;
int generations;
public Rule(Vec3D origin, Vec3D iniVel, int generations){
this.origin = origin;
this.iniVel = iniVel;
this.generations = generations;
}
public void start(PApplet p){
Bleh.sticks.clear();
Stick start = new Stick(p,origin, iniVel, axiom, generations);
}
public Type getAxiom() { return axiom; }
public void setAxiom(String a){
int index = getIndexByName(a);
axiom = allTypes.get(index);
}
public ArrayList<String> getTypes(){
ArrayList<String> names = new ArrayList<String>();
for(Type t: allTypes)
names.add(t.toString());
return names;
}
public ArrayList<Type> getTypesObj() {return allTypes;}
public void setTypes(ArrayList<Type> type) {this.allTypes = type;}
public void setAxiom(Type axiom){ this.axiom = axiom; }
// spawn is an array of the names on the Types involved
public void addSpawn(String name, String[] spawn){
Type temp = null; // the Type we will be adding spawn to
for(Type t: allTypes){
if(t.getName().equals(name)){
temp = t;
}
}
ArrayList<Type> spawnList = new ArrayList<Type>();
for(String s: spawn){
int index = getIndexByName(s);
if( index > -1)
spawnList.add(allTypes.get(index));
}
if(temp != null)
temp.setSpawn(spawnList);
}
public int getIndexByName(String name){
for(int i = 0; i < allTypes.size(); i++){
Type t = allTypes.get(i);
if(t.getName().equals(name)){
return i;
}
}
return -1;
}
}