Changeset 975
- Timestamp:
- 07/06/20 23:32:03 (4 years ago)
- Location:
- cpp/frams
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/frams/_demos/genoconv_test.cpp
r972 r975 107 107 } 108 108 109 /// Sample Geno converter producing "f0s" genotype from the textual list of shapes, eg. "/*shapes*/ball,cube,cube" 110 class GenoConv_Test4 : public GenoConverter 111 { 112 public: 113 GenoConv_Test4() 114 { 115 name = "Test Converter #4"; 116 in_format = "shapes"; 117 out_format = "0s"; 118 mapsupport = 1; 119 } 120 SString convert(SString &in, MultiMap *map, bool using_checkpoints); 121 ~GenoConv_Test4() {} 122 }; 123 124 SString GenoConv_Test4::convert(SString &in, MultiMap *map, bool using_checkpoints) 125 { 126 SString result; 127 int numparts=0; 128 int input_pos=0, prev_input_pos=0; SString word; 129 while(in.getNextToken(input_pos,word,',')) 130 { 131 Part::Shape sh; 132 if (word=="cube") 133 sh = Part::SHAPE_CUBOID; 134 else if (word=="ball") 135 sh = Part::SHAPE_ELLIPSOID; 136 else if (word=="cylinder") 137 sh = Part::SHAPE_CYLINDER; 138 else 139 return ""; 140 SString add; 141 add+=SString::sprintf("p:x=%g,sh=%d\n",numparts*2.0f,sh); 142 if (numparts>0) 143 add+=SString::sprintf("j:p1=%d,p2=%d,sh=1\n",numparts-1,numparts); 144 if (map) // fill in the map only if requested 145 map->add(prev_input_pos, prev_input_pos+word.length()-1, result.length(),result.length()+add.length()-1); 146 result+=add; 147 numparts++; 148 prev_input_pos = input_pos; 149 } 150 return result; 151 } 152 109 153 110 154 /////////////////////////////////////////////// … … 118 162 static int goodWidthForFormat(const SString& genotype_format) 119 163 { 120 return genotype_format == "0"? 45 : 15; // more space for long f0 lines164 return Geno::formatIsOneOf(genotype_format, Geno::F0_FORMAT_LIST) ? 45 : 15; // more space for long f0 lines 121 165 } 122 166 … … 134 178 gcm.addConverter(new GenoConv_Test2()); 135 179 gcm.addConverter(new GenoConv_Test3()); 180 gcm.addConverter(new GenoConv_Test4()); 136 181 Geno::useConverters(&gcm); 137 182 … … 154 199 else 155 200 src = "X"; 156 SString dst = (argc > 2) ? *argv[2] : '0';201 SString dst = (argc > 2) ? argv[2] : Geno::F0_FORMAT_LIST; 157 202 bool using_checkpoints = (argc > 3) ? (strcmp(argv[3], "checkpoints") == 0) : false; 158 203 … … 162 207 MultiMap m; 163 208 Geno g2 = g1.getConverted(dst, &m, using_checkpoints); 164 printf("*** Converted to f%s:\n", dst.c_str());209 printf("*** Converted:\n"); 165 210 printGen(g2); 166 211 -
cpp/frams/config/f0-SDK.def
r952 r975 202 202 NEUROCLASS(SolidMuscle,M,Muscle for solids,,1,0,2) 203 203 SHAPETYPE(SolidsShapeType) 204 JOINTTYPE(SUPPORTED_JOINT_HINGE_X+SUPPORTED_JOINT_HINGE_XY) 204 205 VISUALHINTS(EffectorClass+AtFirstPart+SolidMuscleFlag) 205 206 SYMBOL(`6,5,25,40,35,40,45,50,35,60,25,60,25,40,4,65,85,65,50,75,50,75,85,65,85,3,65,56,49,29,57,24,72,50,4,68,53,70,53,70,55,68,55,68,53,5,50,21,60,15,70,14,79,15,87,20,81,10,1,86,20,77,21') -
cpp/frams/config/f0.def
r952 r975 202 202 NEUROCLASS(SolidMuscle,M,Muscle for solids,,1,0,2) 203 203 SHAPETYPE(SolidsShapeType) 204 JOINTTYPE(SUPPORTED_JOINT_HINGE_X+SUPPORTED_JOINT_HINGE_XY) 204 205 VISUALHINTS(EffectorClass+AtFirstPart+SolidMuscleFlag) 205 206 SYMBOL(`6,5,25,40,35,40,45,50,35,60,25,60,25,40,4,65,85,65,50,75,50,75,85,65,85,3,65,56,49,29,57,24,72,50,4,68,53,70,53,70,55,68,55,68,53,5,50,21,60,15,70,14,79,15,87,20,81,10,1,86,20,77,21') -
cpp/frams/model/model.cpp
r972 r975 415 415 { 416 416 *f0map = *map; 417 if ( geno.getFormat() != '0')417 if (!Geno::formatIsOneOf(geno.getFormat(), Geno::F0_FORMAT_LIST)) 418 418 { 419 419 MultiMap tmp; -
cpp/frams/model/modelparts.cpp
r973 r975 99 99 NeuroClass::NeuroClass(ParamEntry *_props, SString _description, 100 100 int _prefinputs, int _prefoutput, int _preflocation, 101 int *_vectordata, bool own_vd, int vhints, int sup_shapes )101 int *_vectordata, bool own_vd, int vhints, int sup_shapes, int sup_joints) 102 102 :ownedvectordata(own_vd), 103 103 name(_props->name), longname(_props->id), description(_description), -
cpp/frams/model/modelparts.h
r972 r975 227 227 static constexpr int SUPPORTED_SHAPE_ALL = SUPPORTED_SHAPE_BALL_AND_STICK | SUPPORTED_SHAPE_SOLIDS; 228 228 paInt supported_shape_types; //< bitfield of 'Model::shape' values: NeuroClass::SUPPORTED_SHAPE_xxx = 1 << Model::SHAPE_xxx 229 230 static constexpr int SUPPORTED_JOINT_BALL_AND_STICK = 1; 231 static constexpr int SUPPORTED_JOINT_FIXED = 2; 232 static constexpr int SUPPORTED_JOINT_HINGE_X = 4; 233 static constexpr int SUPPORTED_JOINT_HINGE_XY = 8; 234 static constexpr int SUPPORTED_JOINT_ALL = SUPPORTED_JOINT_BALL_AND_STICK + SUPPORTED_JOINT_FIXED + SUPPORTED_JOINT_HINGE_X + SUPPORTED_JOINT_HINGE_XY; 235 paInt supported_joint_types; //< bitfield of 'Joint::shape' values: NeuroClass::SUPPORTED_JOINT_xxx = 1 << JOINT::SHAPE_xxx 236 229 237 int *vectordata; 230 238 paInt visualhints; … … 240 248 NeuroClass(); 241 249 NeuroClass(ParamEntry *_props, SString _description, 242 int _prefinputs, int _prefoutput, int _preflocation, int *_vectordata, bool own_vd = 1, int vhints = 0, int sup_shapes = NeuroClass::SUPPORTED_SHAPE_ALL);250 int _prefinputs, int _prefoutput, int _preflocation, int *_vectordata, bool own_vd = 1, int vhints = 0, int sup_shapes = NeuroClass::SUPPORTED_SHAPE_ALL, int sup_joints = NeuroClass::SUPPORTED_JOINT_ALL); 243 251 /** class name for use in Neuro::setClassName(), Neuro::setDetails() (former 'moredata' field), 244 252 eg. "N","-",G" */ … … 278 286 int getSupportedShapeTypes() { return (int)supported_shape_types; } 279 287 bool isShapeTypeSupported(ModelEnum::ShapeType t) { return (1 << (int)t) & supported_shape_types; } 288 int getSupportedJointTypes() { return (int)supported_joint_types; } 289 bool isJointTypeSupported(Joint::Shape t) { return (1 << (int)t) & supported_joint_types; } 280 290 int *getSymbolGlyph() 281 291 { -
cpp/frams/neuro/neurocls-f0-SDK-library.h
r952 r975 13 13 14 14 15 15 16 16 static ParamEntry NI_StdNeuron_tab[]={ 17 17 {"Neuron",1, 4 ,"N",}, … … 23 23 24 24 {0,0,0,},}; 25 addClass(new NeuroClass(NI_StdNeuron_tab,"Standard neuron",-1,1,0, NULL,false, 2, 3 ));26 27 25 addClass(new NeuroClass(NI_StdNeuron_tab,"Standard neuron",-1,1,0, NULL,false, 2, 3, 15)); 26 27 28 28 static ParamEntry NI_StdUNeuron_tab[]={ 29 29 {"Unipolar neuron [EXPERIMENTAL!]",1, 4 ,"Nu",}, … … 34 34 35 35 {0,0,0,},}; 36 addClass(new NeuroClass(NI_StdUNeuron_tab,"Works like standard neuron (N) but the output value is scaled to 0...+1 instead of -1...+1.\nHaving 0 as one of the saturation states should help in \"gate circuits\", where input signal is passed through or blocked depending on the other singal.",-1,1,0, NULL,false, 0, 3 ));37 38 static int Gyro_xy[]={83,8,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,12,43,24,48,24,48,19,38,19,38,24,43,24,43,54,48,54,48,64,43,69,38,64,38,54,43,54,5,63,69,58,74,48,79,38,79,28,74,23,69,1,43,79,43,74,1,23,69,26,66,1,63,69,60,66,1,55,76,53,73,1,31,75,33,72};36 addClass(new NeuroClass(NI_StdUNeuron_tab,"Works like standard neuron (N) but the output value is scaled to 0...+1 instead of -1...+1.\nHaving 0 as one of the saturation states should help in \"gate circuits\", where input signal is passed through or blocked depending on the other singal.",-1,1,0, NULL,false, 0, 3, 15)); 37 38 static int Gyro_xy[]={83,8,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,12,43,24,48,24,48,19,38,19,38,24,43,24,43,54,48,54,48,64,43,69,38,64,38,54,43,54,5,63,69,58,74,48,79,38,79,28,74,23,69,1,43,79,43,74,1,23,69,26,66,1,63,69,60,66,1,55,76,53,73,1,31,75,33,72}; 39 39 static ParamEntry NI_Gyro_tab[]={ 40 40 {"Gyroscope",1, 0 ,"G",}, … … 44 44 45 45 {0,0,0,},}; 46 addClass(new NeuroClass(NI_Gyro_tab,"Tilt sensor.\nSignal is proportional to sin(angle) = most sensitive in horizontal orientation.\n0=the stick is horizontal\n+1/-1=the stick is vertical",0,1,2, Gyro_xy,false, 32, 1 ));47 48 static int GyroP_xy[]={83,8,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,12,43,24,48,24,48,19,38,19,38,24,43,24,43,54,48,54,48,64,43,69,38,64,38,54,43,54,5,63,69,58,74,48,79,38,79,28,74,23,69,1,43,79,43,74,1,23,69,26,66,1,63,69,60,66,1,55,76,53,73,1,31,75,33,72};46 addClass(new NeuroClass(NI_Gyro_tab,"Tilt sensor.\nSignal is proportional to sin(angle) = most sensitive in horizontal orientation.\n0=the stick is horizontal\n+1/-1=the stick is vertical",0,1,2, Gyro_xy,false, 32, 1, 15)); 47 48 static int GyroP_xy[]={83,8,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,12,43,24,48,24,48,19,38,19,38,24,43,24,43,54,48,54,48,64,43,69,38,64,38,54,43,54,5,63,69,58,74,48,79,38,79,28,74,23,69,1,43,79,43,74,1,23,69,26,66,1,63,69,60,66,1,55,76,53,73,1,31,75,33,72}; 49 49 static ParamEntry NI_GyroP_tab[]={ 50 50 {"Part Gyroscope",1, 2 ,"Gp",}, … … 55 55 56 56 {0,0,0,},}; 57 addClass(new NeuroClass(NI_GyroP_tab,"Tilt sensor. Signal is directly proportional to the tilt angle.\n0=the part X axis is horizontal\n+1/-1=the axis is vertical",0,1,1, GyroP_xy,false, 32, 3 ));58 59 static int Touch_xy[]={43,2,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,11,75,50,65,50,60,55,55,45,50,55,45,45,40,50,35,50,30,45,25,50,30,55,35,50};57 addClass(new NeuroClass(NI_GyroP_tab,"Tilt sensor. Signal is directly proportional to the tilt angle.\n0=the part X axis is horizontal\n+1/-1=the axis is vertical",0,1,1, GyroP_xy,false, 32, 3, 15)); 58 59 static int Touch_xy[]={43,2,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,11,75,50,65,50,60,55,55,45,50,55,45,45,40,50,35,50,30,45,25,50,30,55,35,50}; 60 60 static ParamEntry NI_Touch_tab[]={ 61 61 {"Touch",1, 3 ,"T",}, … … 67 67 68 68 {0,0,0,},}; 69 addClass(new NeuroClass(NI_Touch_tab,"Touch and proximity sensor (Tc+Tp combined)\n-1=no contact\n0=just touching\n>0=pressing, value depends on the force applied (not implemented in ODE mode)",0,1,1, Touch_xy,false, 32, 3 ));70 71 static int TouchC_xy[]={43,2,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,11,75,50,65,50,60,55,55,45,50,55,45,45,40,50,35,50,30,45,25,50,30,55,35,50};69 addClass(new NeuroClass(NI_Touch_tab,"Touch and proximity sensor (Tc+Tp combined)\n-1=no contact\n0=just touching\n>0=pressing, value depends on the force applied (not implemented in ODE mode)",0,1,1, Touch_xy,false, 32, 3, 15)); 70 71 static int TouchC_xy[]={43,2,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,11,75,50,65,50,60,55,55,45,50,55,45,45,40,50,35,50,30,45,25,50,30,55,35,50}; 72 72 static ParamEntry NI_TouchC_tab[]={ 73 73 {"Touch contact",1, 0 ,"Tc",}, … … 76 76 77 77 {0,0,0,},}; 78 addClass(new NeuroClass(NI_TouchC_tab,"Touch sensor.\n-1=no contact\n0=the Part is touching the obstacle\n>0=pressing, value depends on the force applied (not implemented in ODE mode)",0,1,1, TouchC_xy,false, 32, 3 ));79 80 static int TouchP_xy[]={43,2,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,11,75,50,65,50,60,55,55,45,50,55,45,45,40,50,35,50,30,45,25,50,30,55,35,50};78 addClass(new NeuroClass(NI_TouchC_tab,"Touch sensor.\n-1=no contact\n0=the Part is touching the obstacle\n>0=pressing, value depends on the force applied (not implemented in ODE mode)",0,1,1, TouchC_xy,false, 32, 3, 15)); 79 80 static int TouchP_xy[]={43,2,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,11,75,50,65,50,60,55,55,45,50,55,45,45,40,50,35,50,30,45,25,50,30,55,35,50}; 81 81 static ParamEntry NI_TouchP_tab[]={ 82 82 {"Touch proximity",1, 3 ,"Tp",}, … … 88 88 89 89 {0,0,0,},}; 90 addClass(new NeuroClass(NI_TouchP_tab,"Proximity sensor detecting obstacles along the X axis.\n-1=distance is \r\' or more\n0=zero distance'",0,1,1, TouchP_xy,false, 32, 3 ));91 92 static int Smell_xy[]={64,5,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,3,10,40,15,45,15,55,10,60,5,20,30,25,35,30,45,30,55,25,65,20,70,4,15,35,20,40,22,50,20,60,15,65,5,75,50,50,50,45,45,40,50,45,55,50,50};90 addClass(new NeuroClass(NI_TouchP_tab,"Proximity sensor detecting obstacles along the X axis.\n-1=distance is \r\' or more\n0=zero distance'",0,1,1, TouchP_xy,false, 32, 3, 15)); 91 92 static int Smell_xy[]={64,5,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,3,10,40,15,45,15,55,10,60,5,20,30,25,35,30,45,30,55,25,65,20,70,4,15,35,20,40,22,50,20,60,15,65,5,75,50,50,50,45,45,40,50,45,55,50,50}; 93 93 static ParamEntry NI_Smell_tab[]={ 94 94 {"Smell",1, 0 ,"S",}, … … 97 97 98 98 {0,0,0,},}; 99 addClass(new NeuroClass(NI_Smell_tab,"Smell sensor. Aggregated \"smell of energy\" experienced from all energy objects (creatures and food pieces).\nClose objects have bigger influence than the distant ones: for each energy source, its partial feeling is proportional to its energy/(distance^2)",0,1,1, Smell_xy,false, 32, 3 ));100 101 static int Const_xy[]={29,4,4,26,27,26,73,73,73,73,27,26,27,1,73,50,100,50,1,56,68,46,68,2,41,47,51,32,51,68};99 addClass(new NeuroClass(NI_Smell_tab,"Smell sensor. Aggregated \"smell of energy\" experienced from all energy objects (creatures and food pieces).\nClose objects have bigger influence than the distant ones: for each energy source, its partial feeling is proportional to its energy/(distance^2)",0,1,1, Smell_xy,false, 32, 3, 15)); 100 101 static int Const_xy[]={29,4,4,26,27,26,73,73,73,73,27,26,27,1,73,50,100,50,1,56,68,46,68,2,41,47,51,32,51,68}; 102 102 static ParamEntry NI_Const_tab[]={ 103 103 {"Constant",1, 0 ,"*",}, … … 106 106 107 107 {0,0,0,},}; 108 addClass(new NeuroClass(NI_Const_tab,"Constant value",0,1,0, Const_xy,false, 1, 3 ));109 110 static int BendMuscle_xy[]={63,6,5,25,40,35,40,45,50,35,60,25,60,25,40,4,65,85,65,50,75,50,75,85,65,85,3,65,56,49,29,57,24,72,50,4,68,53,70,53,70,55,68,55,68,53,5,50,21,60,15,70,14,79,15,87,20,81,10,1,86,20,77,21};108 addClass(new NeuroClass(NI_Const_tab,"Constant value",0,1,0, Const_xy,false, 1, 3, 15)); 109 110 static int BendMuscle_xy[]={63,6,5,25,40,35,40,45,50,35,60,25,60,25,40,4,65,85,65,50,75,50,75,85,65,85,3,65,56,49,29,57,24,72,50,4,68,53,70,53,70,55,68,55,68,53,5,50,21,60,15,70,14,79,15,87,20,81,10,1,86,20,77,21}; 111 111 static ParamEntry NI_BendMuscle_tab[]={ 112 112 {"Bend muscle",1, 2 ,"|",}, … … 118 118 119 119 {0,0,0,},}; 120 addClass(new NeuroClass(NI_BendMuscle_tab,"",1,0,2, BendMuscle_xy,false, 2+16+64+4, 1 ));121 122 static int RotMuscle_xy[]={62,5,5,25,40,35,40,45,50,35,60,25,60,25,40,4,65,85,65,50,75,50,75,85,65,85,1,69,10,77,17,10,59,15,57,17,57,22,60,26,69,27,78,26,82,21,82,16,79,12,69,10,80,6,3,65,50,65,20,75,20,75,50};120 addClass(new NeuroClass(NI_BendMuscle_tab,"",1,0,2, BendMuscle_xy,false, 2+16+64+4, 1, 15)); 121 122 static int RotMuscle_xy[]={62,5,5,25,40,35,40,45,50,35,60,25,60,25,40,4,65,85,65,50,75,50,75,85,65,85,1,69,10,77,17,10,59,15,57,17,57,22,60,26,69,27,78,26,82,21,82,16,79,12,69,10,80,6,3,65,50,65,20,75,20,75,50}; 123 123 static ParamEntry NI_RotMuscle_tab[]={ 124 124 {"Rotation muscle",1, 1 ,"@",}, … … 129 129 130 130 {0,0,0,},}; 131 addClass(new NeuroClass(NI_RotMuscle_tab,"",1,0,2, RotMuscle_xy,false, 2+16+128+4, 1 ));132 133 static int SolidMuscle_xy[]={63,6,5,25,40,35,40,45,50,35,60,25,60,25,40,4,65,85,65,50,75,50,75,85,65,85,3,65,56,49,29,57,24,72,50,4,68,53,70,53,70,55,68,55,68,53,5,50,21,60,15,70,14,79,15,87,20,81,10,1,86,20,77,21};131 addClass(new NeuroClass(NI_RotMuscle_tab,"",1,0,2, RotMuscle_xy,false, 2+16+128+4, 1, 15)); 132 133 static int SolidMuscle_xy[]={63,6,5,25,40,35,40,45,50,35,60,25,60,25,40,4,65,85,65,50,75,50,75,85,65,85,3,65,56,49,29,57,24,72,50,4,68,53,70,53,70,55,68,55,68,53,5,50,21,60,15,70,14,79,15,87,20,81,10,1,86,20,77,21}; 134 134 static ParamEntry NI_SolidMuscle_tab[]={ 135 135 {"Muscle for solids",1, 2 ,"M",}, … … 137 137 138 138 139 139 140 {"p",0,0,"power","f 0.01 1.0 1.0",}, 140 141 {"a",0,0,"axis","d 0 1 0",}, 141 142 142 143 {0,0,0,},}; 143 addClass(new NeuroClass(NI_SolidMuscle_tab,"",1,0,2, SolidMuscle_xy,false, 16+4+512, 2 ));144 145 static int Diff_xy[]={24,3,3,25,0,25,100,75,50,25,0,1,75,50,100,50,3,44,42,51,57,36,57,44,42};144 addClass(new NeuroClass(NI_SolidMuscle_tab,"",1,0,2, SolidMuscle_xy,false, 16+4+512, 2, 4+8)); 145 146 static int Diff_xy[]={24,3,3,25,0,25,100,75,50,25,0,1,75,50,100,50,3,44,42,51,57,36,57,44,42}; 146 147 static ParamEntry NI_Diff_tab[]={ 147 148 {"Differentiate",1, 0 ,"D",}, … … 149 150 150 151 {0,0,0,},}; 151 addClass(new NeuroClass(NI_Diff_tab,"Calculate the difference between the current and previous input value. Multiple inputs are aggregated with respect to their weights",-1,1,0, Diff_xy,false, 0, 3 ));152 153 static int FuzzyNeuro_xy[]={44,5,2,30,65,37,37,44,65,3,37,65,44,37,51,37,58,65,2,51,65,58,37,65,65,6,100,50,70,50,70,25,25,10,25,90,70,75,70,50,1,70,65,25,65};152 addClass(new NeuroClass(NI_Diff_tab,"Calculate the difference between the current and previous input value. Multiple inputs are aggregated with respect to their weights",-1,1,0, Diff_xy,false, 0, 3, 15)); 153 154 static int FuzzyNeuro_xy[]={44,5,2,30,65,37,37,44,65,3,37,65,44,37,51,37,58,65,2,51,65,58,37,65,65,6,100,50,70,50,70,25,25,10,25,90,70,75,70,50,1,70,65,25,65}; 154 155 static ParamEntry NI_FuzzyNeuro_tab[]={ 155 156 {"Fuzzy system [EXPERIMENTAL!]",1, 4 ,"Fuzzy",}, … … 161 162 162 163 {0,0,0,},}; 163 addClass(new NeuroClass(NI_FuzzyNeuro_tab,"Refer to publications to learn more about this neuron.",-1,1,0, FuzzyNeuro_xy,false, 0, 3 ));164 165 164 addClass(new NeuroClass(NI_FuzzyNeuro_tab,"Refer to publications to learn more about this neuron.",-1,1,0, FuzzyNeuro_xy,false, 0, 3, 15)); 165 166 166 167 static ParamEntry NI_Sticky_tab[]={ 167 168 {"Sticky [EXPERIMENTAL!]",1, 0 ,"Sti",}, … … 170 171 171 172 {0,0,0,},}; 172 addClass(new NeuroClass(NI_Sticky_tab,"",1,0,1, NULL,false, 16, 1 ));173 174 173 addClass(new NeuroClass(NI_Sticky_tab,"",1,0,1, NULL,false, 16, 1, 15)); 174 175 175 176 static ParamEntry NI_LinearMuscle_tab[]={ 176 177 {"Linear muscle [EXPERIMENTAL!]",1, 1 ,"LMu",}, … … 180 181 181 182 {0,0,0,},}; 182 addClass(new NeuroClass(NI_LinearMuscle_tab,"",1,0,2, NULL,false, 16+256, 1 ));183 184 183 addClass(new NeuroClass(NI_LinearMuscle_tab,"",1,0,2, NULL,false, 16+256, 1, 15)); 184 185 185 186 static ParamEntry NI_WaterDetect_tab[]={ 186 187 {"Water detector",1, 0 ,"Water",}, … … 188 189 189 190 {0,0,0,},}; 190 addClass(new NeuroClass(NI_WaterDetect_tab,"Output signal:\n0=on or above water surface\n1=under water (deeper than 1)\n0..1=in the transient area just below water surface",0,1,1, NULL,false, 32, 3 ));191 192 191 addClass(new NeuroClass(NI_WaterDetect_tab,"Output signal:\n0=on or above water surface\n1=under water (deeper than 1)\n0..1=in the transient area just below water surface",0,1,1, NULL,false, 32, 3, 15)); 192 193 193 194 static ParamEntry NI_Energy_tab[]={ 194 195 {"Energy level",1, 0 ,"Energy",}, … … 196 197 197 198 {0,0,0,},}; 198 addClass(new NeuroClass(NI_Energy_tab,"The current energy level divided by the initial energy level.\nUsually falls from initial 1.0 down to 0.0 and then the creature dies. It can rise above 1.0 if enough food is ingested",0,1,0, NULL,false, 32, 3 ));199 200 static int Channelize_xy[]={57,10,4,25,0,25,100,75,70,75,30,25,0,1,75,50,100,50,1,70,50,55,50,1,30,80,55,50,1,30,20,55,50,1,30,35,55,50,1,30,45,55,50,1,30,55,55,50,1,61,53,65,47,1,30,65,55,50};199 addClass(new NeuroClass(NI_Energy_tab,"The current energy level divided by the initial energy level.\nUsually falls from initial 1.0 down to 0.0 and then the creature dies. It can rise above 1.0 if enough food is ingested",0,1,0, NULL,false, 32, 3, 15)); 200 201 static int Channelize_xy[]={57,10,4,25,0,25,100,75,70,75,30,25,0,1,75,50,100,50,1,70,50,55,50,1,30,80,55,50,1,30,20,55,50,1,30,35,55,50,1,30,45,55,50,1,30,55,55,50,1,61,53,65,47,1,30,65,55,50}; 201 202 static ParamEntry NI_Channelize_tab[]={ 202 203 {"Channelize",1, 0 ,"Ch",}, … … 204 205 205 206 {0,0,0,},}; 206 addClass(new NeuroClass(NI_Channelize_tab,"Combines all input signals into a single multichannel output; Note: ChSel and ChMux are the only neurons which support multiple channels. Other neurons discard everything except the first channel.",-1,1,0, Channelize_xy,false, 0, 3 ));207 208 static int ChMux_xy[]={52,7,4,25,0,25,100,75,70,75,30,25,0,1,75,50,100,50,1,70,50,55,50,3,50,55,55,50,50,45,50,55,3,30,67,45,67,45,50,50,50,1,35,70,39,64,2,30,33,53,33,53,48};207 addClass(new NeuroClass(NI_Channelize_tab,"Combines all input signals into a single multichannel output; Note: ChSel and ChMux are the only neurons which support multiple channels. Other neurons discard everything except the first channel.",-1,1,0, Channelize_xy,false, 0, 3, 15)); 208 209 static int ChMux_xy[]={52,7,4,25,0,25,100,75,70,75,30,25,0,1,75,50,100,50,1,70,50,55,50,3,50,55,55,50,50,45,50,55,3,30,67,45,67,45,50,50,50,1,35,70,39,64,2,30,33,53,33,53,48}; 209 210 static ParamEntry NI_ChMux_tab[]={ 210 211 {"Channel multiplexer",1, 0 ,"ChMux",}, … … 212 213 213 214 {0,0,0,},}; 214 addClass(new NeuroClass(NI_ChMux_tab,"Outputs the selected channel from the second (multichannel) input. The first input is used as the selector value (-1=select first channel, .., 1=last channel)",2,1,0, ChMux_xy,false, 0, 3 ));215 216 static int ChSel_xy[]={41,6,4,25,0,25,100,75,70,75,30,25,0,1,75,50,100,50,1,70,50,55,50,3,50,55,55,50,50,45,50,55,1,30,50,50,50,1,35,53,39,47};215 addClass(new NeuroClass(NI_ChMux_tab,"Outputs the selected channel from the second (multichannel) input. The first input is used as the selector value (-1=select first channel, .., 1=last channel)",2,1,0, ChMux_xy,false, 0, 3, 15)); 216 217 static int ChSel_xy[]={41,6,4,25,0,25,100,75,70,75,30,25,0,1,75,50,100,50,1,70,50,55,50,3,50,55,55,50,50,45,50,55,1,30,50,50,50,1,35,53,39,47}; 217 218 static ParamEntry NI_ChSel_tab[]={ 218 219 {"Channel selector",1, 1 ,"ChSel",}, … … 221 222 222 223 {0,0,0,},}; 223 addClass(new NeuroClass(NI_ChSel_tab,"Outputs a single channel (selected by the \"ch\" parameter) from multichannel input",1,1,0, ChSel_xy,false, 0, 3 ));224 225 224 addClass(new NeuroClass(NI_ChSel_tab,"Outputs a single channel (selected by the \"ch\" parameter) from multichannel input",1,1,0, ChSel_xy,false, 0, 3, 15)); 225 226 226 227 static ParamEntry NI_Random_tab[]={ 227 228 {"Random noise",1, 0 ,"Rnd",}, 228 229 229 230 {0,0,0,},}; 230 addClass(new NeuroClass(NI_Random_tab,"Generates random noise (subsequent random values in the range of -1..+1)",0,1,0, NULL,false, 0, 3 ));231 232 static int Sinus_xy[]={46,3,12,75,50,71,37,62,28,50,25,37,28,28,37,25,50,28,62,37,71,50,75,62,71,71,62,75,50,1,75,50,100,50,5,35,50,40,35,45,35,55,65,60,65,65,50};231 addClass(new NeuroClass(NI_Random_tab,"Generates random noise (subsequent random values in the range of -1..+1)",0,1,0, NULL,false, 0, 3, 15)); 232 233 static int Sinus_xy[]={46,3,12,75,50,71,37,62,28,50,25,37,28,28,37,25,50,28,62,37,71,50,75,62,71,71,62,75,50,1,75,50,100,50,5,35,50,40,35,45,35,55,65,60,65,65,50}; 233 234 static ParamEntry NI_Sinus_tab[]={ 234 235 {"Sinus generator",1, 2 ,"Sin",}, … … 238 239 239 240 {0,0,0,},}; 240 addClass(new NeuroClass(NI_Sinus_tab,"Output frequency = f0+input",1,1,0, Sinus_xy,false, 0, 3 ));241 addClass(new NeuroClass(NI_Sinus_tab,"Output frequency = f0+input",1,1,0, Sinus_xy,false, 0, 3, 15));
Note: See TracChangeset
for help on using the changeset viewer.