aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim.Physics
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim.Physics')
-rw-r--r--OpenSim.Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs5
-rw-r--r--OpenSim.Physics/Manager/PhysicsScene.cs9
-rw-r--r--OpenSim.Physics/OdePlugin/OdePlugin.cs5
-rw-r--r--OpenSim.Physics/PhysXPlugin/PhysXPlugin.cs50
4 files changed, 55 insertions, 14 deletions
diff --git a/OpenSim.Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs b/OpenSim.Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs
index deff803..62b6ffc 100644
--- a/OpenSim.Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs
+++ b/OpenSim.Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs
@@ -149,6 +149,11 @@ namespace OpenSim.Physics.BasicPhysicsPlugin
149 { 149 {
150 this._heightMap = heightMap; 150 this._heightMap = heightMap;
151 } 151 }
152
153 public override void DeleteTerrain()
154 {
155
156 }
152 } 157 }
153 158
154 public class BasicActor : PhysicsActor 159 public class BasicActor : PhysicsActor
diff --git a/OpenSim.Physics/Manager/PhysicsScene.cs b/OpenSim.Physics/Manager/PhysicsScene.cs
index 632b9cd..0b3dfd2 100644
--- a/OpenSim.Physics/Manager/PhysicsScene.cs
+++ b/OpenSim.Physics/Manager/PhysicsScene.cs
@@ -50,6 +50,8 @@ namespace OpenSim.Physics.Manager
50 public abstract void GetResults(); 50 public abstract void GetResults();
51 51
52 public abstract void SetTerrain(float[] heightMap); 52 public abstract void SetTerrain(float[] heightMap);
53
54 public abstract void DeleteTerrain();
53 55
54 public abstract bool IsThreaded 56 public abstract bool IsThreaded
55 { 57 {
@@ -76,6 +78,8 @@ namespace OpenSim.Physics.Manager
76 public override void Simulate(float timeStep) 78 public override void Simulate(float timeStep)
77 { 79 {
78 m_workIndicator = (m_workIndicator + 1) % 10; 80 m_workIndicator = (m_workIndicator + 1) % 10;
81
82 //OpenSim.Framework.Console.MainConsole.Instance.SetStatus(m_workIndicator.ToString());
79 } 83 }
80 84
81 public override void GetResults() 85 public override void GetResults()
@@ -88,6 +92,11 @@ namespace OpenSim.Physics.Manager
88 OpenSim.Framework.Console.MainConsole.Instance.WriteLine("NullPhysicsScene : SetTerrain({0} items)", heightMap.Length); 92 OpenSim.Framework.Console.MainConsole.Instance.WriteLine("NullPhysicsScene : SetTerrain({0} items)", heightMap.Length);
89 } 93 }
90 94
95 public override void DeleteTerrain()
96 {
97
98 }
99
91 public override bool IsThreaded 100 public override bool IsThreaded
92 { 101 {
93 get { return false; } 102 get { return false; }
diff --git a/OpenSim.Physics/OdePlugin/OdePlugin.cs b/OpenSim.Physics/OdePlugin/OdePlugin.cs
index 8e34a6b..7b0d64a 100644
--- a/OpenSim.Physics/OdePlugin/OdePlugin.cs
+++ b/OpenSim.Physics/OdePlugin/OdePlugin.cs
@@ -170,6 +170,11 @@ namespace OpenSim.Physics.OdePlugin
170 d.GeomHeightfieldDataBuildDouble(HeightmapData,_heightmap,1,256,256,256,256,1.0f,0.0f,2.0f,0); 170 d.GeomHeightfieldDataBuildDouble(HeightmapData,_heightmap,1,256,256,256,256,1.0f,0.0f,2.0f,0);
171 LandGeom=d.CreateHeightfield(space, HeightmapData, 0); 171 LandGeom=d.CreateHeightfield(space, HeightmapData, 0);
172 } 172 }
173
174 public override void DeleteTerrain()
175 {
176
177 }
173 } 178 }
174 179
175 public class OdeCharacter : PhysicsActor 180 public class OdeCharacter : PhysicsActor
diff --git a/OpenSim.Physics/PhysXPlugin/PhysXPlugin.cs b/OpenSim.Physics/PhysXPlugin/PhysXPlugin.cs
index 043c2f1..10e92fe 100644
--- a/OpenSim.Physics/PhysXPlugin/PhysXPlugin.cs
+++ b/OpenSim.Physics/PhysXPlugin/PhysXPlugin.cs
@@ -98,7 +98,7 @@ namespace OpenSim.Physics.PhysXPlugin
98 { 98 {
99 private List<PhysXCharacter> _characters = new List<PhysXCharacter>(); 99 private List<PhysXCharacter> _characters = new List<PhysXCharacter>();
100 private List<PhysXPrim> _prims = new List<PhysXPrim>(); 100 private List<PhysXPrim> _prims = new List<PhysXPrim>();
101 private float[] _heightMap; 101 private float[] _heightMap = null;
102 private NxPhysicsSDK mySdk; 102 private NxPhysicsSDK mySdk;
103 private NxScene scene; 103 private NxScene scene;
104 104
@@ -138,18 +138,25 @@ namespace OpenSim.Physics.PhysXPlugin
138 } 138 }
139 public override void Simulate(float timeStep) 139 public override void Simulate(float timeStep)
140 { 140 {
141 foreach (PhysXCharacter actor in _characters) 141 try
142 { 142 {
143 actor.Move(timeStep); 143 foreach (PhysXCharacter actor in _characters)
144 } 144 {
145 scene.Simulate(timeStep); 145 actor.Move(timeStep);
146 scene.FetchResults(); 146 }
147 scene.UpdateControllers(); 147 scene.Simulate(timeStep);
148 148 scene.FetchResults();
149 foreach (PhysXCharacter actor in _characters) 149 scene.UpdateControllers();
150 { 150
151 actor.UpdatePosition(); 151 foreach (PhysXCharacter actor in _characters)
152 } 152 {
153 actor.UpdatePosition();
154 }
155 }
156 catch (Exception e)
157 {
158 Console.WriteLine(e.Message);
159 }
153 160
154 } 161 }
155 162
@@ -168,10 +175,20 @@ namespace OpenSim.Physics.PhysXPlugin
168 175
169 public override void SetTerrain(float[] heightMap) 176 public override void SetTerrain(float[] heightMap)
170 { 177 {
178 if (this._heightMap != null)
179 {
180 Console.WriteLine("PhysX - deleting old terrain");
181 this.scene.DeleteTerrain();
182 }
171 this._heightMap = heightMap; 183 this._heightMap = heightMap;
172 this.scene.AddTerrain(heightMap); 184 this.scene.AddTerrain(heightMap);
173 } 185 }
174 } 186
187 public override void DeleteTerrain()
188 {
189 this.scene.DeleteTerrain();
190 }
191 }
175 192
176 public class PhysXCharacter : PhysicsActor 193 public class PhysXCharacter : PhysicsActor
177 { 194 {
@@ -211,6 +228,11 @@ namespace OpenSim.Physics.PhysXPlugin
211 set 228 set
212 { 229 {
213 _position = value; 230 _position = value;
231 Vec3 ps = new Vec3();
232 ps.X = value.X;
233 ps.Y = value.Y;
234 ps.Z = value.Z;
235 this._character.Position = ps;
214 } 236 }
215 } 237 }
216 238