diff options
Diffstat (limited to 'OpenSim/Region/Physics/OdePlugin/ODEPrim.cs')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | 109 |
1 files changed, 48 insertions, 61 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs index c91658e..123c8ff 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | |||
@@ -38,6 +38,9 @@ | |||
38 | * switch between 'VEHICLE' parameter use and general dynamics | 38 | * switch between 'VEHICLE' parameter use and general dynamics |
39 | * settings use. | 39 | * settings use. |
40 | */ | 40 | */ |
41 | |||
42 | //#define SPAM | ||
43 | |||
41 | using System; | 44 | using System; |
42 | using System.Collections.Generic; | 45 | using System.Collections.Generic; |
43 | using System.Reflection; | 46 | using System.Reflection; |
@@ -54,7 +57,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
54 | /// <summary> | 57 | /// <summary> |
55 | /// Various properties that ODE uses for AMotors but isn't exposed in ODE.NET so we must define them ourselves. | 58 | /// Various properties that ODE uses for AMotors but isn't exposed in ODE.NET so we must define them ourselves. |
56 | /// </summary> | 59 | /// </summary> |
57 | |||
58 | public class OdePrim : PhysicsActor | 60 | public class OdePrim : PhysicsActor |
59 | { | 61 | { |
60 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 62 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
@@ -279,14 +281,14 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
279 | 281 | ||
280 | public override bool Selected | 282 | public override bool Selected |
281 | { | 283 | { |
282 | set { | 284 | set |
283 | 285 | { | |
284 | |||
285 | // This only makes the object not collidable if the object | 286 | // This only makes the object not collidable if the object |
286 | // is physical or the object is modified somehow *IN THE FUTURE* | 287 | // is physical or the object is modified somehow *IN THE FUTURE* |
287 | // without this, if an avatar selects prim, they can walk right | 288 | // without this, if an avatar selects prim, they can walk right |
288 | // through it while it's selected | 289 | // through it while it's selected |
289 | m_collisionscore = 0; | 290 | m_collisionscore = 0; |
291 | |||
290 | if ((m_isphysical && !_zeroFlag) || !value) | 292 | if ((m_isphysical && !_zeroFlag) || !value) |
291 | { | 293 | { |
292 | m_taintselected = value; | 294 | m_taintselected = value; |
@@ -297,7 +299,9 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
297 | m_taintselected = value; | 299 | m_taintselected = value; |
298 | m_isSelected = value; | 300 | m_isSelected = value; |
299 | } | 301 | } |
300 | if (m_isSelected) disableBodySoft(); | 302 | |
303 | if (m_isSelected) | ||
304 | disableBodySoft(); | ||
301 | } | 305 | } |
302 | } | 306 | } |
303 | 307 | ||
@@ -324,8 +328,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
324 | //m_log.Warn("Setting Geom to: " + prim_geom); | 328 | //m_log.Warn("Setting Geom to: " + prim_geom); |
325 | } | 329 | } |
326 | 330 | ||
327 | |||
328 | |||
329 | public void enableBodySoft() | 331 | public void enableBodySoft() |
330 | { | 332 | { |
331 | if (!childPrim) | 333 | if (!childPrim) |
@@ -626,8 +628,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
626 | break; | 628 | break; |
627 | } | 629 | } |
628 | 630 | ||
629 | |||
630 | |||
631 | float taperX1; | 631 | float taperX1; |
632 | float taperY1; | 632 | float taperY1; |
633 | float taperX; | 633 | float taperX; |
@@ -682,9 +682,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
682 | // else if (returnMass > _parent_scene.maximumMassObject) | 682 | // else if (returnMass > _parent_scene.maximumMassObject) |
683 | // returnMass = _parent_scene.maximumMassObject; | 683 | // returnMass = _parent_scene.maximumMassObject; |
684 | 684 | ||
685 | |||
686 | |||
687 | |||
688 | // Recursively calculate mass | 685 | // Recursively calculate mass |
689 | bool HasChildPrim = false; | 686 | bool HasChildPrim = false; |
690 | lock (childrenPrim) | 687 | lock (childrenPrim) |
@@ -693,8 +690,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
693 | { | 690 | { |
694 | HasChildPrim = true; | 691 | HasChildPrim = true; |
695 | } | 692 | } |
696 | |||
697 | } | 693 | } |
694 | |||
698 | if (HasChildPrim) | 695 | if (HasChildPrim) |
699 | { | 696 | { |
700 | OdePrim[] childPrimArr = new OdePrim[0]; | 697 | OdePrim[] childPrimArr = new OdePrim[0]; |
@@ -711,10 +708,12 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
711 | break; | 708 | break; |
712 | } | 709 | } |
713 | } | 710 | } |
711 | |||
714 | if (returnMass > _parent_scene.maximumMassObject) | 712 | if (returnMass > _parent_scene.maximumMassObject) |
715 | returnMass = _parent_scene.maximumMassObject; | 713 | returnMass = _parent_scene.maximumMassObject; |
714 | |||
716 | return returnMass; | 715 | return returnMass; |
717 | }// end CalculateMass | 716 | } |
718 | 717 | ||
719 | #endregion | 718 | #endregion |
720 | 719 | ||
@@ -750,7 +749,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
750 | d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); | 749 | d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); |
751 | } | 750 | } |
752 | 751 | ||
753 | |||
754 | d.BodyDestroy(Body); | 752 | d.BodyDestroy(Body); |
755 | lock (childrenPrim) | 753 | lock (childrenPrim) |
756 | { | 754 | { |
@@ -779,7 +777,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
779 | d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); | 777 | d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); |
780 | } | 778 | } |
781 | 779 | ||
782 | |||
783 | Body = IntPtr.Zero; | 780 | Body = IntPtr.Zero; |
784 | } | 781 | } |
785 | } | 782 | } |
@@ -791,6 +788,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
791 | 788 | ||
792 | public void setMesh(OdeScene parent_scene, IMesh mesh) | 789 | public void setMesh(OdeScene parent_scene, IMesh mesh) |
793 | { | 790 | { |
791 | // m_log.DebugFormat("[ODE PRIM]: Setting mesh on {0} to {1}", Name, mesh); | ||
792 | |||
794 | // This sleeper is there to moderate how long it takes between | 793 | // This sleeper is there to moderate how long it takes between |
795 | // setting up the mesh and pre-processing it when we get rapid fire mesh requests on a single object | 794 | // setting up the mesh and pre-processing it when we get rapid fire mesh requests on a single object |
796 | 795 | ||
@@ -869,7 +868,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
869 | if (prim_geom != IntPtr.Zero) | 868 | if (prim_geom != IntPtr.Zero) |
870 | { | 869 | { |
871 | if (!_position.ApproxEquals(m_taintposition, 0f)) | 870 | if (!_position.ApproxEquals(m_taintposition, 0f)) |
872 | changemove(timestep); | 871 | changemove(timestep); |
873 | 872 | ||
874 | if (m_taintrot != _orientation) | 873 | if (m_taintrot != _orientation) |
875 | { | 874 | { |
@@ -887,19 +886,15 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
887 | rotate(timestep); | 886 | rotate(timestep); |
888 | } | 887 | } |
889 | } | 888 | } |
890 | // | ||
891 | 889 | ||
892 | if (m_taintPhysics != m_isphysical && !(m_taintparent != _parent)) | 890 | if (m_taintPhysics != m_isphysical && !(m_taintparent != _parent)) |
893 | changePhysicsStatus(timestep); | 891 | changePhysicsStatus(timestep); |
894 | // | ||
895 | 892 | ||
896 | if (!_size.ApproxEquals(m_taintsize,0f)) | 893 | if (!_size.ApproxEquals(m_taintsize, 0f)) |
897 | changesize(timestep); | 894 | changesize(timestep); |
898 | // | ||
899 | 895 | ||
900 | if (m_taintshape) | 896 | if (m_taintshape) |
901 | changeshape(timestep); | 897 | changeshape(timestep); |
902 | // | ||
903 | 898 | ||
904 | if (m_taintforce) | 899 | if (m_taintforce) |
905 | changeAddForce(timestep); | 900 | changeAddForce(timestep); |
@@ -927,7 +922,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
927 | 922 | ||
928 | if (!m_angularlock.ApproxEquals(m_taintAngularLock,0f)) | 923 | if (!m_angularlock.ApproxEquals(m_taintAngularLock,0f)) |
929 | changeAngularLock(timestep); | 924 | changeAngularLock(timestep); |
930 | |||
931 | } | 925 | } |
932 | else | 926 | else |
933 | { | 927 | { |
@@ -935,7 +929,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
935 | } | 929 | } |
936 | } | 930 | } |
937 | 931 | ||
938 | |||
939 | private void changeAngularLock(float timestep) | 932 | private void changeAngularLock(float timestep) |
940 | { | 933 | { |
941 | // do we have a Physical object? | 934 | // do we have a Physical object? |
@@ -963,7 +956,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
963 | } | 956 | } |
964 | // Store this for later in case we get turned into a separate body | 957 | // Store this for later in case we get turned into a separate body |
965 | m_angularlock = m_taintAngularLock; | 958 | m_angularlock = m_taintAngularLock; |
966 | |||
967 | } | 959 | } |
968 | 960 | ||
969 | private void changelink(float timestep) | 961 | private void changelink(float timestep) |
@@ -1102,7 +1094,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1102 | m_log.DebugFormat("[PHYSICS]: {0} ain't got no boooooooooddy, no body", Name); | 1094 | m_log.DebugFormat("[PHYSICS]: {0} ain't got no boooooooooddy, no body", Name); |
1103 | } | 1095 | } |
1104 | 1096 | ||
1105 | |||
1106 | prm.m_interpenetrationcount = 0; | 1097 | prm.m_interpenetrationcount = 0; |
1107 | prm.m_collisionscore = 0; | 1098 | prm.m_collisionscore = 0; |
1108 | prm.m_disabled = false; | 1099 | prm.m_disabled = false; |
@@ -1162,7 +1153,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1162 | } | 1153 | } |
1163 | } | 1154 | } |
1164 | } | 1155 | } |
1165 | |||
1166 | } | 1156 | } |
1167 | 1157 | ||
1168 | private void ChildSetGeom(OdePrim odePrim) | 1158 | private void ChildSetGeom(OdePrim odePrim) |
@@ -1223,17 +1213,12 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1223 | //Console.WriteLine("childrenPrim.Remove " + odePrim); | 1213 | //Console.WriteLine("childrenPrim.Remove " + odePrim); |
1224 | childrenPrim.Remove(odePrim); | 1214 | childrenPrim.Remove(odePrim); |
1225 | } | 1215 | } |
1226 | |||
1227 | |||
1228 | |||
1229 | 1216 | ||
1230 | if (Body != IntPtr.Zero) | 1217 | if (Body != IntPtr.Zero) |
1231 | { | 1218 | { |
1232 | _parent_scene.remActivePrim(this); | 1219 | _parent_scene.remActivePrim(this); |
1233 | } | 1220 | } |
1234 | 1221 | ||
1235 | |||
1236 | |||
1237 | lock (childrenPrim) | 1222 | lock (childrenPrim) |
1238 | { | 1223 | { |
1239 | foreach (OdePrim prm in childrenPrim) | 1224 | foreach (OdePrim prm in childrenPrim) |
@@ -1242,8 +1227,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1242 | ParentPrim(prm); | 1227 | ParentPrim(prm); |
1243 | } | 1228 | } |
1244 | } | 1229 | } |
1245 | |||
1246 | |||
1247 | } | 1230 | } |
1248 | 1231 | ||
1249 | private void changeSelectedStatus(float timestep) | 1232 | private void changeSelectedStatus(float timestep) |
@@ -1398,7 +1381,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1398 | } | 1381 | } |
1399 | } | 1382 | } |
1400 | } | 1383 | } |
1401 | |||
1402 | else | 1384 | else |
1403 | { | 1385 | { |
1404 | _parent_scene.waitForSpaceUnlock(m_targetSpace); | 1386 | _parent_scene.waitForSpaceUnlock(m_targetSpace); |
@@ -1438,10 +1420,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1438 | } | 1420 | } |
1439 | } | 1421 | } |
1440 | 1422 | ||
1441 | |||
1442 | lock (_parent_scene.OdeLock) | 1423 | lock (_parent_scene.OdeLock) |
1443 | { | 1424 | { |
1444 | //Console.WriteLine("changeadd 1"); | 1425 | #if SPAM |
1426 | Console.WriteLine("changeadd 1"); | ||
1427 | #endif | ||
1445 | CreateGeom(m_targetSpace, _mesh); | 1428 | CreateGeom(m_targetSpace, _mesh); |
1446 | 1429 | ||
1447 | if (prim_geom != IntPtr.Zero) | 1430 | if (prim_geom != IntPtr.Zero) |
@@ -1684,13 +1667,11 @@ Console.WriteLine(" JointCreateFixed"); | |||
1684 | { | 1667 | { |
1685 | PID_G = m_PIDTau + 1; | 1668 | PID_G = m_PIDTau + 1; |
1686 | } | 1669 | } |
1687 | |||
1688 | 1670 | ||
1689 | // Where are we, and where are we headed? | 1671 | // Where are we, and where are we headed? |
1690 | d.Vector3 pos = d.BodyGetPosition(Body); | 1672 | d.Vector3 pos = d.BodyGetPosition(Body); |
1691 | d.Vector3 vel = d.BodyGetLinearVel(Body); | 1673 | d.Vector3 vel = d.BodyGetLinearVel(Body); |
1692 | 1674 | ||
1693 | |||
1694 | // Non-Vehicles have a limited set of Hover options. | 1675 | // Non-Vehicles have a limited set of Hover options. |
1695 | // determine what our target height really is based on HoverType | 1676 | // determine what our target height really is based on HoverType |
1696 | switch (m_PIDHoverType) | 1677 | switch (m_PIDHoverType) |
@@ -1796,8 +1777,6 @@ Console.WriteLine(" JointCreateFixed"); | |||
1796 | } | 1777 | } |
1797 | } | 1778 | } |
1798 | 1779 | ||
1799 | |||
1800 | |||
1801 | public void rotate(float timestep) | 1780 | public void rotate(float timestep) |
1802 | { | 1781 | { |
1803 | d.Quaternion myrot = new d.Quaternion(); | 1782 | d.Quaternion myrot = new d.Quaternion(); |
@@ -1908,7 +1887,10 @@ Console.WriteLine(" JointCreateFixed"); | |||
1908 | 1887 | ||
1909 | public void changesize(float timestamp) | 1888 | public void changesize(float timestamp) |
1910 | { | 1889 | { |
1911 | 1890 | #if SPAM | |
1891 | m_log.DebugFormat("[ODE PRIM]: Called changesize"); | ||
1892 | #endif | ||
1893 | |||
1912 | string oldname = _parent_scene.geom_name_map[prim_geom]; | 1894 | string oldname = _parent_scene.geom_name_map[prim_geom]; |
1913 | 1895 | ||
1914 | if (_size.X <= 0) _size.X = 0.01f; | 1896 | if (_size.X <= 0) _size.X = 0.01f; |
@@ -1918,8 +1900,9 @@ Console.WriteLine(" JointCreateFixed"); | |||
1918 | // Cleanup of old prim geometry | 1900 | // Cleanup of old prim geometry |
1919 | if (_mesh != null) | 1901 | if (_mesh != null) |
1920 | { | 1902 | { |
1921 | // Cleanup meshing here | 1903 | // TODO: Cleanup meshing here |
1922 | } | 1904 | } |
1905 | |||
1923 | //kill body to rebuild | 1906 | //kill body to rebuild |
1924 | if (IsPhysical && Body != IntPtr.Zero) | 1907 | if (IsPhysical && Body != IntPtr.Zero) |
1925 | { | 1908 | { |
@@ -1936,11 +1919,13 @@ Console.WriteLine(" JointCreateFixed"); | |||
1936 | disableBody(); | 1919 | disableBody(); |
1937 | } | 1920 | } |
1938 | } | 1921 | } |
1922 | |||
1939 | if (d.SpaceQuery(m_targetSpace, prim_geom)) | 1923 | if (d.SpaceQuery(m_targetSpace, prim_geom)) |
1940 | { | 1924 | { |
1941 | _parent_scene.waitForSpaceUnlock(m_targetSpace); | 1925 | _parent_scene.waitForSpaceUnlock(m_targetSpace); |
1942 | d.SpaceRemove(m_targetSpace, prim_geom); | 1926 | d.SpaceRemove(m_targetSpace, prim_geom); |
1943 | } | 1927 | } |
1928 | |||
1944 | d.GeomDestroy(prim_geom); | 1929 | d.GeomDestroy(prim_geom); |
1945 | prim_geom = IntPtr.Zero; | 1930 | prim_geom = IntPtr.Zero; |
1946 | // we don't need to do space calculation because the client sends a position update also. | 1931 | // we don't need to do space calculation because the client sends a position update also. |
@@ -1960,15 +1945,19 @@ Console.WriteLine(" JointCreateFixed"); | |||
1960 | mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical); | 1945 | mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical); |
1961 | 1946 | ||
1962 | //IMesh mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical); | 1947 | //IMesh mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical); |
1963 | //Console.WriteLine("changesize 1"); | 1948 | #if SPAM |
1949 | Console.WriteLine("changesize 1"); | ||
1950 | #endif | ||
1964 | CreateGeom(m_targetSpace, mesh); | 1951 | CreateGeom(m_targetSpace, mesh); |
1965 | |||
1966 | |||
1967 | } | 1952 | } |
1968 | else | 1953 | else |
1969 | { | 1954 | { |
1970 | _mesh = null; | 1955 | _mesh = null; |
1971 | //Console.WriteLine("changesize 2"); | 1956 | |
1957 | #if SPAM | ||
1958 | Console.WriteLine("changesize 2"); | ||
1959 | #endif | ||
1960 | |||
1972 | CreateGeom(m_targetSpace, _mesh); | 1961 | CreateGeom(m_targetSpace, _mesh); |
1973 | } | 1962 | } |
1974 | 1963 | ||
@@ -2004,8 +1993,6 @@ Console.WriteLine(" JointCreateFixed"); | |||
2004 | m_taintsize = _size; | 1993 | m_taintsize = _size; |
2005 | } | 1994 | } |
2006 | 1995 | ||
2007 | |||
2008 | |||
2009 | public void changefloatonwater(float timestep) | 1996 | public void changefloatonwater(float timestep) |
2010 | { | 1997 | { |
2011 | m_collidesWater = m_taintCollidesWater; | 1998 | m_collidesWater = m_taintCollidesWater; |
@@ -2053,6 +2040,7 @@ Console.WriteLine(" JointCreateFixed"); | |||
2053 | prim_geom = IntPtr.Zero; | 2040 | prim_geom = IntPtr.Zero; |
2054 | m_log.ErrorFormat("[PHYSICS]: PrimGeom dead for {0}", Name); | 2041 | m_log.ErrorFormat("[PHYSICS]: PrimGeom dead for {0}", Name); |
2055 | } | 2042 | } |
2043 | |||
2056 | prim_geom = IntPtr.Zero; | 2044 | prim_geom = IntPtr.Zero; |
2057 | // we don't need to do space calculation because the client sends a position update also. | 2045 | // we don't need to do space calculation because the client sends a position update also. |
2058 | if (_size.X <= 0) _size.X = 0.01f; | 2046 | if (_size.X <= 0) _size.X = 0.01f; |
@@ -2062,7 +2050,7 @@ Console.WriteLine(" JointCreateFixed"); | |||
2062 | 2050 | ||
2063 | if (_parent_scene.needsMeshing(_pbs)) | 2051 | if (_parent_scene.needsMeshing(_pbs)) |
2064 | { | 2052 | { |
2065 | // Don't need to re-enable body.. it's done in SetMesh | 2053 | // Don't need to re-enable body.. it's done in CreateMesh |
2066 | float meshlod = _parent_scene.meshSculptLOD; | 2054 | float meshlod = _parent_scene.meshSculptLOD; |
2067 | 2055 | ||
2068 | if (IsPhysical) | 2056 | if (IsPhysical) |
@@ -2070,12 +2058,18 @@ Console.WriteLine(" JointCreateFixed"); | |||
2070 | 2058 | ||
2071 | IMesh mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical); | 2059 | IMesh mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical); |
2072 | // createmesh returns null when it doesn't mesh. | 2060 | // createmesh returns null when it doesn't mesh. |
2061 | #if SPAM | ||
2062 | Console.WriteLine("changeshape needed meshing"); | ||
2063 | #endif | ||
2073 | CreateGeom(m_targetSpace, mesh); | 2064 | CreateGeom(m_targetSpace, mesh); |
2074 | } | 2065 | } |
2075 | else | 2066 | else |
2076 | { | 2067 | { |
2077 | _mesh = null; | 2068 | _mesh = null; |
2078 | //Console.WriteLine("changeshape"); | 2069 | |
2070 | #if SPAM | ||
2071 | Console.WriteLine("changeshape not need meshing"); | ||
2072 | #endif | ||
2079 | CreateGeom(m_targetSpace, null); | 2073 | CreateGeom(m_targetSpace, null); |
2080 | } | 2074 | } |
2081 | 2075 | ||
@@ -2110,6 +2104,7 @@ Console.WriteLine(" JointCreateFixed"); | |||
2110 | parent.ChildSetGeom(this); | 2104 | parent.ChildSetGeom(this); |
2111 | } | 2105 | } |
2112 | } | 2106 | } |
2107 | |||
2113 | resetCollisionAccounting(); | 2108 | resetCollisionAccounting(); |
2114 | m_taintshape = false; | 2109 | m_taintshape = false; |
2115 | } | 2110 | } |
@@ -2160,11 +2155,8 @@ Console.WriteLine(" JointCreateFixed"); | |||
2160 | } | 2155 | } |
2161 | 2156 | ||
2162 | m_taintforce = false; | 2157 | m_taintforce = false; |
2163 | |||
2164 | } | 2158 | } |
2165 | 2159 | ||
2166 | |||
2167 | |||
2168 | public void changeSetTorque(float timestamp) | 2160 | public void changeSetTorque(float timestamp) |
2169 | { | 2161 | { |
2170 | if (!m_isSelected) | 2162 | if (!m_isSelected) |
@@ -2352,7 +2344,7 @@ Console.WriteLine(" JointCreateFixed"); | |||
2352 | { | 2344 | { |
2353 | lock (_parent_scene.OdeLock) | 2345 | lock (_parent_scene.OdeLock) |
2354 | { | 2346 | { |
2355 | m_isVolumeDetect = (param!=0); | 2347 | m_isVolumeDetect = (param != 0); |
2356 | } | 2348 | } |
2357 | } | 2349 | } |
2358 | 2350 | ||
@@ -2833,7 +2825,6 @@ Console.WriteLine(" JointCreateFixed"); | |||
2833 | 2825 | ||
2834 | public override float APIDDamping{ set { return; } } | 2826 | public override float APIDDamping{ set { return; } } |
2835 | 2827 | ||
2836 | |||
2837 | private void createAMotor(Vector3 axis) | 2828 | private void createAMotor(Vector3 axis) |
2838 | { | 2829 | { |
2839 | if (Body == IntPtr.Zero) | 2830 | if (Body == IntPtr.Zero) |
@@ -2953,7 +2944,6 @@ Console.WriteLine(" JointCreateFixed"); | |||
2953 | //d.JointSetAMotorParam(Amotor, (int) dParam.Vel, 9000f); | 2944 | //d.JointSetAMotorParam(Amotor, (int) dParam.Vel, 9000f); |
2954 | d.JointSetAMotorParam(Amotor, (int)dParam.FudgeFactor, 0f); | 2945 | d.JointSetAMotorParam(Amotor, (int)dParam.FudgeFactor, 0f); |
2955 | d.JointSetAMotorParam(Amotor, (int)dParam.FMax, Mass * 50f);// | 2946 | d.JointSetAMotorParam(Amotor, (int)dParam.FMax, Mass * 50f);// |
2956 | |||
2957 | } | 2947 | } |
2958 | 2948 | ||
2959 | public Matrix4 FromDMass(d.Mass pMass) | 2949 | public Matrix4 FromDMass(d.Mass pMass) |
@@ -3038,8 +3028,6 @@ Console.WriteLine(" JointCreateFixed"); | |||
3038 | return Matrix4.Identity; // should probably throw an error. singluar matrix inverse not possible | 3028 | return Matrix4.Identity; // should probably throw an error. singluar matrix inverse not possible |
3039 | } | 3029 | } |
3040 | 3030 | ||
3041 | |||
3042 | |||
3043 | return (Adjoint(pMat) / determinant3x3(pMat)); | 3031 | return (Adjoint(pMat) / determinant3x3(pMat)); |
3044 | } | 3032 | } |
3045 | 3033 | ||
@@ -3076,6 +3064,7 @@ Console.WriteLine(" JointCreateFixed"); | |||
3076 | } | 3064 | } |
3077 | m++; | 3065 | m++; |
3078 | } | 3066 | } |
3067 | |||
3079 | return minor; | 3068 | return minor; |
3080 | } | 3069 | } |
3081 | 3070 | ||
@@ -3178,7 +3167,6 @@ Console.WriteLine(" JointCreateFixed"); | |||
3178 | 3167 | ||
3179 | det = diag1 + diag2 + diag3 - (diag4 + diag5 + diag6); | 3168 | det = diag1 + diag2 + diag3 - (diag4 + diag5 + diag6); |
3180 | return det; | 3169 | return det; |
3181 | |||
3182 | } | 3170 | } |
3183 | 3171 | ||
3184 | private static void DMassCopy(ref d.Mass src, ref d.Mass dst) | 3172 | private static void DMassCopy(ref d.Mass src, ref d.Mass dst) |
@@ -3203,6 +3191,5 @@ Console.WriteLine(" JointCreateFixed"); | |||
3203 | { | 3191 | { |
3204 | m_material = pMaterial; | 3192 | m_material = pMaterial; |
3205 | } | 3193 | } |
3206 | |||
3207 | } | 3194 | } |
3208 | } | 3195 | } |