Telehub Support:

Telehub settings now persist to the database and are saved across sim restarts. So-far this only works on MySQL. this is a work in progress, teleport routing is not yet implemented.
This commit is contained in:
BlueWall
2012-01-21 23:26:27 -05:00
parent 590f707c42
commit 32d58d6e3e
6 changed files with 340 additions and 70 deletions

View File

@@ -157,6 +157,7 @@ namespace OpenSim.Data.MySQL
DoCreate(es);
LoadBanList(es);
LoadSpawnPoints(es);
es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers");
es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users");
@@ -210,7 +211,7 @@ namespace OpenSim.Data.MySQL
}
LoadBanList(es);
LoadSpawnPoints(es);
es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers");
es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users");
es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups");
@@ -297,11 +298,74 @@ namespace OpenSim.Data.MySQL
}
SaveBanList(es);
SaveSpawnPoints(es);
SaveUUIDList(es.EstateID, "estate_managers", es.EstateManagers);
SaveUUIDList(es.EstateID, "estate_users", es.EstateAccess);
SaveUUIDList(es.EstateID, "estate_groups", es.EstateGroups);
}
private void LoadSpawnPoints(EstateSettings es)
{
es.ClearSpawnPoints();
using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
{
dbcon.Open();
using (MySqlCommand cmd = dbcon.CreateCommand())
{
uint EstateID = es.EstateID;
cmd.CommandText = "select PointX, PointY, PointZ from spawn_points where EstateID = ?EstateID";
cmd.Parameters.AddWithValue("?EstateID", es.EstateID);
using (IDataReader r = cmd.ExecuteReader())
{
while (r.Read())
{
Vector3 point = new Vector3();
point.X = (float)r["PointX"];
point.Y = (float)r["PointY"];
point.Z = (float)r["PointZ"];
es.AddSpawnPoint(point);
}
}
}
}
}
private void SaveSpawnPoints(EstateSettings es)
{
using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
{
dbcon.Open();
using (MySqlCommand cmd = dbcon.CreateCommand())
{
cmd.CommandText = "delete from spawn_points where EstateID = ?EstateID";
cmd.Parameters.AddWithValue("?EstateID", es.EstateID.ToString());
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cmd.CommandText = "insert into spawn_points (EstateID, PointX, PointY, PointZ) values ( ?EstateID, ?PointX, ?PointY,?PointZ)";
foreach (Vector3 p in es.SpawnPoints())
{
cmd.Parameters.AddWithValue("?EstateID", es.EstateID.ToString());
cmd.Parameters.AddWithValue("?PointX", p.X);
cmd.Parameters.AddWithValue("?PointY", p.Y);
cmd.Parameters.AddWithValue("?PointZ", p.Z);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
}
}
private void LoadBanList(EstateSettings es)
{
es.ClearBans();

View File

@@ -78,4 +78,25 @@ ALTER TABLE estate_settings AUTO_INCREMENT = 100;
COMMIT;
:VERSION 33 #--------------------- ( Supporting Telehubs
BEGIN;
CREATE TABLE IF NOT EXISTS `spawn_points` (
`EstateID` varchar(36) COLLATE utf8_unicode_ci NOT NULL,
`PointX` float NOT NULL,
`PointY` float NOT NULL,
`PointZ` float NOT NULL,
KEY `EstateID` (`EstateID`)
) ENGINE=Innodb;
ALTER TABLE `estate_settings` ADD COLUMN `TelehubObject` varchar(36) NOT NULL;
ALTER TABLE `estate_settings` ADD COLUMN `TelehubName` varchar(255) NOT NULL;
ALTER TABLE `estate_settings` ADD COLUMN `TelehubEnabled` tinyint(4) NOT NULL;
ALTER TABLE `estate_settings` ADD COLUMN `TelehubPosX` float NOT NULL;
ALTER TABLE `estate_settings` ADD COLUMN `TelehubPosY` float NOT NULL;
ALTER TABLE `estate_settings` ADD COLUMN `TelehubPosZ` float NOT NULL;
ALTER TABLE `estate_settings` ADD COLUMN `TelehubRotX` float NOT NULL;
ALTER TABLE `estate_settings` ADD COLUMN `TelehubRotY` float NOT NULL;
ALTER TABLE `estate_settings` ADD COLUMN `TelehubRotZ` float NOT NULL;
ALTER TABLE `estate_settings` ADD COLUMN `TelehubRotW` float NOT NULL;
COMMIT;