diff options
author | UbitUmarov | 2012-03-21 01:46:41 +0000 |
---|---|---|
committer | UbitUmarov | 2012-03-21 01:46:41 +0000 |
commit | 11ed932263161d1dbea99d4a5699ba6d00894053 (patch) | |
tree | 85e26ea10f899ff4a52b7a0c9000daa808cf8282 /OpenSim/Region/Physics/UbitOdePlugin | |
parent | add convex state to mesh key, so a change is detected. (diff) | |
download | opensim-SC_OLD-11ed932263161d1dbea99d4a5699ba6d00894053.zip opensim-SC_OLD-11ed932263161d1dbea99d4a5699ba6d00894053.tar.gz opensim-SC_OLD-11ed932263161d1dbea99d4a5699ba6d00894053.tar.bz2 opensim-SC_OLD-11ed932263161d1dbea99d4a5699ba6d00894053.tar.xz |
Tell physics about physics shape when creating. Added some virtual methods to get/set density,gravmod, frition,bounce and shape type ( not in use ). UbitOde now should do convex type on creation or everytime the mesh is changed ( as in change size, shape, etc )
Diffstat (limited to 'OpenSim/Region/Physics/UbitOdePlugin')
-rw-r--r-- | OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs | 14 | ||||
-rw-r--r-- | OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs | 32 |
2 files changed, 41 insertions, 5 deletions
diff --git a/OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs index 39b89d3..fd2f88f 100644 --- a/OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs | |||
@@ -163,7 +163,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
163 | public IntPtr collide_geom; // for objects: geom if single prim space it linkset | 163 | public IntPtr collide_geom; // for objects: geom if single prim space it linkset |
164 | 164 | ||
165 | private float m_density = 10.000006836f; // Aluminum g/cm3; | 165 | private float m_density = 10.000006836f; // Aluminum g/cm3; |
166 | 166 | private byte m_shapetype; | |
167 | public bool _zeroFlag; | 167 | public bool _zeroFlag; |
168 | private bool m_lastUpdateSent; | 168 | private bool m_lastUpdateSent; |
169 | 169 | ||
@@ -846,7 +846,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
846 | 846 | ||
847 | 847 | ||
848 | public OdePrim(String primName, OdeScene parent_scene, Vector3 pos, Vector3 size, | 848 | public OdePrim(String primName, OdeScene parent_scene, Vector3 pos, Vector3 size, |
849 | Quaternion rotation, PrimitiveBaseShape pbs, bool pisPhysical,bool pisPhantom,uint plocalID) | 849 | Quaternion rotation, PrimitiveBaseShape pbs, bool pisPhysical,bool pisPhantom,byte _shapeType,uint plocalID) |
850 | { | 850 | { |
851 | Name = primName; | 851 | Name = primName; |
852 | LocalID = plocalID; | 852 | LocalID = plocalID; |
@@ -920,6 +920,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
920 | hasOOBoffsetFromMesh = false; | 920 | hasOOBoffsetFromMesh = false; |
921 | _triMeshData = IntPtr.Zero; | 921 | _triMeshData = IntPtr.Zero; |
922 | 922 | ||
923 | m_shapetype = _shapeType; | ||
924 | |||
923 | m_lastdoneSelected = false; | 925 | m_lastdoneSelected = false; |
924 | m_isSelected = false; | 926 | m_isSelected = false; |
925 | m_delaySelect = false; | 927 | m_delaySelect = false; |
@@ -1050,7 +1052,13 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1050 | } | 1052 | } |
1051 | } | 1053 | } |
1052 | 1054 | ||
1053 | IMesh mesh = _parent_scene.mesher.CreateMesh(Name, _pbs, _size, (int)LevelOfDetail.High, true); | 1055 | bool convex; |
1056 | if (m_shapetype == 0) | ||
1057 | convex = false; | ||
1058 | else | ||
1059 | convex = true; | ||
1060 | |||
1061 | IMesh mesh = _parent_scene.mesher.CreateMesh(Name, _pbs, _size, (int)LevelOfDetail.High, true,convex); | ||
1054 | if (mesh == null) | 1062 | if (mesh == null) |
1055 | { | 1063 | { |
1056 | m_log.WarnFormat("[PHYSICS]: CreateMesh Failed on prim {0} at <{1},{2},{3}>.", Name, _position.X, _position.Y, _position.Z); | 1064 | m_log.WarnFormat("[PHYSICS]: CreateMesh Failed on prim {0} at <{1},{2},{3}>.", Name, _position.X, _position.Y, _position.Z); |
diff --git a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs index 612eafd..76d7746 100644 --- a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs +++ b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs | |||
@@ -1141,7 +1141,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1141 | OdePrim newPrim; | 1141 | OdePrim newPrim; |
1142 | lock (OdeLock) | 1142 | lock (OdeLock) |
1143 | { | 1143 | { |
1144 | newPrim = new OdePrim(name, this, pos, siz, rot, pbs, isphysical,false,localID); | 1144 | newPrim = new OdePrim(name, this, pos, siz, rot, pbs, isphysical,false,0,localID); |
1145 | 1145 | ||
1146 | lock (_prims) | 1146 | lock (_prims) |
1147 | _prims.Add(newPrim); | 1147 | _prims.Add(newPrim); |
@@ -1159,7 +1159,25 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1159 | OdePrim newPrim; | 1159 | OdePrim newPrim; |
1160 | lock (OdeLock) | 1160 | lock (OdeLock) |
1161 | { | 1161 | { |
1162 | newPrim = new OdePrim(name, this, pos, siz, rot, pbs, isphysical,isPhantom,localID); | 1162 | newPrim = new OdePrim(name, this, pos, siz, rot, pbs, isphysical, isPhantom, 0, localID); |
1163 | |||
1164 | lock (_prims) | ||
1165 | _prims.Add(newPrim); | ||
1166 | } | ||
1167 | return newPrim; | ||
1168 | } | ||
1169 | |||
1170 | private PhysicsActor AddPrim(String name, Vector3 position, Vector3 size, Quaternion rotation, | ||
1171 | PrimitiveBaseShape pbs, bool isphysical, bool isPhantom, byte shapeType, uint localID) | ||
1172 | { | ||
1173 | Vector3 pos = position; | ||
1174 | Vector3 siz = size; | ||
1175 | Quaternion rot = rotation; | ||
1176 | |||
1177 | OdePrim newPrim; | ||
1178 | lock (OdeLock) | ||
1179 | { | ||
1180 | newPrim = new OdePrim(name, this, pos, siz, rot, pbs, isphysical, isPhantom, shapeType, localID); | ||
1163 | 1181 | ||
1164 | lock (_prims) | 1182 | lock (_prims) |
1165 | _prims.Add(newPrim); | 1183 | _prims.Add(newPrim); |
@@ -1203,6 +1221,16 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1203 | return AddPrim(primName, position, size, rotation, pbs, isPhysical, localid); | 1221 | return AddPrim(primName, position, size, rotation, pbs, isPhysical, localid); |
1204 | } | 1222 | } |
1205 | 1223 | ||
1224 | public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, Vector3 position, | ||
1225 | Vector3 size, Quaternion rotation, bool isPhysical, bool isPhantom, byte shapeType, uint localid) | ||
1226 | { | ||
1227 | #if SPAM | ||
1228 | m_log.DebugFormat("[PHYSICS]: Adding physics actor to {0}", primName); | ||
1229 | #endif | ||
1230 | |||
1231 | return AddPrim(primName, position, size, rotation, pbs, isPhysical,isPhantom, shapeType, localid); | ||
1232 | } | ||
1233 | |||
1206 | public override float TimeDilation | 1234 | public override float TimeDilation |
1207 | { | 1235 | { |
1208 | get { return m_timeDilation; } | 1236 | get { return m_timeDilation; } |