diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 6d4de90..6300665 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -5189,5 +5189,49 @@ namespace OpenSim.Region.Framework.Scenes | |||
5189 | ReloadEstateData(); | 5189 | ReloadEstateData(); |
5190 | } | 5190 | } |
5191 | } | 5191 | } |
5192 | |||
5193 | public Vector3[] GetCombinedBoundingBox(List<SceneObjectGroup> objects, out float minX, out float maxX, out float minY, out float maxY, out float minZ, out float maxZ) | ||
5194 | { | ||
5195 | minX = 256; | ||
5196 | maxX = -256; | ||
5197 | minY = 256; | ||
5198 | maxY = -256; | ||
5199 | minZ = 8192; | ||
5200 | maxZ = -256; | ||
5201 | |||
5202 | List<Vector3> offsets = new List<Vector3>(); | ||
5203 | |||
5204 | foreach (SceneObjectGroup g in objects) | ||
5205 | { | ||
5206 | float ominX, ominY, ominZ, omaxX, omaxY, omaxZ; | ||
5207 | |||
5208 | g.GetAxisAlignedBoundingBoxRaw(out ominX, out omaxX, out ominY, out omaxY, out ominZ, out omaxZ); | ||
5209 | |||
5210 | if (minX > ominX) | ||
5211 | minX = ominX; | ||
5212 | if (minY > ominY) | ||
5213 | minY = ominY; | ||
5214 | if (minZ > ominZ) | ||
5215 | minZ = ominZ; | ||
5216 | if (maxX < omaxX) | ||
5217 | maxX = omaxX; | ||
5218 | if (maxY < omaxY) | ||
5219 | maxY = omaxY; | ||
5220 | if (maxZ < omaxZ) | ||
5221 | maxZ = omaxZ; | ||
5222 | } | ||
5223 | |||
5224 | foreach (SceneObjectGroup g in objects) | ||
5225 | { | ||
5226 | Vector3 vec = g.AbsolutePosition; | ||
5227 | vec.X -= minX; | ||
5228 | vec.Y -= minY; | ||
5229 | vec.Z -= minZ; | ||
5230 | |||
5231 | offsets.Add(vec); | ||
5232 | } | ||
5233 | |||
5234 | return offsets.ToArray(); | ||
5235 | } | ||
5192 | } | 5236 | } |
5193 | } | 5237 | } |