Index: cpp/frams/config/f0def.xml
===================================================================
--- cpp/frams/config/f0def.xml	(revision 1186)
+++ cpp/frams/config/f0def.xml	(revision 1187)
@@ -6,5 +6,5 @@
   <GROUP NAME="Visual" />
   <PROP ID="se" NAME="startenergy" GROUP="0" FLAGS="1024" TYPE="f" />
-  <PROP ID="Vstyle" NAME="vis_style" GROUP="1" FLAGS="0" TYPE="s" MIN="0" MAX="-1" />
+  <PROP ID="Vstyle" NAME="Visual style" GROUP="1" FLAGS="0" TYPE="s" MIN="0" MAX="-1" />
  </CLASS>
 
@@ -16,11 +16,10 @@
   <PROP ID="y" NAME="position.y" GROUP="0" FLAGS="1024" TYPE="f" />
   <PROP ID="z" NAME="position.z" GROUP="0" FLAGS="1024" TYPE="f" />
-  <PROP ID="m" XTRA="1" NAME="mass" GROUP="1" FLAGS="0" TYPE="f" MIN="0.1" MAX="999.0" DEF="1.0" />
-  <PROP ID="sh" NAME="shape" GROUP="1" FLAGS="0" TYPE="d" MIN="0" MAX="3" DEF="0" />
-  <PROP ID="s" NAME="size" GROUP="1" FLAGS="0" TYPE="f" MIN="0.1" MAX="10.0" DEF="1.0" />
-  <PROP ID="sx" NAME="scale.x" GROUP="1" FLAGS="0" TYPE="f" MIN="0.001" MAX="1000.0" DEF="1.0" />
-  <PROP ID="sy" NAME="scale.y" GROUP="1" FLAGS="0" TYPE="f" MIN="0.001" MAX="1000.0" DEF="1.0" />
-  <PROP ID="sz" NAME="scale.z" GROUP="1" FLAGS="0" TYPE="f" MIN="0.001" MAX="1000.0" DEF="1.0" />
-  <PROP ID="h" NAME="hollow" GROUP="1" FLAGS="0" TYPE="f" MIN="0" MAX="1" DEF="0" />
+  <PROP ID="sh" NAME="shape" GROUP="0" FLAGS="0" TYPE="d" MIN="0" MAX="3" DEF="0" />
+  <PROP ID="s" NAME="size" GROUP="0" FLAGS="0" TYPE="f" MIN="0.1" MAX="10.0" DEF="1.0" />
+  <PROP ID="sx" NAME="scale.x" GROUP="0" FLAGS="0" TYPE="f" MIN="0.05" MAX="5.0" DEF="1.0" />
+  <PROP ID="sy" NAME="scale.y" GROUP="0" FLAGS="0" TYPE="f" MIN="0.05" MAX="5.0" DEF="1.0" />
+  <PROP ID="sz" NAME="scale.z" GROUP="0" FLAGS="0" TYPE="f" MIN="0.05" MAX="5.0" DEF="1.0" />
+  <PROP ID="h" XTRA="1" NAME="hollow" GROUP="1" FLAGS="0" TYPE="f" MIN="0" MAX="1" DEF="0" />
   <PROP ID="dn" XTRA="1" NAME="density" GROUP="1" FLAGS="0" TYPE="f" MIN="0.2" MAX="5.0" DEF="1.0" />
   <PROP ID="fr" XTRA="1" NAME="friction" GROUP="1" FLAGS="0" TYPE="f" MIN="0.0" MAX="4.0" DEF="0.4" />
@@ -31,9 +30,13 @@
   <PROP ID="rz" NAME="rot.z" GROUP="0" FLAGS="1024" TYPE="f" />
   <PROP ID="i" NAME="info" GROUP="1" FLAGS="0" TYPE="s" />
-  <PROP ID="Vstyle" NAME="vis_style" GROUP="2" FLAGS="0" TYPE="s" MIN="0" MAX="-1" DEF="part" />
-  <PROP ID="vs" XTRA="1" NAME="visual thickness" GROUP="2" FLAGS="0" TYPE="f" MIN="0.05" MAX="0.7" DEF="0.2" />
+  <PROP ID="Vstyle" NAME="Visual style" GROUP="2" FLAGS="0" TYPE="s" MIN="0" MAX="-1" DEF="part" />
   <PROP ID="vr" XTRA="1" NAME="red component" GROUP="2" FLAGS="0" TYPE="f" MIN="0.0" MAX="1.0" DEF="0.5" />
   <PROP ID="vg" XTRA="1" NAME="green component" GROUP="2" FLAGS="1024" TYPE="f" MIN="0.0" MAX="1.0" DEF="0.5" />
   <PROP ID="vb" XTRA="1" NAME="blue component" GROUP="2" FLAGS="1024" TYPE="f" MIN="0.0" MAX="1.0" DEF="0.5" />
