aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsScene.cs
diff options
context:
space:
mode:
authorDavid Walter Seikel2016-11-03 21:44:39 +1000
committerDavid Walter Seikel2016-11-03 21:44:39 +1000
commit134f86e8d5c414409631b25b8c6f0ee45fbd8631 (patch)
tree216b89d3fb89acfb81be1e440c25c41ab09fa96d /OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsScene.cs
parentMore changing to production grid. Double oops. (diff)
downloadopensim-SC_OLD-134f86e8d5c414409631b25b8c6f0ee45fbd8631.zip
opensim-SC_OLD-134f86e8d5c414409631b25b8c6f0ee45fbd8631.tar.gz
opensim-SC_OLD-134f86e8d5c414409631b25b8c6f0ee45fbd8631.tar.bz2
opensim-SC_OLD-134f86e8d5c414409631b25b8c6f0ee45fbd8631.tar.xz
Initial update to OpenSim 0.8.2.1 source code.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsScene.cs (renamed from OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsScene.cs)90
1 files changed, 76 insertions, 14 deletions
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsScene.cs b/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsScene.cs
index f5826ed..20b337a 100644
--- a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsScene.cs
+++ b/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsScene.cs
@@ -28,11 +28,14 @@
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using Nini.Config; 30using Nini.Config;
31using Mono.Addins;
31using OpenMetaverse; 32using OpenMetaverse;
32using OpenSim.Framework; 33using OpenSim.Framework;
33using OpenSim.Region.Physics.Manager; 34using OpenSim.Region.PhysicsModules.SharedBase;
35using OpenSim.Region.Framework.Scenes;
36using OpenSim.Region.Framework.Interfaces;
34 37
35namespace OpenSim.Region.Physics.BasicPhysicsPlugin 38namespace OpenSim.Region.PhysicsModule.BasicPhysics
36{ 39{
37 /// <summary> 40 /// <summary>
38 /// This is an incomplete extremely basic physics implementation 41 /// This is an incomplete extremely basic physics implementation
@@ -41,23 +44,74 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
41 /// Not useful for anything at the moment apart from some regression testing in other components where some form 44 /// Not useful for anything at the moment apart from some regression testing in other components where some form
42 /// of physics plugin is needed. 45 /// of physics plugin is needed.
43 /// </remarks> 46 /// </remarks>
44 public class BasicScene : PhysicsScene 47 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "BasicPhysicsScene")]
48 public class BasicScene : PhysicsScene, INonSharedRegionModule
45 { 49 {
46 private List<BasicActor> _actors = new List<BasicActor>(); 50 private List<BasicActor> _actors = new List<BasicActor>();
47 private List<BasicPhysicsPrim> _prims = new List<BasicPhysicsPrim>(); 51 private List<BasicPhysicsPrim> _prims = new List<BasicPhysicsPrim>();
48 private float[] _heightMap; 52 private float[] _heightMap;
53 private Vector3 m_regionExtent;
54
55 private bool m_Enabled = false;
49 56
50 //protected internal string sceneIdentifier; 57 //protected internal string sceneIdentifier;
58 #region INonSharedRegionModule
59 public string Name
60 {
61 get { return "basicphysics"; }
62 }
63
64 public Type ReplaceableInterface
65 {
66 get { return null; }
67 }
68
69 public void Initialise(IConfigSource source)
70 {
71 // TODO: Move this out of Startup
72 IConfig config = source.Configs["Startup"];
73 if (config != null)
74 {
75 string physics = config.GetString("physics", string.Empty);
76 if (physics == Name)
77 m_Enabled = true;
78 }
79
80 }
51 81
52 public BasicScene(string _sceneIdentifier) 82 public void Close()
53 { 83 {
54 //sceneIdentifier = _sceneIdentifier;
55 } 84 }
56 85
57 public override void Initialise(IMesher meshmerizer, IConfigSource config) 86 public void AddRegion(Scene scene)
58 { 87 {
88 if (!m_Enabled)
89 return;
90
91 EngineType = Name;
92 PhysicsSceneName = EngineType + "/" + scene.RegionInfo.RegionName;
93
94 scene.RegisterModuleInterface<PhysicsScene>(this);
95 m_regionExtent = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, scene.RegionInfo.RegionSizeZ);
96 base.Initialise(scene.PhysicsRequestAsset,
97 (scene.Heightmap != null ? scene.Heightmap.GetFloatsSerialised() : new float[scene.RegionInfo.RegionSizeX * scene.RegionInfo.RegionSizeY]),
98 (float)scene.RegionInfo.RegionSettings.WaterHeight);
99
100 }
101
102 public void RemoveRegion(Scene scene)
103 {
104 if (!m_Enabled)
105 return;
59 } 106 }
60 107
108 public void RegionLoaded(Scene scene)
109 {
110 if (!m_Enabled)
111 return;
112 }
113 #endregion
114
61 public override void Dispose() {} 115 public override void Dispose() {}
62 116
63 public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, Vector3 position, 117 public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, Vector3 position,
@@ -71,10 +125,11 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
71 return prim; 125 return prim;
72 } 126 }
73 127
74 public override PhysicsActor AddAvatar(string avName, Vector3 position, Vector3 size, bool isFlying) 128 public override PhysicsActor AddAvatar(string avName, Vector3 position, Vector3 velocity, Vector3 size, bool isFlying)
75 { 129 {
76 BasicActor act = new BasicActor(size); 130 BasicActor act = new BasicActor(size);
77 act.Position = position; 131 act.Position = position;
132 act.Velocity = velocity;
78 act.Flying = isFlying; 133 act.Flying = isFlying;
79 _actors.Add(act); 134 _actors.Add(act);
80 return act; 135 return act;
@@ -100,6 +155,8 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
100 155
101 public override float Simulate(float timeStep) 156 public override float Simulate(float timeStep)
102 { 157 {
158// Console.WriteLine("Simulating");
159
103 float fps = 0; 160 float fps = 0;
104 for (int i = 0; i < _actors.Count; ++i) 161 for (int i = 0; i < _actors.Count; ++i)
105 { 162 {
@@ -107,32 +164,36 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
107 Vector3 actorPosition = actor.Position; 164 Vector3 actorPosition = actor.Position;
108 Vector3 actorVelocity = actor.Velocity; 165 Vector3 actorVelocity = actor.Velocity;
109 166
110 actorPosition.X += actor.Velocity.X*timeStep; 167 //Console.WriteLine(
111 actorPosition.Y += actor.Velocity.Y*timeStep; 168 // "Processing actor {0}, starting pos {1}, starting vel {2}", i, actorPosition, actorVelocity);
169
170 actorPosition.X += actor.Velocity.X * timeStep;
171 actorPosition.Y += actor.Velocity.Y * timeStep;
112 172
113 if (actor.Position.Y < 0) 173 if (actor.Position.Y < 0)
114 { 174 {
115 actorPosition.Y = 0.1F; 175 actorPosition.Y = 0.1F;
116 } 176 }
117 else if (actor.Position.Y >= Constants.RegionSize) 177 else if (actor.Position.Y >= m_regionExtent.Y)
118 { 178 {
119 actorPosition.Y = ((int)Constants.RegionSize - 0.1f); 179 actorPosition.Y = (m_regionExtent.Y - 0.1f);
120 } 180 }
121 181
122 if (actor.Position.X < 0) 182 if (actor.Position.X < 0)
123 { 183 {
124 actorPosition.X = 0.1F; 184 actorPosition.X = 0.1F;
125 } 185 }
126 else if (actor.Position.X >= Constants.RegionSize) 186 else if (actor.Position.X >= m_regionExtent.X)
127 { 187 {
128 actorPosition.X = ((int)Constants.RegionSize - 0.1f); 188 actorPosition.X = (m_regionExtent.X - 0.1f);
129 } 189 }
130 190
131 float terrainHeight = 0; 191 float terrainHeight = 0;
132 if (_heightMap != null) 192 if (_heightMap != null)
133 terrainHeight = _heightMap[(int)actor.Position.Y * Constants.RegionSize + (int)actor.Position.X]; 193 terrainHeight = _heightMap[(int)actor.Position.Y * (int)m_regionExtent.Y + (int)actor.Position.X];
134 194
135 float height = terrainHeight + actor.Size.Z; 195 float height = terrainHeight + actor.Size.Z;
196// Console.WriteLine("height {0}, actorPosition {1}", height, actorPosition);
136 197
137 if (actor.Flying) 198 if (actor.Flying)
138 { 199 {
@@ -190,5 +251,6 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
190 Dictionary<uint, float> returncolliders = new Dictionary<uint, float>(); 251 Dictionary<uint, float> returncolliders = new Dictionary<uint, float>();
191 return returncolliders; 252 return returncolliders;
192 } 253 }
254
193 } 255 }
194} 256}