diff options
Diffstat (limited to 'OpenSim/Region/Physics/Manager')
-rw-r--r-- | OpenSim/Region/Physics/Manager/IMesher.cs | 27 | ||||
-rw-r--r-- | OpenSim/Region/Physics/Manager/PhysicsActor.cs | 221 | ||||
-rw-r--r-- | OpenSim/Region/Physics/Manager/PhysicsScene.cs | 72 | ||||
-rw-r--r-- | OpenSim/Region/Physics/Manager/VehicleConstants.cs | 45 | ||||
-rw-r--r-- | OpenSim/Region/Physics/Manager/ZeroMesher.cs | 14 |
5 files changed, 288 insertions, 91 deletions
diff --git a/OpenSim/Region/Physics/Manager/IMesher.cs b/OpenSim/Region/Physics/Manager/IMesher.cs index 3a9ca1b..ecc2918 100644 --- a/OpenSim/Region/Physics/Manager/IMesher.cs +++ b/OpenSim/Region/Physics/Manager/IMesher.cs | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Runtime.InteropServices; | ||
30 | using OpenSim.Framework; | 31 | using OpenSim.Framework; |
31 | using OpenMetaverse; | 32 | using OpenMetaverse; |
32 | 33 | ||
@@ -36,6 +37,11 @@ namespace OpenSim.Region.Physics.Manager | |||
36 | { | 37 | { |
37 | IMesh CreateMesh(String primName, PrimitiveBaseShape primShape, Vector3 size, float lod); | 38 | IMesh CreateMesh(String primName, PrimitiveBaseShape primShape, Vector3 size, float lod); |
38 | IMesh CreateMesh(String primName, PrimitiveBaseShape primShape, Vector3 size, float lod, bool isPhysical); | 39 | IMesh CreateMesh(String primName, PrimitiveBaseShape primShape, Vector3 size, float lod, bool isPhysical); |
40 | IMesh CreateMesh(String primName, PrimitiveBaseShape primShape, Vector3 size, float lod, bool isPhysical, bool convex, bool forOde); | ||
41 | IMesh GetMesh(String primName, PrimitiveBaseShape primShape, Vector3 size, float lod, bool isPhysical, bool convex); | ||
42 | void ReleaseMesh(IMesh mesh); | ||
43 | void ExpireReleaseMeshs(); | ||
44 | void ExpireFileCache(); | ||
39 | } | 45 | } |
40 | 46 | ||
41 | // Values for level of detail to be passed to the mesher. | 47 | // Values for level of detail to be passed to the mesher. |
@@ -53,6 +59,25 @@ namespace OpenSim.Region.Physics.Manager | |||
53 | { | 59 | { |
54 | } | 60 | } |
55 | 61 | ||
62 | [Serializable()] | ||
63 | [StructLayout(LayoutKind.Explicit)] | ||
64 | public struct AMeshKey | ||
65 | { | ||
66 | [FieldOffset(0)] | ||
67 | public UUID uuid; | ||
68 | [FieldOffset(0)] | ||
69 | public ulong hashA; | ||
70 | [FieldOffset(8)] | ||
71 | public ulong hashB; | ||
72 | [FieldOffset(16)] | ||
73 | public ulong hashC; | ||
74 | |||
75 | public override string ToString() | ||
76 | { | ||
77 | return uuid.ToString() + "-" + hashC.ToString("x") ; | ||
78 | } | ||
79 | } | ||
80 | |||
56 | public interface IMesh | 81 | public interface IMesh |
57 | { | 82 | { |
58 | List<Vector3> getVertexList(); | 83 | List<Vector3> getVertexList(); |
@@ -65,5 +90,7 @@ namespace OpenSim.Region.Physics.Manager | |||
65 | void releasePinned(); | 90 | void releasePinned(); |
66 | void Append(IMesh newMesh); | 91 | void Append(IMesh newMesh); |
67 | void TransformLinear(float[,] matrix, float[] offset); | 92 | void TransformLinear(float[,] matrix, float[] offset); |
93 | Vector3 GetCentroid(); | ||
94 | Vector3 GetOBB(); | ||
68 | } | 95 | } |
69 | } | 96 | } |
diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs index 0587054..14f65b8 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs | |||
@@ -43,7 +43,8 @@ namespace OpenSim.Region.Physics.Manager | |||
43 | Unknown = 0, | 43 | Unknown = 0, |
44 | Agent = 1, | 44 | Agent = 1, |
45 | Prim = 2, | 45 | Prim = 2, |
46 | Ground = 3 | 46 | Ground = 3, |
47 | Water = 4 | ||
47 | } | 48 | } |
48 | 49 | ||
49 | public enum PIDHoverType | 50 | public enum PIDHoverType |
@@ -59,15 +60,30 @@ namespace OpenSim.Region.Physics.Manager | |||
59 | public Vector3 Position; | 60 | public Vector3 Position; |
60 | public Vector3 SurfaceNormal; | 61 | public Vector3 SurfaceNormal; |
61 | public float PenetrationDepth; | 62 | public float PenetrationDepth; |
63 | public float RelativeSpeed; | ||
62 | 64 | ||
63 | public ContactPoint(Vector3 position, Vector3 surfaceNormal, float penetrationDepth) | 65 | public ContactPoint(Vector3 position, Vector3 surfaceNormal, float penetrationDepth) |
64 | { | 66 | { |
65 | Position = position; | 67 | Position = position; |
66 | SurfaceNormal = surfaceNormal; | 68 | SurfaceNormal = surfaceNormal; |
67 | PenetrationDepth = penetrationDepth; | 69 | PenetrationDepth = penetrationDepth; |
70 | RelativeSpeed = 0f; // for now let this one be set explicity | ||
68 | } | 71 | } |
69 | } | 72 | } |
70 | 73 | ||
74 | public struct ContactData | ||
75 | { | ||
76 | public float mu; | ||
77 | public float bounce; | ||
78 | public bool softcolide; | ||
79 | |||
80 | public ContactData(float _mu, float _bounce, bool _softcolide) | ||
81 | { | ||
82 | mu = _mu; | ||
83 | bounce = _bounce; | ||
84 | softcolide = _softcolide; | ||
85 | } | ||
86 | } | ||
71 | /// <summary> | 87 | /// <summary> |
72 | /// Used to pass collision information to OnCollisionUpdate listeners. | 88 | /// Used to pass collision information to OnCollisionUpdate listeners. |
73 | /// </summary> | 89 | /// </summary> |
@@ -99,7 +115,7 @@ namespace OpenSim.Region.Physics.Manager | |||
99 | m_objCollisionList.Add(localID, contact); | 115 | m_objCollisionList.Add(localID, contact); |
100 | } | 116 | } |
101 | else | 117 | else |
102 | { | 118 | { |
103 | if (m_objCollisionList[localID].PenetrationDepth < contact.PenetrationDepth) | 119 | if (m_objCollisionList[localID].PenetrationDepth < contact.PenetrationDepth) |
104 | m_objCollisionList[localID] = contact; | 120 | m_objCollisionList[localID] = contact; |
105 | } | 121 | } |
@@ -135,6 +151,8 @@ namespace OpenSim.Region.Physics.Manager | |||
135 | /// </summary> | 151 | /// </summary> |
136 | public event CollisionUpdate OnCollisionUpdate; | 152 | public event CollisionUpdate OnCollisionUpdate; |
137 | 153 | ||
154 | public virtual void SetVehicle(object vdata) { } | ||
155 | |||
138 | public event OutOfBounds OnOutOfBounds; | 156 | public event OutOfBounds OnOutOfBounds; |
139 | #pragma warning restore 67 | 157 | #pragma warning restore 67 |
140 | 158 | ||
@@ -142,11 +160,29 @@ namespace OpenSim.Region.Physics.Manager | |||
142 | { | 160 | { |
143 | get { return new NullPhysicsActor(); } | 161 | get { return new NullPhysicsActor(); } |
144 | } | 162 | } |
163 | |||
164 | public virtual bool Building { get; set; } | ||
165 | |||
166 | public virtual void getContactData(ref ContactData cdata) | ||
167 | { | ||
168 | cdata.mu = 0; | ||
169 | cdata.bounce = 0; | ||
170 | } | ||
145 | 171 | ||
146 | public abstract bool Stopped { get; } | 172 | public abstract bool Stopped { get; } |
147 | 173 | ||
148 | public abstract Vector3 Size { get; set; } | 174 | public abstract Vector3 Size { get; set; } |
149 | 175 | ||
176 | public virtual bool Phantom { get; set; } | ||
177 | |||
178 | public virtual bool IsVolumeDtc | ||
179 | { | ||
180 | get { return false; } | ||
181 | set { return; } | ||
182 | } | ||
183 | |||
184 | public virtual byte PhysicsShapeType { get; set; } | ||
185 | |||
150 | public abstract PrimitiveBaseShape Shape { set; } | 186 | public abstract PrimitiveBaseShape Shape { set; } |
151 | 187 | ||
152 | uint m_baseLocalID; | 188 | uint m_baseLocalID; |
@@ -167,7 +203,7 @@ namespace OpenSim.Region.Physics.Manager | |||
167 | /// XXX: Bizarrely, this cannot be "Terrain" or "Water" right now unless it really is simulating terrain or | 203 | /// XXX: Bizarrely, this cannot be "Terrain" or "Water" right now unless it really is simulating terrain or |
168 | /// water. This is not a problem due to the formatting of names given by prims and avatars. | 204 | /// water. This is not a problem due to the formatting of names given by prims and avatars. |
169 | /// </remarks> | 205 | /// </remarks> |
170 | public string Name { get; protected set; } | 206 | public string Name { get; set; } |
171 | 207 | ||
172 | /// <summary> | 208 | /// <summary> |
173 | /// This is being used by ODE joint code. | 209 | /// This is being used by ODE joint code. |
@@ -218,9 +254,11 @@ namespace OpenSim.Region.Physics.Manager | |||
218 | handler(e); | 254 | handler(e); |
219 | } | 255 | } |
220 | 256 | ||
221 | public virtual void SetMaterial (int material) | 257 | public virtual void SetMaterial (int material) { } |
222 | { | 258 | public virtual float Density { get; set; } |
223 | } | 259 | public virtual float GravModifier { get; set; } |
260 | public virtual float Friction { get; set; } | ||
261 | public virtual float Bounce { get; set; } | ||
224 | 262 | ||
225 | /// <summary> | 263 | /// <summary> |
226 | /// Position of this actor. | 264 | /// Position of this actor. |
@@ -249,6 +287,51 @@ namespace OpenSim.Region.Physics.Manager | |||
249 | public abstract Vector3 GeometricCenter { get; } | 287 | public abstract Vector3 GeometricCenter { get; } |
250 | public abstract Vector3 CenterOfMass { get; } | 288 | public abstract Vector3 CenterOfMass { get; } |
251 | 289 | ||
290 | public virtual Vector3 OOBsize | ||
291 | { | ||
292 | get | ||
293 | { | ||
294 | Vector3 s=Size; | ||
295 | s.X *=0.5f; | ||
296 | s.Y *=0.5f; | ||
297 | s.Z *=0.5f; | ||
298 | return s; | ||
299 | } | ||
300 | } | ||
301 | |||
302 | public virtual Vector3 OOBoffset | ||
303 | { | ||
304 | get | ||
305 | { | ||
306 | return Vector3.Zero; | ||
307 | } | ||
308 | } | ||
309 | |||
310 | public virtual float OOBRadiusSQ | ||
311 | { | ||
312 | get | ||
313 | { | ||
314 | return Size.LengthSquared() * 0.25f; // ((0.5^2) | ||
315 | } | ||
316 | } | ||
317 | |||
318 | |||
319 | public virtual float PhysicsCost | ||
320 | { | ||
321 | get | ||
322 | { | ||
323 | return 0.1f; | ||
324 | } | ||
325 | } | ||
326 | |||
327 | public virtual float StreamCost | ||
328 | { | ||
329 | get | ||
330 | { | ||
331 | return 1.0f; | ||
332 | } | ||
333 | } | ||
334 | |||
252 | /// <summary> | 335 | /// <summary> |
253 | /// Velocity of this actor. | 336 | /// Velocity of this actor. |
254 | /// </summary> | 337 | /// </summary> |
@@ -300,13 +383,21 @@ namespace OpenSim.Region.Physics.Manager | |||
300 | public abstract void SubscribeEvents(int ms); | 383 | public abstract void SubscribeEvents(int ms); |
301 | public abstract void UnSubscribeEvents(); | 384 | public abstract void UnSubscribeEvents(); |
302 | public abstract bool SubscribedEvents(); | 385 | public abstract bool SubscribedEvents(); |
386 | |||
387 | public virtual void AddCollisionEvent(uint CollidedWith, ContactPoint contact) { } | ||
388 | |||
389 | // Warning in a parent part it returns itself, not null | ||
390 | public virtual PhysicsActor ParentActor { get { return this; } } | ||
391 | |||
303 | } | 392 | } |
304 | 393 | ||
305 | public class NullPhysicsActor : PhysicsActor | 394 | public class NullPhysicsActor : PhysicsActor |
306 | { | 395 | { |
396 | private ActorTypes m_actorType = ActorTypes.Unknown; | ||
397 | |||
307 | public override bool Stopped | 398 | public override bool Stopped |
308 | { | 399 | { |
309 | get{ return false; } | 400 | get{ return true; } |
310 | } | 401 | } |
311 | 402 | ||
312 | public override Vector3 Position | 403 | public override Vector3 Position |
@@ -323,6 +414,7 @@ namespace OpenSim.Region.Physics.Manager | |||
323 | 414 | ||
324 | public override uint LocalID | 415 | public override uint LocalID |
325 | { | 416 | { |
417 | get { return 0; } | ||
326 | set { return; } | 418 | set { return; } |
327 | } | 419 | } |
328 | 420 | ||
@@ -382,50 +474,17 @@ namespace OpenSim.Region.Physics.Manager | |||
382 | set { return; } | 474 | set { return; } |
383 | } | 475 | } |
384 | 476 | ||
385 | public override void VehicleFloatParam(int param, float value) | 477 | public override void VehicleFloatParam(int param, float value) {} |
386 | { | 478 | public override void VehicleVectorParam(int param, Vector3 value) { } |
387 | 479 | public override void VehicleRotationParam(int param, Quaternion rotation) { } | |
388 | } | 480 | public override void VehicleFlags(int param, bool remove) { } |
481 | public override void SetVolumeDetect(int param) {} | ||
482 | public override void SetMaterial(int material) {} | ||
483 | public override Vector3 CenterOfMass { get { return Vector3.Zero; }} | ||
389 | 484 | ||
390 | public override void VehicleVectorParam(int param, Vector3 value) | 485 | public override Vector3 GeometricCenter { get { return Vector3.Zero; }} |
391 | { | ||
392 | 486 | ||
393 | } | 487 | public override PrimitiveBaseShape Shape { set { return; }} |
394 | |||
395 | public override void VehicleRotationParam(int param, Quaternion rotation) | ||
396 | { | ||
397 | |||
398 | } | ||
399 | |||
400 | public override void VehicleFlags(int param, bool remove) | ||
401 | { | ||
402 | |||
403 | } | ||
404 | |||
405 | public override void SetVolumeDetect(int param) | ||
406 | { | ||
407 | |||
408 | } | ||
409 | |||
410 | public override void SetMaterial(int material) | ||
411 | { | ||
412 | |||
413 | } | ||
414 | |||
415 | public override Vector3 CenterOfMass | ||
416 | { | ||
417 | get { return Vector3.Zero; } | ||
418 | } | ||
419 | |||
420 | public override Vector3 GeometricCenter | ||
421 | { | ||
422 | get { return Vector3.Zero; } | ||
423 | } | ||
424 | |||
425 | public override PrimitiveBaseShape Shape | ||
426 | { | ||
427 | set { return; } | ||
428 | } | ||
429 | 488 | ||
430 | public override Vector3 Velocity | 489 | public override Vector3 Velocity |
431 | { | 490 | { |
@@ -445,9 +504,7 @@ namespace OpenSim.Region.Physics.Manager | |||
445 | set { } | 504 | set { } |
446 | } | 505 | } |
447 | 506 | ||
448 | public override void CrossingFailure() | 507 | public override void CrossingFailure() {} |
449 | { | ||
450 | } | ||
451 | 508 | ||
452 | public override Quaternion Orientation | 509 | public override Quaternion Orientation |
453 | { | 510 | { |
@@ -487,8 +544,20 @@ namespace OpenSim.Region.Physics.Manager | |||
487 | 544 | ||
488 | public override int PhysicsActorType | 545 | public override int PhysicsActorType |
489 | { | 546 | { |
490 | get { return (int) ActorTypes.Unknown; } | 547 | get { return (int)m_actorType; } |
491 | set { return; } | 548 | set { |
549 | ActorTypes type = (ActorTypes)value; | ||
550 | switch (type) | ||
551 | { | ||
552 | case ActorTypes.Ground: | ||
553 | case ActorTypes.Water: | ||
554 | m_actorType = type; | ||
555 | break; | ||
556 | default: | ||
557 | m_actorType = ActorTypes.Unknown; | ||
558 | break; | ||
559 | } | ||
560 | } | ||
492 | } | 561 | } |
493 | 562 | ||
494 | public override bool Kinematic | 563 | public override bool Kinematic |
@@ -497,26 +566,11 @@ namespace OpenSim.Region.Physics.Manager | |||
497 | set { return; } | 566 | set { return; } |
498 | } | 567 | } |
499 | 568 | ||
500 | public override void link(PhysicsActor obj) | 569 | public override void link(PhysicsActor obj) { } |
501 | { | 570 | public override void delink() { } |
502 | } | 571 | public override void LockAngularMotion(Vector3 axis) { } |
503 | 572 | public override void AddForce(Vector3 force, bool pushforce) { } | |
504 | public override void delink() | 573 | public override void AddAngularForce(Vector3 force, bool pushforce) { } |
505 | { | ||
506 | } | ||
507 | |||
508 | public override void LockAngularMotion(Vector3 axis) | ||
509 | { | ||
510 | } | ||
511 | |||
512 | public override void AddForce(Vector3 force, bool pushforce) | ||
513 | { | ||
514 | } | ||
515 | |||
516 | public override void AddAngularForce(Vector3 force, bool pushforce) | ||
517 | { | ||
518 | |||
519 | } | ||
520 | 574 | ||
521 | public override Vector3 RotationalVelocity | 575 | public override Vector3 RotationalVelocity |
522 | { | 576 | { |
@@ -538,21 +592,10 @@ namespace OpenSim.Region.Physics.Manager | |||
538 | public override float APIDStrength { set { return; } } | 592 | public override float APIDStrength { set { return; } } |
539 | public override float APIDDamping { set { return; } } | 593 | public override float APIDDamping { set { return; } } |
540 | 594 | ||
541 | public override void SetMomentum(Vector3 momentum) | 595 | public override void SetMomentum(Vector3 momentum) { } |
542 | { | ||
543 | } | ||
544 | |||
545 | public override void SubscribeEvents(int ms) | ||
546 | { | ||
547 | 596 | ||
548 | } | 597 | public override void SubscribeEvents(int ms) { } |
549 | public override void UnSubscribeEvents() | 598 | public override void UnSubscribeEvents() { } |
550 | { | 599 | public override bool SubscribedEvents() { return false; } |
551 | |||
552 | } | ||
553 | public override bool SubscribedEvents() | ||
554 | { | ||
555 | return false; | ||
556 | } | ||
557 | } | 600 | } |
558 | } | 601 | } |
diff --git a/OpenSim/Region/Physics/Manager/PhysicsScene.cs b/OpenSim/Region/Physics/Manager/PhysicsScene.cs index 488900e..ce269fa 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsScene.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsScene.cs | |||
@@ -43,6 +43,34 @@ namespace OpenSim.Region.Physics.Manager | |||
43 | public delegate void JointDeactivated(PhysicsJoint joint); | 43 | public delegate void JointDeactivated(PhysicsJoint joint); |
44 | public delegate void JointErrorMessage(PhysicsJoint joint, string message); // this refers to an "error message due to a problem", not "amount of joint constraint violation" | 44 | public delegate void JointErrorMessage(PhysicsJoint joint, string message); // this refers to an "error message due to a problem", not "amount of joint constraint violation" |
45 | 45 | ||
46 | public enum RayFilterFlags:ushort | ||
47 | { | ||
48 | // the flags | ||
49 | water = 0x01, | ||
50 | land = 0x02, | ||
51 | agent = 0x04, | ||
52 | nonphysical = 0x08, | ||
53 | physical = 0x10, | ||
54 | phantom = 0x20, | ||
55 | volumedtc = 0x40, | ||
56 | |||
57 | // ray cast colision control (may only work for meshs) | ||
58 | BackFaceCull = 0x4000, | ||
59 | ClosestHit = 0x8000, | ||
60 | |||
61 | // some combinations | ||
62 | LSLPhanton = phantom | volumedtc, | ||
63 | PrimsNonPhantom = nonphysical | physical, | ||
64 | PrimsNonPhantomAgents = nonphysical | physical | agent, | ||
65 | |||
66 | AllPrims = nonphysical | phantom | volumedtc | physical, | ||
67 | AllButLand = agent | nonphysical | physical | phantom | volumedtc, | ||
68 | |||
69 | ClosestAndBackCull = ClosestHit | BackFaceCull, | ||
70 | |||
71 | All = 0x3f | ||
72 | } | ||
73 | |||
46 | public delegate void RequestAssetDelegate(UUID assetID, AssetReceivedDelegate callback); | 74 | public delegate void RequestAssetDelegate(UUID assetID, AssetReceivedDelegate callback); |
47 | public delegate void AssetReceivedDelegate(AssetBase asset); | 75 | public delegate void AssetReceivedDelegate(AssetBase asset); |
48 | 76 | ||
@@ -57,6 +85,8 @@ namespace OpenSim.Region.Physics.Manager | |||
57 | public Vector3 Normal; | 85 | public Vector3 Normal; |
58 | } | 86 | } |
59 | 87 | ||
88 | |||
89 | |||
60 | public abstract class PhysicsScene | 90 | public abstract class PhysicsScene |
61 | { | 91 | { |
62 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 92 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
@@ -130,6 +160,25 @@ namespace OpenSim.Region.Physics.Manager | |||
130 | public abstract PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, Vector3 position, | 160 | public abstract PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, Vector3 position, |
131 | Vector3 size, Quaternion rotation, bool isPhysical, uint localid); | 161 | Vector3 size, Quaternion rotation, bool isPhysical, uint localid); |
132 | 162 | ||
163 | public virtual PhysicsActor AddPrimShape(string primName, PhysicsActor parent, PrimitiveBaseShape pbs, Vector3 position, | ||
164 | uint localid, byte[] sdata) | ||
165 | { | ||
166 | return null; | ||
167 | } | ||
168 | |||
169 | public virtual PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, Vector3 position, | ||
170 | Vector3 size, Quaternion rotation, bool isPhysical, bool isPhantom, uint localid) | ||
171 | { | ||
172 | return AddPrimShape(primName, pbs, position, size, rotation, isPhysical, localid); | ||
173 | } | ||
174 | |||
175 | |||
176 | public virtual PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, Vector3 position, | ||
177 | Vector3 size, Quaternion rotation, bool isPhysical, bool isPhantom, byte shapetype, uint localid) | ||
178 | { | ||
179 | return AddPrimShape(primName, pbs, position, size, rotation, isPhysical, localid); | ||
180 | } | ||
181 | |||
133 | public virtual float TimeDilation | 182 | public virtual float TimeDilation |
134 | { | 183 | { |
135 | get { return 1.0f; } | 184 | get { return 1.0f; } |
@@ -197,6 +246,9 @@ namespace OpenSim.Region.Physics.Manager | |||
197 | 246 | ||
198 | public abstract void AddPhysicsActorTaint(PhysicsActor prim); | 247 | public abstract void AddPhysicsActorTaint(PhysicsActor prim); |
199 | 248 | ||
249 | |||
250 | public virtual void PrepareSimulation() { } | ||
251 | |||
200 | /// <summary> | 252 | /// <summary> |
201 | /// Perform a simulation of the current physics scene over the given timestep. | 253 | /// Perform a simulation of the current physics scene over the given timestep. |
202 | /// </summary> | 254 | /// </summary> |
@@ -241,7 +293,7 @@ namespace OpenSim.Region.Physics.Manager | |||
241 | } | 293 | } |
242 | 294 | ||
243 | public virtual void Combine(PhysicsScene pScene, Vector3 offset, Vector3 extents) {} | 295 | public virtual void Combine(PhysicsScene pScene, Vector3 offset, Vector3 extents) {} |
244 | 296 | public virtual void CombineTerrain(float[] heightMap, Vector3 pOffset) {} | |
245 | public virtual void UnCombine(PhysicsScene pScene) {} | 297 | public virtual void UnCombine(PhysicsScene pScene) {} |
246 | 298 | ||
247 | /// <summary> | 299 | /// <summary> |
@@ -279,5 +331,23 @@ namespace OpenSim.Region.Physics.Manager | |||
279 | { | 331 | { |
280 | return new List<ContactResult>(); | 332 | return new List<ContactResult>(); |
281 | } | 333 | } |
334 | |||
335 | public virtual object RaycastWorld(Vector3 position, Vector3 direction, float length, int Count, RayFilterFlags filter) | ||
336 | { | ||
337 | return null; | ||
338 | } | ||
339 | |||
340 | public virtual bool SuportsRaycastWorldFiltered() | ||
341 | { | ||
342 | return false; | ||
343 | } | ||
344 | |||
345 | public virtual void RaycastActor(PhysicsActor actor, Vector3 position, Vector3 direction, float length, RaycastCallback retMethod){} | ||
346 | public virtual void RaycastActor(PhysicsActor actor, Vector3 position, Vector3 direction, float length, int Count, RayCallback retMethod) { } | ||
347 | public virtual List<ContactResult> RaycastActor(PhysicsActor actor, Vector3 position, Vector3 direction, float length, int Count) | ||
348 | { | ||
349 | return new List<ContactResult>(); | ||
350 | } | ||
351 | |||
282 | } | 352 | } |
283 | } | 353 | } |
diff --git a/OpenSim/Region/Physics/Manager/VehicleConstants.cs b/OpenSim/Region/Physics/Manager/VehicleConstants.cs index f0775c1..8e24b4c 100644 --- a/OpenSim/Region/Physics/Manager/VehicleConstants.cs +++ b/OpenSim/Region/Physics/Manager/VehicleConstants.cs | |||
@@ -26,6 +26,7 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using OpenMetaverse; | ||
29 | 30 | ||
30 | namespace OpenSim.Region.Physics.Manager | 31 | namespace OpenSim.Region.Physics.Manager |
31 | { | 32 | { |
@@ -117,5 +118,47 @@ namespace OpenSim.Region.Physics.Manager | |||
117 | NO_DEFLECTION = 16392, | 118 | NO_DEFLECTION = 16392, |
118 | LOCK_ROTATION = 32784 | 119 | LOCK_ROTATION = 32784 |
119 | } | 120 | } |
120 | 121 | ||
122 | public struct VehicleData | ||
123 | { | ||
124 | public Vehicle m_type; | ||
125 | public VehicleFlag m_flags; | ||
126 | |||
127 | // Linear properties | ||
128 | public Vector3 m_linearMotorDirection; | ||
129 | public Vector3 m_linearFrictionTimescale; | ||
130 | public float m_linearMotorDecayTimescale; | ||
131 | public float m_linearMotorTimescale; | ||
132 | public Vector3 m_linearMotorOffset; | ||
133 | |||
134 | //Angular properties | ||
135 | public Vector3 m_angularMotorDirection; | ||
136 | public float m_angularMotorTimescale; | ||
137 | public float m_angularMotorDecayTimescale; | ||
138 | public Vector3 m_angularFrictionTimescale; | ||
139 | |||
140 | //Deflection properties | ||
141 | public float m_angularDeflectionEfficiency; | ||
142 | public float m_angularDeflectionTimescale; | ||
143 | public float m_linearDeflectionEfficiency; | ||
144 | public float m_linearDeflectionTimescale; | ||
145 | |||
146 | //Banking properties | ||
147 | public float m_bankingEfficiency; | ||
148 | public float m_bankingMix; | ||
149 | public float m_bankingTimescale; | ||
150 | |||
151 | //Hover and Buoyancy properties | ||
152 | public float m_VhoverHeight; | ||
153 | public float m_VhoverEfficiency; | ||
154 | public float m_VhoverTimescale; | ||
155 | public float m_VehicleBuoyancy; | ||
156 | |||
157 | //Attractor properties | ||
158 | public float m_verticalAttractionEfficiency; | ||
159 | public float m_verticalAttractionTimescale; | ||
160 | |||
161 | // Axis | ||
162 | public Quaternion m_referenceFrame; | ||
163 | } | ||
121 | } | 164 | } |
diff --git a/OpenSim/Region/Physics/Manager/ZeroMesher.cs b/OpenSim/Region/Physics/Manager/ZeroMesher.cs index ba19db6..16846e6 100644 --- a/OpenSim/Region/Physics/Manager/ZeroMesher.cs +++ b/OpenSim/Region/Physics/Manager/ZeroMesher.cs | |||
@@ -67,6 +67,11 @@ namespace OpenSim.Region.Physics.Manager | |||
67 | return CreateMesh(primName, primShape, size, lod, false); | 67 | return CreateMesh(primName, primShape, size, lod, false); |
68 | } | 68 | } |
69 | 69 | ||
70 | public IMesh CreateMesh(String primName, PrimitiveBaseShape primShape, Vector3 size, float lod, bool isPhysical, bool convex,bool forOde) | ||
71 | { | ||
72 | return CreateMesh(primName, primShape, size, lod, false); | ||
73 | } | ||
74 | |||
70 | public IMesh CreateMesh(String primName, PrimitiveBaseShape primShape, Vector3 size, float lod, bool isPhysical) | 75 | public IMesh CreateMesh(String primName, PrimitiveBaseShape primShape, Vector3 size, float lod, bool isPhysical) |
71 | { | 76 | { |
72 | // Remove the reference to the encoded JPEG2000 data so it can be GCed | 77 | // Remove the reference to the encoded JPEG2000 data so it can be GCed |
@@ -74,5 +79,14 @@ namespace OpenSim.Region.Physics.Manager | |||
74 | 79 | ||
75 | return null; | 80 | return null; |
76 | } | 81 | } |
82 | |||
83 | public IMesh GetMesh(String primName, PrimitiveBaseShape primShape, Vector3 size, float lod, bool isPhysical, bool convex) | ||
84 | { | ||
85 | return null; | ||
86 | } | ||
87 | |||
88 | public void ReleaseMesh(IMesh mesh) { } | ||
89 | public void ExpireReleaseMeshs() { } | ||
90 | public void ExpireFileCache() { } | ||
77 | } | 91 | } |
78 | } | 92 | } |