+ </CLASS>
+
+ <CLASS ID="p" NAME="Part_MinMaxDef">
+  <GROUP NAME="Geometry" />
+  <PROP ID="f" NAME="volume" GROUP="0" FLAGS="0" TYPE="f" MIN="0.83776" MAX="20.94395" DEF="4.18879" />
  </CLASS>
 
@@ -51,10 +54,20 @@
   <PROP ID="dy" NAME="delta.y" GROUP="1" FLAGS="1024" TYPE="f" MIN="-2" MAX="2" DEF="0" />
   <PROP ID="dz" NAME="delta.z" GROUP="1" FLAGS="1024" TYPE="f" MIN="-2" MAX="2" DEF="0" />
-  <PROP ID="sh" NAME="shape" GROUP="2" FLAGS="0" TYPE="d" MIN="0" MAX="1" DEF="0" />
+  <PROP ID="sh" NAME="shape" GROUP="1" FLAGS="0" TYPE="d" MIN="0" MAX="3" DEF="0" />
+  <PROP ID="hx" NAME="hinge position.x" GROUP="1" FLAGS="0" TYPE="f" DEF="0" />
+  <PROP ID="hy" NAME="hinge position.y" GROUP="1" FLAGS="1024" TYPE="f" DEF="0" />
+  <PROP ID="hz" NAME="hinge position.z" GROUP="1" FLAGS="1024" TYPE="f" DEF="0" />
+  <PROP ID="hrx" NAME="hinge rotation.x" GROUP="1" FLAGS="0" TYPE="f" DEF="0" />
+  <PROP ID="hry" NAME="hinge rotation.y" GROUP="1" FLAGS="1024" TYPE="f" DEF="0" />
+  <PROP ID="hrz" NAME="hinge rotation.z" GROUP="1" FLAGS="1024" TYPE="f" DEF="0" />
+  <PROP ID="hxn" NAME="hinge x negative limit" GROUP="1" FLAGS="0" TYPE="f" MIN="-6.2832" MAX="0" DEF="-1.5708" />
+  <PROP ID="hxp" NAME="hinge x positive limit" GROUP="1" FLAGS="1024" TYPE="f" MIN="0" MAX="6.2832" DEF="1.5708" />
+  <PROP ID="hyn" NAME="hinge y negative limit" GROUP="1" FLAGS="0" TYPE="f" MIN="-6.2832" MAX="0" DEF="-1.5708" />
+  <PROP ID="hyp" NAME="hinge y positive limit" GROUP="1" FLAGS="1024" TYPE="f" MIN="0" MAX="6.2832" DEF="1.5708" />
   <PROP ID="stif" XTRA="1" NAME="stiffness" GROUP="2" FLAGS="0" TYPE="f" MIN="0.0" MAX="1.0" DEF="1.0" />
   <PROP ID="rotstif" XTRA="1" NAME="rotation stiffness" GROUP="2" FLAGS="0" TYPE="f" MIN="0.0" MAX="1.0" DEF="1.0" />
   <PROP ID="stam" NAME="stamina" GROUP="2" FLAGS="0" TYPE="f" MIN="0.0" MAX="1.0" DEF="0.25" />
   <PROP ID="i" NAME="info" GROUP="2" FLAGS="0" TYPE="s" />
-  <PROP ID="Vstyle" NAME="vis_style" GROUP="3" FLAGS="0" TYPE="s" MIN="0" MAX="-1" DEF="joint" />
+  <PROP ID="Vstyle" NAME="Visual style" GROUP="3" FLAGS="0" TYPE="s" MIN="0" MAX="-1" DEF="joint" />
   <PROP ID="vr" XTRA="1" NAME="red component" GROUP="3" FLAGS="0" TYPE="f" MIN="0.0" MAX="1.0" DEF="0.5" />
   <PROP ID="vg" XTRA="1" NAME="green component" GROUP="3" FLAGS="1024" TYPE="f" MIN="0.0" MAX="1.0" DEF="0.5" />
@@ -72,10 +85,10 @@
   <PROP ID="d" NAME="details" GROUP="1" FLAGS="0" TYPE="s" DEF="N" />
   <PROP ID="i" NAME="info" GROUP="1" FLAGS="0" TYPE="s" />
