diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/IClientAPI.cs | 5 | ||||
-rw-r--r-- | OpenSim/Framework/RegionSettings.cs | 86 |
2 files changed, 91 insertions, 0 deletions
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 29a69c3..1326fe9 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -358,6 +358,8 @@ namespace OpenSim.Framework | |||
358 | 358 | ||
359 | public delegate void EstateChangeInfo(IClientAPI client, UUID invoice, UUID senderID, UInt32 param1, UInt32 param2); | 359 | public delegate void EstateChangeInfo(IClientAPI client, UUID invoice, UUID senderID, UInt32 param1, UInt32 param2); |
360 | 360 | ||
361 | public delegate void EstateManageTelehub(IClientAPI client, UUID invoice, UUID senderID, string cmd, UInt32 param1); | ||
362 | |||
361 | public delegate void RequestTerrain(IClientAPI remoteClient, string clientFileName); | 363 | public delegate void RequestTerrain(IClientAPI remoteClient, string clientFileName); |
362 | 364 | ||
363 | public delegate void BakeTerrain(IClientAPI remoteClient); | 365 | public delegate void BakeTerrain(IClientAPI remoteClient); |
@@ -769,6 +771,7 @@ namespace OpenSim.Framework | |||
769 | event ModifyTerrain OnModifyTerrain; | 771 | event ModifyTerrain OnModifyTerrain; |
770 | event BakeTerrain OnBakeTerrain; | 772 | event BakeTerrain OnBakeTerrain; |
771 | event EstateChangeInfo OnEstateChangeInfo; | 773 | event EstateChangeInfo OnEstateChangeInfo; |
774 | event EstateManageTelehub OnEstateManageTelehub; | ||
772 | // [Obsolete("LLClientView Specific.")] | 775 | // [Obsolete("LLClientView Specific.")] |
773 | event SetAppearance OnSetAppearance; | 776 | event SetAppearance OnSetAppearance; |
774 | // [Obsolete("LLClientView Specific - Replace and rename OnAvatarUpdate. Difference from SetAppearance?")] | 777 | // [Obsolete("LLClientView Specific - Replace and rename OnAvatarUpdate. Difference from SetAppearance?")] |
@@ -1141,6 +1144,8 @@ namespace OpenSim.Framework | |||
1141 | 1144 | ||
1142 | void SendTaskInventory(UUID taskID, short serial, byte[] fileName); | 1145 | void SendTaskInventory(UUID taskID, short serial, byte[] fileName); |
1143 | 1146 | ||
1147 | void SendTelehubInfo(UUID ObjectID, string ObjectName, Vector3 ObjectPos, Quaternion ObjectRot, List<Vector3> SpawnPoint); | ||
1148 | |||
1144 | /// <summary> | 1149 | /// <summary> |
1145 | /// Used by the server to inform the client of new inventory items and folders. | 1150 | /// Used by the server to inform the client of new inventory items and folders. |
1146 | /// </summary> | 1151 | /// </summary> |
diff --git a/OpenSim/Framework/RegionSettings.cs b/OpenSim/Framework/RegionSettings.cs index 673cf20..e115432 100644 --- a/OpenSim/Framework/RegionSettings.cs +++ b/OpenSim/Framework/RegionSettings.cs | |||
@@ -26,11 +26,53 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | ||
29 | using System.IO; | 30 | using System.IO; |
30 | using OpenMetaverse; | 31 | using OpenMetaverse; |
31 | 32 | ||
32 | namespace OpenSim.Framework | 33 | namespace OpenSim.Framework |
33 | { | 34 | { |
35 | public struct SpawnPoint | ||
36 | { | ||
37 | public float Yaw; | ||
38 | public float Pitch; | ||
39 | public float Distance; | ||
40 | |||
41 | public void SetLocation(Vector3 pos, Quaternion rot, Vector3 point) | ||
42 | { | ||
43 | // The point is an absolute position, so we need the relative | ||
44 | // location to the spawn point | ||
45 | Vector3 offset = point - pos; | ||
46 | Distance = Vector3.Mag(offset); | ||
47 | |||
48 | // Next we need to rotate this vector into the spawn point's | ||
49 | // coordinate system | ||
50 | rot.W = -rot.W; | ||
51 | offset = offset * rot; | ||
52 | |||
53 | Vector3 dir = Vector3.Normalize(offset); | ||
54 | |||
55 | // Get the bearing (yaw) | ||
56 | Yaw = (float)Math.Atan2(dir.Y, dir.X); | ||
57 | |||
58 | // Get the elevation (pitch) | ||
59 | Pitch = (float)-Math.Atan2(dir.Z, Math.Sqrt(dir.X * dir.X + dir.Y * dir.Y)); | ||
60 | } | ||
61 | |||
62 | public Vector3 GetLocation(Vector3 pos, Quaternion rot) | ||
63 | { | ||
64 | Quaternion y = Quaternion.CreateFromEulers(0, 0, Yaw); | ||
65 | Quaternion p = Quaternion.CreateFromEulers(0, Pitch, 0); | ||
66 | |||
67 | Vector3 dir = new Vector3(1, 0, 0) * p * y; | ||
68 | Vector3 offset = dir * (float)Distance; | ||
69 | |||
70 | offset *= rot; | ||
71 | |||
72 | return pos + offset; | ||
73 | } | ||
74 | } | ||
75 | |||
34 | public class RegionSettings | 76 | public class RegionSettings |
35 | { | 77 | { |
36 | public delegate void SaveDelegate(RegionSettings rs); | 78 | public delegate void SaveDelegate(RegionSettings rs); |
@@ -397,5 +439,49 @@ namespace OpenSim.Framework | |||
397 | set { m_LoadedCreationID = value; } | 439 | set { m_LoadedCreationID = value; } |
398 | } | 440 | } |
399 | 441 | ||
442 | // Connected Telehub object | ||
443 | private UUID m_TelehubObject; | ||
444 | public UUID TelehubObject | ||
445 | { | ||
446 | get | ||
447 | { | ||
448 | return m_TelehubObject; | ||
449 | } | ||
450 | set | ||
451 | { | ||
452 | m_TelehubObject = value; | ||
453 | } | ||
454 | } | ||
455 | |||
456 | // Our Connected Telehub's SpawnPoints | ||
457 | public List<SpawnPoint> l_SpawnPoints = new List<SpawnPoint>(); | ||
458 | |||
459 | // Add a SpawnPoint | ||
460 | // ** These are not region coordinates ** | ||
461 | // They are relative to the Telehub coordinates | ||
462 | // | ||
463 | public void AddSpawnPoint(SpawnPoint point) | ||
464 | { | ||
465 | l_SpawnPoints.Add(point); | ||
466 | } | ||
467 | |||
468 | // Remove a SpawnPoint | ||
469 | public void RemoveSpawnPoint(int point_index) | ||
470 | { | ||
471 | l_SpawnPoints.RemoveAt(point_index); | ||
472 | } | ||
473 | |||
474 | // Return the List of SpawnPoints | ||
475 | public List<SpawnPoint> SpawnPoints() | ||
476 | { | ||
477 | return l_SpawnPoints; | ||
478 | |||
479 | } | ||
480 | |||
481 | // Clear the SpawnPoints List of all entries | ||
482 | public void ClearSpawnPoints() | ||
483 | { | ||
484 | l_SpawnPoints.Clear(); | ||
485 | } | ||
400 | } | 486 | } |
401 | } | 487 | } |