Changeset 90 for java/main/src/main/java/com/framsticks/model
- Timestamp:
- 07/02/13 16:20:07 (11 years ago)
- Location:
- java/main/src/main/java/com/framsticks/model
- Files:
-
- 6 added
- 3 deleted
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main/src/main/java/com/framsticks/model/BasePart.java
r86 r90 16 16 public void setPosition(Point3d p) { x = p.x; y = p.y; z = p.z; } 17 17 18 @ParamAnnotation(id = "m" )19 public double mass = 0.0;18 @ParamAnnotation(id = "m", stringType = "f 0.1 999.0 1.0") 19 public double mass = 1.0; 20 20 21 21 @ParamAnnotation(id = "s") -
java/main/src/main/java/com/framsticks/model/Creature.java
r86 r90 154 154 public final List<Joint> joints = new ArrayList<Joint>(); 155 155 @ParamAnnotation 156 public final List<NeuroDef > neurodefs = new ArrayList<NeuroDef>();156 public final List<NeuroDefinition> neurodefs = new ArrayList<NeuroDefinition>(); 157 157 158 158 public final List<Part> getParts() { return parts; } 159 159 public final List<Joint> getJoints() { return joints; } 160 public final List<NeuroDef > getNeuroDefs() { return neurodefs; }160 public final List<NeuroDefinition> getNeuroDefs() { return neurodefs; } 161 161 162 162 @ParamAnnotation -
java/main/src/main/java/com/framsticks/model/Joint.java
r86 r90 10 10 */ 11 11 @FramsClassAnnotation(id = "j") 12 public class Joint extends BaseJoint {12 public class Joint extends BaseJoint implements ModelComponent { 13 13 14 14 @ParamAnnotation(id = "i") -
java/main/src/main/java/com/framsticks/model/Model.java
r86 r90 3 3 import com.framsticks.params.annotations.FramsClassAnnotation; 4 4 import com.framsticks.params.annotations.ParamAnnotation; 5 import com.framsticks.util.lang.Casting;6 5 import com.framsticks.util.lang.Containers; 7 import com.framsticks.util.lang.IterableIterator;8 import com.framsticks.util.math.Orientation;9 import org.apache.log4j.Logger;10 6 11 7 import java.util.ArrayList; 12 import java.util.Iterator;13 8 import java.util.List; 14 9 … … 17 12 */ 18 13 @FramsClassAnnotation(id = "m") 19 public class Model { 20 21 private final static Logger log = Logger.getLogger(Model.class); 14 public class Model implements ModelComponent { 22 15 23 16 @ParamAnnotation(id = "se") … … 39 32 public final List<Joint> joints = new ArrayList<Joint>(); 40 33 41 @ParamAnnotation 42 public final List<NeuroDef> neurodefs = new ArrayList<NeuroDef>(); 34 @ParamAnnotation(id = "neurodefs") 35 public final List<NeuroDefinition> neuroDefinitions = new ArrayList<NeuroDefinition>(); 36 37 @ParamAnnotation(id = "neuroconns") 38 public final List<NeuroConnection> neuroConnections = new ArrayList<NeuroConnection>(); 43 39 44 40 //TODO: why those methods returns and accepts doubles? … … 48 44 public double getNumjoints() { return (double)joints.size(); } 49 45 @ParamAnnotation 50 public double getNumneurons() { return (double)neuro defs.size(); }46 public double getNumneurons() { return (double)neuroDefinitions.size(); } 51 47 52 48 //this is impossible to use, because numparts field is marked as readonly … … 56 52 public void setNumjoints(double numjoints) { Containers.resizeList(joints, (int)(double)numjoints); } 57 53 @ParamAnnotation 58 public void setNumneurons(double numneurons) { Containers.resizeList(neuro defs, (int)(double)numneurons); }54 public void setNumneurons(double numneurons) { Containers.resizeList(neuroDefinitions, (int)(double)numneurons); } 59 55 60 56 public List<Part> getParts() { return parts; } 61 57 public List<Joint> getJoints() { return joints; } 62 public List<NeuroDef> getNeuroDefs() { return neurodefs; } 58 public List<NeuroDefinition> getNeuroDefinitions() { return neuroDefinitions; } 59 public List<NeuroConnection> getNeuroConnections() { return neuroConnections; } 63 60 64 public static Model build(List<Object> objects) {65 Iterator<Object> i = objects.iterator();66 if (!i.hasNext()) {67 return null;68 }69 Model f0Genotype = Casting.tryCast(Model.class, i.next());70 if (f0Genotype == null) {71 log.fatal("first object is not a Model");72 return null;73 }74 for (Object object : new IterableIterator<Object>(i)) {75 if (object instanceof Joint) {76 f0Genotype.joints.add((Joint)object);77 continue;78 }79 if (object instanceof Part) {80 f0Genotype.parts.add((Part)object);81 continue;82 }83 if (object instanceof NeuroDef) {84 f0Genotype.neurodefs.add((NeuroDef) object);85 continue;86 }87 log.error("invalid class: " + object.getClass().getCanonicalName());88 }89 90 for (Part p : f0Genotype.getParts()) {91 p.setOrientation(new Orientation().rotate(p.getRotation()));92 }93 for (Joint j : f0Genotype.getJoints()) {94 /** based on c++ Joint::attachToParts*/95 Part p1 = f0Genotype.parts.get(j.part1);96 Part p2 = f0Genotype.parts.get(j.part2);97 assert p1 != null && p2 != null;98 Orientation o = new Orientation().rotate(j.getRotation());99 p2.setOrientation(p1.getOrientation().transform(o));100 p2.setPosition(p2.getOrientation().transform(j.getDelta()).add(p1.getPosition()));101 }102 return f0Genotype;103 }104 61 } -
java/main/src/main/java/com/framsticks/model/Part.java
r86 r90 10 10 */ 11 11 @FramsClassAnnotation(id = "p") 12 public class Part extends BasePart {12 public class Part extends BasePart implements ModelComponent { 13 13 14 14 @ParamAnnotation -
java/main/src/main/java/com/framsticks/model/f0/Schema.java
r88 r90 7 7 import com.framsticks.params.annotations.AutoAppendAnnotation; 8 8 import com.framsticks.params.annotations.FramsClassAnnotation; 9 import com.framsticks.parsers.XmlLoader; 10 import com.framsticks.util.DoubleMap; 11 import com.framsticks.util.FramsticksException; 9 import com.framsticks.params.annotations.ParamAnnotation; 10 import com.framsticks.util.lang.Casting; 12 11 13 import com.framsticks.model.Package;14 12 15 13 /** … … 27 25 28 26 /** The neuro classes (classess representing different types of neurons). */ 29 private DoubleMap<String, FramsClass> framsClasses = new DoubleMap<>(); 30 private DoubleMap<String, NeuroClass> neuroClasses = new DoubleMap<>(); 27 private final Registry framsClasses = new Registry(); 28 private final Registry neuroClasses = new Registry(); 29 // private DoubleMap<String, FramsClass> framsClasses = new DoubleMap<>(); 30 // private DoubleMap<String, NeuroClass> neuroClasses = new DoubleMap<>(); 31 31 32 32 public static InputStream getDefaultDefinitionAsStream() { … … 35 35 } 36 36 37 p ublic static Schema load(InputStream stream) {37 protected static Schema defaultSchema; 38 38 39 XmlLoader xmlLoader = new XmlLoader(); 40 xmlLoader.setUseLowerCase(true); 41 xmlLoader.getRegistry() 42 .registerAndBuild(Schema.class) 43 .registerAndBuild(FramsClassBuilder.class) 44 .registerAndBuild(NeuroClassBuilder.class) 45 .registerAndBuild(ParamBuilder.class) 46 .registerAndBuild(NeuroParamBuilder.class) 47 .registerAndBuild(GroupBuilder.class) 48 ; 49 50 Package.register(xmlLoader.getRegistry()); 51 52 Object object = xmlLoader.load(Schema.getDefaultDefinitionAsStream()); 53 if (!(object instanceof Schema)) { 54 throw new FramsticksException().msg("failed to load schema"); 39 public synchronized static Schema getDefaultSchema() { 40 if (defaultSchema == null) { 41 defaultSchema = new SchemaBuilder().stream(getDefaultDefinitionAsStream()).finish(); 55 42 } 56 return (Schema) object;43 return defaultSchema; 57 44 } 58 45 … … 60 47 } 61 48 49 @AutoAppendAnnotation 62 50 public void addClass(FramsClass framsClass) { 63 registry.put InfoIntoCache(framsClass);51 registry.putFramsClass(framsClass); 64 52 if (framsClass instanceof NeuroClass) { 65 neuroClasses.put (framsClass.getId(), framsClass.getName(), (NeuroClass)framsClass);53 neuroClasses.putFramsClass(framsClass); 66 54 return; 67 55 } 68 framsClasses.put (framsClass.getId(), framsClass.getName(),framsClass);56 framsClasses.putFramsClass(framsClass); 69 57 } 70 58 … … 74 62 } 75 63 76 public Set< NeuroClass> getNeuroClasses() {77 return neuroClasses.get Values();64 public Set<FramsClass> getNeuroClasses() { 65 return neuroClasses.getFramsClasses(); 78 66 } 79 67 80 68 public Set<FramsClass> getFramsClasses() { 81 return framsClasses.get Values();69 return framsClasses.getFramsClasses(); 82 70 } 83 71 84 72 public NeuroClass getNeuroClass(String identifier) { 85 return neuroClasses.get(identifier);73 return Casting.throwCast(NeuroClass.class, neuroClasses.getFramsClass(identifier)); 86 74 } 87 75 88 76 public FramsClass getFramsClass(String identifier) { 89 return framsClasses.get (identifier);77 return framsClasses.getFramsClass(identifier); 90 78 } 91 79 80 @ParamAnnotation 92 81 public final Registry getRegistry() { 93 82 return registry; 94 83 } 95 84 85 @ParamAnnotation 86 public final Registry getFramsRegistry() { 87 return framsClasses; 88 } 89 90 @ParamAnnotation 91 public final Registry getNeurosRegistry() { 92 return neuroClasses; 93 } 94 95 96 96 }
Note: See TracChangeset
for help on using the changeset viewer.