-  <PROP ID="Vstyle" NAME="vis_style" GROUP="2" FLAGS="0" TYPE="s" MIN="0" MAX="-1" DEF="neuro" />
+  <PROP ID="Vstyle" NAME="Visual style" GROUP="2" FLAGS="0" TYPE="s" MIN="0" MAX="-1" DEF="neuro" />
   <PROP ID="getInputCount" NAME="input count" GROUP="0" FLAGS="1+2" TYPE="d" />
-  <PROP ID="getInputNeuroDef" NAME="get input neuron" GROUP="0" FLAGS="1+2" TYPE="p oNeuroDef(d)" />
-  <PROP ID="getInputNeuroIndex" NAME="get input neuron index" GROUP="0" FLAGS="1+2" TYPE="p d(d)" />
-  <PROP ID="getInputWeight" NAME="get input weight" GROUP="0" FLAGS="1+2" TYPE="p f(d)" />
-  <PROP ID="classObject" NAME="neuron class" GROUP="0" FLAGS="1+2" TYPE="o NeuroClass" />
+  <PROP ID="getInputNeuroDef" NAME="get input neuron" GROUP="0" FLAGS="0" TYPE="p oNeuroDef(d)" />
+  <PROP ID="getInputNeuroIndex" NAME="get input neuron index" GROUP="0" FLAGS="0" TYPE="p d(d)" />
+  <PROP ID="getInputWeight" NAME="get input weight" GROUP="0" FLAGS="0" TYPE="p f(d)" />
+  <PROP ID="classObject" NAME="neuron class" GROUP="0" FLAGS="1+2" TYPE="oNeuroClass" />
  </CLASS>
 
@@ -104,13 +117,36 @@
  </NEUROCLASS>
 
- <NEUROCLASS ID="G" NAME="Gyroscope" DESCRIPTION="Equilibrium sensor.\n0=the stick is horizontal\n+1/-1=the stick is vertical" INPUTS="0" OUTPUT="1" LOCATION="2"  VISUALHINTS="32"  SYMBOL="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"  >
-
-
- </NEUROCLASS>
-
- <NEUROCLASS ID="T" NAME="Touch" DESCRIPTION="Touch sensor.\n-1=no contact\n0=just touching\n>0=pressing, value depends on the force applied" INPUTS="0" OUTPUT="1" LOCATION="1"  VISUALHINTS="32"  SYMBOL="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"  >
+ <NEUROCLASS ID="G" NAME="Gyroscope" DESCRIPTION="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" INPUTS="0" OUTPUT="1" LOCATION="2"  SHAPETYPE="1"  VISUALHINTS="32"  SYMBOL="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"  >
+
+
+
+ </NEUROCLASS>
+
+ <NEUROCLASS ID="Gpart" NAME="Part Gyroscope" DESCRIPTION="Tilt sensor. Signal is directly proportional to the tilt angle.\n0=the part X axis is horizontal\n+1/-1=the axis is vertical" INPUTS="0" OUTPUT="1" LOCATION="1"  VISUALHINTS="32"  SYMBOL="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"  >
+
+
+  <NEUROPROP ID="ry" NAME="rotation.y" TYPE="f" MIN="-6.282" MAX="6.282" DEF="0" />
+  <NEUROPROP ID="rz" NAME="rotation.z" TYPE="f" MIN="-6.282" MAX="6.282" DEF="0" />
+ </NEUROCLASS>
+
+ <NEUROCLASS ID="T" NAME="Touch" DESCRIPTION="Touch and proximity sensor (Tcontact and Tproximity combined)\n-1=no contact\n0=just touching\n>0=pressing, value depends on the force applied (not implemented in ODE mode)" INPUTS="0" OUTPUT="1" LOCATION="1"  VISUALHINTS="32"  SYMBOL="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"  >
 
 
   <NEUROPROP ID="r" NAME="Range" TYPE="f" MIN="0.0" MAX="1.0" DEF="1.0" />
