Simplify and streamline telehub editing code. Verify rotations and fix
spwan point positioning on rotated telehubs.avinationmerge
parent
d51ae0ecac
commit
cc02f78d4e
|
@ -47,6 +47,7 @@ namespace OpenSim.Framework
|
|||
|
||||
// Next we need to rotate this vector into the spawn point's
|
||||
// coordinate system
|
||||
rot.W = -rot.W;
|
||||
offset = offset * rot;
|
||||
|
||||
Vector3 dir = Vector3.Normalize(offset);
|
||||
|
@ -66,7 +67,6 @@ namespace OpenSim.Framework
|
|||
Vector3 dir = new Vector3(1, 0, 0) * p * y;
|
||||
Vector3 offset = dir * (float)Distance;
|
||||
|
||||
rot.W = -rot.W;
|
||||
offset *= rot;
|
||||
|
||||
return pos + offset;
|
||||
|
|
|
@ -623,8 +623,6 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
|||
switch (cmd)
|
||||
{
|
||||
case "info ui":
|
||||
// Send info:
|
||||
SendTelehubInfo(client);
|
||||
break;
|
||||
|
||||
case "connect":
|
||||
|
@ -634,32 +632,31 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
|||
return;
|
||||
SceneObjectGroup grp = part.ParentGroup;
|
||||
|
||||
if (m_Telehub.Connect(grp))
|
||||
SendTelehubInfo(client);
|
||||
m_Telehub.Connect(grp);
|
||||
break;
|
||||
|
||||
case "delete":
|
||||
// Disconnect Telehub
|
||||
if (m_Telehub.Disconnect())
|
||||
SendTelehubInfo(client);
|
||||
m_Telehub.Disconnect();
|
||||
break;
|
||||
|
||||
case "spawnpoint add":
|
||||
// Add SpawnPoint to the Telehub
|
||||
part = Scene.GetSceneObjectPart((uint)param1);
|
||||
if( m_Telehub.AddSpawnPoint(part.AbsolutePosition))
|
||||
SendTelehubInfo(client);
|
||||
if (part == null)
|
||||
return;
|
||||
m_Telehub.AddSpawnPoint(part.AbsolutePosition);
|
||||
break;
|
||||
|
||||
case "spawnpoint remove":
|
||||
// Remove SpawnPoint from Telehub
|
||||
if (m_Telehub.RemoveSpawnPoint((int)param1))
|
||||
SendTelehubInfo(client);
|
||||
m_Telehub.RemoveSpawnPoint((int)param1);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
SendTelehubInfo(client);
|
||||
}
|
||||
|
||||
private void SendSimulatorBlueBoxMessage(
|
||||
|
@ -1358,7 +1355,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
|||
|
||||
foreach (SpawnPoint sp in settings.SpawnPoints())
|
||||
{
|
||||
spawnPoints.Add(sp.GetLocation(Vector3.Zero, telehub.GroupRotation));
|
||||
spawnPoints.Add(sp.GetLocation(Vector3.Zero, Quaternion.Identity));
|
||||
}
|
||||
|
||||
client.SendTelehubInfo(settings.TelehubObject,
|
||||
|
|
|
@ -26,15 +26,19 @@
|
|||
*/
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using OpenMetaverse;
|
||||
using System.Collections.Generic;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Region.Framework.Scenes;
|
||||
using log4net;
|
||||
|
||||
namespace OpenSim.Region.CoreModules.World.Estate
|
||||
{
|
||||
public class TelehubManager
|
||||
{
|
||||
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
Scene m_Scene;
|
||||
|
||||
public TelehubManager(Scene scene)
|
||||
|
@ -43,78 +47,49 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
|||
}
|
||||
|
||||
// Connect the Telehub
|
||||
public bool Connect(SceneObjectGroup grp)
|
||||
public void Connect(SceneObjectGroup grp)
|
||||
{
|
||||
try
|
||||
{
|
||||
m_Scene.RegionInfo.RegionSettings.ClearSpawnPoints();
|
||||
|
||||
m_Scene.RegionInfo.RegionSettings.TelehubObject = grp.UUID;
|
||||
m_Scene.RegionInfo.RegionSettings.Save();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
m_Scene.RegionInfo.RegionSettings.ClearSpawnPoints();
|
||||
|
||||
return true;
|
||||
m_Scene.RegionInfo.RegionSettings.TelehubObject = grp.UUID;
|
||||
m_Scene.RegionInfo.RegionSettings.Save();
|
||||
}
|
||||
|
||||
// Disconnect the Telehub:
|
||||
public bool Disconnect()
|
||||
public void Disconnect()
|
||||
{
|
||||
if (m_Scene.RegionInfo.RegionSettings.TelehubObject == UUID.Zero)
|
||||
return false;
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
m_Scene.RegionInfo.RegionSettings.TelehubObject = UUID.Zero;
|
||||
m_Scene.RegionInfo.RegionSettings.ClearSpawnPoints();
|
||||
m_Scene.RegionInfo.RegionSettings.Save();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
m_Scene.RegionInfo.RegionSettings.TelehubObject = UUID.Zero;
|
||||
m_Scene.RegionInfo.RegionSettings.ClearSpawnPoints();
|
||||
m_Scene.RegionInfo.RegionSettings.Save();
|
||||
}
|
||||
|
||||
// Add a SpawnPoint to the Telehub
|
||||
public bool AddSpawnPoint(Vector3 point)
|
||||
public void AddSpawnPoint(Vector3 point)
|
||||
{
|
||||
if (m_Scene.RegionInfo.RegionSettings.TelehubObject == UUID.Zero)
|
||||
return false;
|
||||
return;
|
||||
|
||||
SceneObjectGroup grp = m_Scene.GetSceneObjectGroup(m_Scene.RegionInfo.RegionSettings.TelehubObject);
|
||||
if (grp == null)
|
||||
return false;
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
SpawnPoint sp = new SpawnPoint();
|
||||
sp.SetLocation(grp.AbsolutePosition, grp.GroupRotation, point);
|
||||
m_Scene.RegionInfo.RegionSettings.AddSpawnPoint(sp);
|
||||
m_Scene.RegionInfo.RegionSettings.Save();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
SpawnPoint sp = new SpawnPoint();
|
||||
sp.SetLocation(grp.AbsolutePosition, grp.GroupRotation, point);
|
||||
m_Scene.RegionInfo.RegionSettings.AddSpawnPoint(sp);
|
||||
m_Scene.RegionInfo.RegionSettings.Save();
|
||||
}
|
||||
|
||||
// Remove a SpawnPoint from the Telehub
|
||||
public bool RemoveSpawnPoint(int spawnpoint)
|
||||
public void RemoveSpawnPoint(int spawnpoint)
|
||||
{
|
||||
if (m_Scene.RegionInfo.RegionSettings.TelehubObject == UUID.Zero)
|
||||
return false;
|
||||
return;
|
||||
|
||||
m_Scene.RegionInfo.RegionSettings.RemoveSpawnPoint(spawnpoint);
|
||||
m_Scene.RegionInfo.RegionSettings.Save();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue