diff options
author | dan miller | 2007-11-05 12:25:53 +0000 |
---|---|---|
committer | dan miller | 2007-11-05 12:25:53 +0000 |
commit | fdb57b28b164f239de0f976b967b79dc2ca5f6ae (patch) | |
tree | e998ae9c7dd6e248e794e35ca19678e3b6f6fad1 /OpenSim/Region/Physics/Manager | |
parent | Changed it so opensim.exe should scan for new application plugins every time ... (diff) | |
download | opensim-SC-fdb57b28b164f239de0f976b967b79dc2ca5f6ae.zip opensim-SC-fdb57b28b164f239de0f976b967b79dc2ca5f6ae.tar.gz opensim-SC-fdb57b28b164f239de0f976b967b79dc2ca5f6ae.tar.bz2 opensim-SC-fdb57b28b164f239de0f976b967b79dc2ca5f6ae.tar.xz |
prim cuts in ODE
Much thanks to Gerhard!
Merged with Darok's recent changes re: physical prims
Diffstat (limited to 'OpenSim/Region/Physics/Manager')
-rw-r--r-- | OpenSim/Region/Physics/Manager/PhysicsActor.cs | 14 | ||||
-rw-r--r-- | OpenSim/Region/Physics/Manager/PhysicsVector.cs | 50 |
2 files changed, 64 insertions, 0 deletions
diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs index bfe1d0b..b151e16 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs | |||
@@ -26,6 +26,7 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | using Axiom.Math; | 28 | using Axiom.Math; |
29 | using OpenSim.Framework; | ||
29 | 30 | ||
30 | namespace OpenSim.Region.Physics.Manager | 31 | namespace OpenSim.Region.Physics.Manager |
31 | { | 32 | { |
@@ -50,6 +51,11 @@ namespace OpenSim.Region.Physics.Manager | |||
50 | 51 | ||
51 | public abstract PhysicsVector Size { get; set; } | 52 | public abstract PhysicsVector Size { get; set; } |
52 | 53 | ||
54 | public abstract PrimitiveBaseShape Shape | ||
55 | { | ||
56 | set; | ||
57 | } | ||
58 | |||
53 | public abstract PhysicsVector Position { get; set; } | 59 | public abstract PhysicsVector Position { get; set; } |
54 | 60 | ||
55 | public abstract PhysicsVector Velocity { get; set; } | 61 | public abstract PhysicsVector Velocity { get; set; } |
@@ -85,6 +91,14 @@ namespace OpenSim.Region.Physics.Manager | |||
85 | set { return; } | 91 | set { return; } |
86 | } | 92 | } |
87 | 93 | ||
94 | public override PrimitiveBaseShape Shape | ||
95 | { | ||
96 | set | ||
97 | { | ||
98 | return; | ||
99 | } | ||
100 | } | ||
101 | |||
88 | public override PhysicsVector Velocity | 102 | public override PhysicsVector Velocity |
89 | { | 103 | { |
90 | get { return PhysicsVector.Zero; } | 104 | get { return PhysicsVector.Zero; } |
diff --git a/OpenSim/Region/Physics/Manager/PhysicsVector.cs b/OpenSim/Region/Physics/Manager/PhysicsVector.cs index 7de37e4..ada2297 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsVector.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsVector.cs | |||
@@ -25,6 +25,10 @@ | |||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | |||
29 | using System; | ||
30 | |||
31 | |||
28 | namespace OpenSim.Region.Physics.Manager | 32 | namespace OpenSim.Region.Physics.Manager |
29 | { | 33 | { |
30 | public class PhysicsVector | 34 | public class PhysicsVector |
@@ -50,5 +54,51 @@ namespace OpenSim.Region.Physics.Manager | |||
50 | { | 54 | { |
51 | return "<" + X + "," + Y + "," + Z + ">"; | 55 | return "<" + X + "," + Y + "," + Z + ">"; |
52 | } | 56 | } |
57 | |||
58 | // Operations | ||
59 | public static PhysicsVector operator +(PhysicsVector a, PhysicsVector b) | ||
60 | { | ||
61 | return new PhysicsVector(a.X + b.X, a.Y + b.Y, a.Z + b.Z); | ||
62 | } | ||
63 | |||
64 | public static PhysicsVector operator -(PhysicsVector a, PhysicsVector b) | ||
65 | { | ||
66 | return new PhysicsVector(a.X - b.X, a.Y - b.Y, a.Z - b.Z); | ||
67 | } | ||
68 | |||
69 | public static PhysicsVector cross(PhysicsVector a, PhysicsVector b) | ||
70 | { | ||
71 | return new PhysicsVector(a.Y * b.Z - a.Z * b.Y, a.Z * b.X - a.X * b.Z, a.X * b.Y - a.Y * b.X); | ||
72 | } | ||
73 | |||
74 | public float length() | ||
75 | { | ||
76 | return (float)Math.Sqrt(X*X + Y*Y + Z*Z); | ||
77 | } | ||
78 | |||
79 | public static PhysicsVector operator / (PhysicsVector v, float f) | ||
80 | { | ||
81 | return new PhysicsVector(v.X / f, v.Y / f, v.Z / f); | ||
82 | } | ||
83 | |||
84 | public static PhysicsVector operator *(PhysicsVector v, float f) | ||
85 | { | ||
86 | return new PhysicsVector(v.X * f, v.Y * f, v.Z * f); | ||
87 | } | ||
88 | |||
89 | public static PhysicsVector operator *(float f, PhysicsVector v) | ||
90 | { | ||
91 | return v * f; | ||
92 | } | ||
93 | |||
94 | public virtual bool IsIdentical(PhysicsVector v, float tolerance) | ||
95 | { | ||
96 | PhysicsVector diff = this - v; | ||
97 | float d = diff.length(); | ||
98 | if (d < tolerance) | ||
99 | return true; | ||
100 | |||
101 | return false; | ||
102 | } | ||
53 | } | 103 | } |
54 | } \ No newline at end of file | 104 | } \ No newline at end of file |