+  <NEUROPROP ID="ry" NAME="rotation.y" TYPE="f" MIN="-6.282" MAX="6.282" DEF="0" />
+  <NEUROPROP ID="rz" NAME="rotation.z" TYPE="f" MIN="-6.282" MAX="6.282" DEF="0" />
+ </NEUROCLASS>
+
+ <NEUROCLASS ID="Tcontact" NAME="Touch contact" DESCRIPTION="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)" INPUTS="0" OUTPUT="1" LOCATION="1"  VISUALHINTS="32"  SYMBOL="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"  >
+
+
+ </NEUROCLASS>
+
+ <NEUROCLASS ID="Tproximity" NAME="Touch proximity" DESCRIPTION="Proximity sensor detecting obstacles along the X axis.\n-1=distance is &quot;r&quot; or more\n0=zero distance" INPUTS="0" OUTPUT="1" LOCATION="1"  VISUALHINTS="32"  SYMBOL="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"  >
+
+
+  <NEUROPROP ID="r" NAME="Range" TYPE="f" MIN="0.0" MAX="1.0" DEF="1.0" />
+  <NEUROPROP ID="ry" NAME="rotation.y" TYPE="f" MIN="-6.282" MAX="6.282" DEF="0" />
+  <NEUROPROP ID="rz" NAME="rotation.z" TYPE="f" MIN="-6.282" MAX="6.282" DEF="0" />
  </NEUROCLASS>
 
@@ -125,15 +161,26 @@
  </NEUROCLASS>
 
- <NEUROCLASS ID="|" NAME="Bend muscle" DESCRIPTION="" INPUTS="1" OUTPUT="0" LOCATION="2"  VISUALHINTS="86"  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"  >
-
-
-  <NEUROPROP ID="p" NAME="power" TYPE="f" MIN="0.01" MAX="1.0" DEF="0.25" />
+ <NEUROCLASS ID="|" NAME="Bend muscle" DESCRIPTION="" INPUTS="1" OUTPUT="0" LOCATION="2"  SHAPETYPE="1"  VISUALHINTS="86"  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"  >
+
+
+
+  <NEUROPROP ID="p" NAME="power" TYPE="f" MIN="0.0" MAX="1.0" DEF="0.25" />
   <NEUROPROP ID="r" NAME="bending range" TYPE="f" MIN="0.0" MAX="1.0" DEF="1.0" />
  </NEUROCLASS>
 
- <NEUROCLASS ID="@" NAME="Rotation muscle" DESCRIPTION="" INPUTS="1" OUTPUT="0" LOCATION="2"  VISUALHINTS="150"  SYMBOL="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"  >
-
-
-  <NEUROPROP ID="p" NAME="power" TYPE="f" MIN="0.01" MAX="1.0" DEF="1.0" />
+ <NEUROCLASS ID="@" NAME="Rotation muscle" DESCRIPTION="" INPUTS="1" OUTPUT="0" LOCATION="2"  SHAPETYPE="1"  VISUALHINTS="150"  SYMBOL="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"  >
+
+
+
+  <NEUROPROP ID="p" NAME="power" TYPE="f" MIN="0.0" MAX="1.0" DEF="1.0" />
+ </NEUROCLASS>
+
+ <NEUROCLASS ID="M" NAME="Muscle for solids" DESCRIPTION="" INPUTS="1" OUTPUT="0" LOCATION="2"  SHAPETYPE="2"  JOINTTYPE="12"  VISUALHINTS="532"  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"  >
+
+
+
+
+  <NEUROPROP ID="p" NAME="power" TYPE="f" MIN="0.0" MAX="1.0" DEF="1.0" />
+  <NEUROPROP ID="a" NAME="axis" TYPE="d" MIN="0" MAX="1" DEF="0" />
  </NEUROCLASS>
 
@@ -169,9 +216,11 @@
  </NEUROCLASS> 
 
- <NEUROCLASS ID="Sti" NAME="Sticky [EXPERIMENTAL!]" DESCRIPTION="" INPUTS="1" OUTPUT="0" LOCATION="1"  VISUALHINTS="16"  >
-
- </NEUROCLASS>
-
- <NEUROCLASS ID="LMu" NAME="Linear muscle [EXPERIMENTAL!]" DESCRIPTION="" INPUTS="1" OUTPUT="0" LOCATION="2"  VISUALHINTS="272"  >
+ <NEUROCLASS ID="Sti" NAME="Sticky [EXPERIMENTAL!]" DESCRIPTION="" INPUTS="1" OUTPUT="0" LOCATION="1"  SHAPETYPE="1"  VISUALHINTS="16"  >
+
+
+ </NEUROCLASS>
+
+ <NEUROCLASS ID="LMu" NAME="Linear muscle [EXPERIMENTAL!]" DESCRIPTION="" INPUTS="1" OUTPUT="0" LOCATION="2"  SHAPETYPE="1"  VISUALHINTS="272"  >
+
 
   <NEUROPROP ID="p" NAME="power" TYPE="f" MIN="0.01" MAX="1.0" DEF="1.0" />
