* Major ass commit.
* Sqlite Storage Engine now supports terrain -- however be aware that every terrain revision stored will at 512KB to your database file. At the moment it is storing every revision from the first. * Fixed an issue where by noverbose mode would display lots of useless junk. Noverbose mode is now quite usable. * Fixed a whole bunch of console message issues such as naming and categorisationafrisby
parent
22e330c1a0
commit
c4707a284f
|
@ -72,7 +72,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public AssetCache(IAssetServer assetServer)
|
public AssetCache(IAssetServer assetServer)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("Creating Asset cache");
|
OpenSim.Framework.Console.MainLog.Instance.Verbose("ASSETSTORAGE","Creating Asset cache");
|
||||||
_assetServer = assetServer;
|
_assetServer = assetServer;
|
||||||
_assetServer.SetReceiver(this);
|
_assetServer.SetReceiver(this);
|
||||||
Assets = new Dictionary<LLUUID, AssetInfo>();
|
Assets = new Dictionary<LLUUID, AssetInfo>();
|
||||||
|
@ -89,7 +89,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
|
|
||||||
public AssetCache(string assetServerDLLName, string assetServerURL, string assetServerKey)
|
public AssetCache(string assetServerDLLName, string assetServerURL, string assetServerKey)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("Creating Asset cache");
|
OpenSim.Framework.Console.MainLog.Instance.Verbose("ASSETSTORAGE", "Creating Asset cache");
|
||||||
_assetServer = this.LoadAssetDll(assetServerDLLName);
|
_assetServer = this.LoadAssetDll(assetServerDLLName);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
yapfile = File.Exists(Path.Combine(Util.dataDir(), "regionassets.yap"));
|
yapfile = File.Exists(Path.Combine(Util.dataDir(), "regionassets.yap"));
|
||||||
|
|
||||||
db = Db4oFactory.OpenFile(Path.Combine(Util.dataDir(), "regionassets.yap"));
|
db = Db4oFactory.OpenFile(Path.Combine(Util.dataDir(), "regionassets.yap"));
|
||||||
MainLog.Instance.Verbose("Db4 Asset database creation");
|
MainLog.Instance.Verbose("ASSETS","Db4 Asset database creation");
|
||||||
|
|
||||||
if (!yapfile)
|
if (!yapfile)
|
||||||
{
|
{
|
||||||
|
@ -75,7 +75,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
|
|
||||||
if (db != null)
|
if (db != null)
|
||||||
{
|
{
|
||||||
MainLog.Instance.Verbose("Closing local asset server database");
|
MainLog.Instance.Verbose("ASSETSERVER","Closing local asset server database");
|
||||||
db.Close();
|
db.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
|
|
||||||
public AssetServerBase()
|
public AssetServerBase()
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("Starting Db4o asset storage system");
|
OpenSim.Framework.Console.MainLog.Instance.Verbose("ASSETSERVER","Starting Db4o asset storage system");
|
||||||
this._assetRequests = new BlockingQueue<ARequest>();
|
this._assetRequests = new BlockingQueue<ARequest>();
|
||||||
|
|
||||||
this._localAssetServerThread = new Thread( RunRequests );
|
this._localAssetServerThread = new Thread( RunRequests );
|
||||||
|
|
|
@ -68,7 +68,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
m_assetProviderPlugin = plug;
|
m_assetProviderPlugin = plug;
|
||||||
m_assetProviderPlugin.Initialise();
|
m_assetProviderPlugin.Initialise();
|
||||||
|
|
||||||
MainLog.Instance.Verbose("AssetStorage: Added " + m_assetProviderPlugin.Name + " " + m_assetProviderPlugin.Version);
|
MainLog.Instance.Verbose("AssetStorage","Added " + m_assetProviderPlugin.Name + " " + m_assetProviderPlugin.Version);
|
||||||
}
|
}
|
||||||
|
|
||||||
typeInterface = null;
|
typeInterface = null;
|
||||||
|
@ -92,7 +92,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
{
|
{
|
||||||
ARequest req = this._assetRequests.Dequeue();
|
ARequest req = this._assetRequests.Dequeue();
|
||||||
|
|
||||||
MainLog.Instance.Verbose("Requesting asset: " + req.AssetID);
|
MainLog.Instance.Verbose("AssetStorage","Requesting asset: " + req.AssetID);
|
||||||
|
|
||||||
AssetBase asset = null;
|
AssetBase asset = null;
|
||||||
lock (syncLock)
|
lock (syncLock)
|
||||||
|
|
|
@ -70,7 +70,7 @@ namespace OpenSim.Framework.Communications
|
||||||
(IInventoryData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
(IInventoryData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
||||||
plug.Initialise();
|
plug.Initialise();
|
||||||
this.m_plugins.Add(plug.getName(), plug);
|
this.m_plugins.Add(plug.getName(), plug);
|
||||||
MainLog.Instance.Verbose("Inventorystorage: Added IInventoryData Interface");
|
MainLog.Instance.Verbose("INVENTORY","Added IInventoryData Interface");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,7 @@ namespace OpenSim.Framework.UserManagement
|
||||||
public XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request)
|
public XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request)
|
||||||
{
|
{
|
||||||
|
|
||||||
MainLog.Instance.Verbose("Attempting login now...");
|
MainLog.Instance.Verbose("LOGIN","Attempting login now...");
|
||||||
XmlRpcResponse response = new XmlRpcResponse();
|
XmlRpcResponse response = new XmlRpcResponse();
|
||||||
Hashtable requestData = (Hashtable)request.Params[0];
|
Hashtable requestData = (Hashtable)request.Params[0];
|
||||||
|
|
||||||
|
|
|
@ -169,10 +169,13 @@ namespace OpenSim.Framework.Console
|
||||||
/// <param name="format">The message to send</param>
|
/// <param name="format">The message to send</param>
|
||||||
/// <param name="args">WriteLine-style message arguments</param>
|
/// <param name="args">WriteLine-style message arguments</param>
|
||||||
public void Verbose(string format, params object[] args)
|
public void Verbose(string format, params object[] args)
|
||||||
|
{
|
||||||
|
if (!m_silent)
|
||||||
{
|
{
|
||||||
WriteNewLine(ConsoleColor.Gray, format, args);
|
WriteNewLine(ConsoleColor.Gray, format, args);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sends an informational message to the current log output
|
/// Sends an informational message to the current log output
|
||||||
|
@ -181,11 +184,14 @@ namespace OpenSim.Framework.Console
|
||||||
/// <param name="format">The message to send</param>
|
/// <param name="format">The message to send</param>
|
||||||
/// <param name="args">WriteLine-style message arguments</param>
|
/// <param name="args">WriteLine-style message arguments</param>
|
||||||
public void Verbose(string sender, string format, params object[] args)
|
public void Verbose(string sender, string format, params object[] args)
|
||||||
|
{
|
||||||
|
if (!m_silent)
|
||||||
{
|
{
|
||||||
WritePrefixLine(DeriveColor(sender), sender);
|
WritePrefixLine(DeriveColor(sender), sender);
|
||||||
WriteNewLine(ConsoleColor.Gray, format, args);
|
WriteNewLine(ConsoleColor.Gray, format, args);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sends a status message to the current log output
|
/// Sends a status message to the current log output
|
||||||
|
@ -234,8 +240,7 @@ namespace OpenSim.Framework.Console
|
||||||
Log.Write(now);
|
Log.Write(now);
|
||||||
Log.WriteLine(format, args);
|
Log.WriteLine(format, args);
|
||||||
Log.Flush();
|
Log.Flush();
|
||||||
if (!m_silent)
|
|
||||||
{
|
|
||||||
System.Console.Write(now);
|
System.Console.Write(now);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -250,7 +255,6 @@ namespace OpenSim.Framework.Console
|
||||||
// Some older systems dont support coloured text.
|
// Some older systems dont support coloured text.
|
||||||
System.Console.WriteLine(format, args);
|
System.Console.WriteLine(format, args);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -265,8 +269,6 @@ namespace OpenSim.Framework.Console
|
||||||
|
|
||||||
System.Console.Write("[");
|
System.Console.Write("[");
|
||||||
|
|
||||||
if (!m_silent)
|
|
||||||
{
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
System.Console.ForegroundColor = color;
|
System.Console.ForegroundColor = color;
|
||||||
|
@ -278,7 +280,6 @@ namespace OpenSim.Framework.Console
|
||||||
// Some older systems dont support coloured text.
|
// Some older systems dont support coloured text.
|
||||||
System.Console.WriteLine(sender);
|
System.Console.WriteLine(sender);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
System.Console.Write("] \t");
|
System.Console.Write("] \t");
|
||||||
|
|
||||||
|
|
|
@ -556,10 +556,14 @@ namespace OpenSim.Framework.Types
|
||||||
}
|
}
|
||||||
private ConfigurationMember configMember;
|
private ConfigurationMember configMember;
|
||||||
public EstateSettings()
|
public EstateSettings()
|
||||||
|
{
|
||||||
|
// Temporary hack to prevent multiple loadings.
|
||||||
|
if (configMember == null)
|
||||||
{
|
{
|
||||||
configMember = new ConfigurationMember(Path.Combine(Util.configDir(), "estate_settings.xml"), "ESTATE SETTINGS", this.loadConfigurationOptions, this.handleIncomingConfiguration);
|
configMember = new ConfigurationMember(Path.Combine(Util.configDir(), "estate_settings.xml"), "ESTATE SETTINGS", this.loadConfigurationOptions, this.handleIncomingConfiguration);
|
||||||
configMember.performConfigurationRetrieve();
|
configMember.performConfigurationRetrieve();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void loadConfigurationOptions()
|
public void loadConfigurationOptions()
|
||||||
{
|
{
|
||||||
|
|
|
@ -224,7 +224,7 @@ namespace OpenSim.Framework.Servers
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
MainLog.Instance.Status("HTTPD", "Spawned main thread OK");
|
MainLog.Instance.Verbose("HTTPD", "Spawned main thread OK");
|
||||||
m_httpListener = new HttpListener();
|
m_httpListener = new HttpListener();
|
||||||
|
|
||||||
m_httpListener.Prefixes.Add("http://+:" + m_port + "/");
|
m_httpListener.Prefixes.Add("http://+:" + m_port + "/");
|
||||||
|
|
|
@ -262,8 +262,10 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MainLog.Instance.Verbose("No startup command script specified. Moving on...");
|
MainLog.Instance.Verbose("STARTUP","No startup command script specified. Moving on...");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MainLog.Instance.Status("STARTUP","Startup complete, serving " + m_udpServers.Count.ToString() + " region(s)");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void CreateDefaultRegionInfoXml(string fileName)
|
private static void CreateDefaultRegionInfoXml(string fileName)
|
||||||
|
@ -361,11 +363,11 @@ namespace OpenSim
|
||||||
RunCommandScript(m_shutdownCommandsFile);
|
RunCommandScript(m_shutdownCommandsFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_log.Verbose("Closing all threads");
|
m_log.Verbose("SHUTDOWN", "Closing all threads");
|
||||||
m_log.Verbose("Killing listener thread");
|
m_log.Verbose("SHUTDOWN", "Killing listener thread");
|
||||||
m_log.Verbose("Killing clients");
|
m_log.Verbose("SHUTDOWN", "Killing clients");
|
||||||
// IMPLEMENT THIS
|
// IMPLEMENT THIS
|
||||||
m_log.Verbose("Closing console and terminating");
|
m_log.Verbose("SHUTDOWN", "Closing console and terminating");
|
||||||
|
|
||||||
m_sceneManager.Close();
|
m_sceneManager.Close();
|
||||||
|
|
||||||
|
@ -380,7 +382,7 @@ namespace OpenSim
|
||||||
/// <param name="fileName"></param>
|
/// <param name="fileName"></param>
|
||||||
private void RunCommandScript(string fileName)
|
private void RunCommandScript(string fileName)
|
||||||
{
|
{
|
||||||
MainLog.Instance.Verbose("Running command script (" + fileName + ")");
|
MainLog.Instance.Verbose("COMMANDFILE", "Running " + fileName);
|
||||||
if (File.Exists(fileName))
|
if (File.Exists(fileName))
|
||||||
{
|
{
|
||||||
StreamReader readFile = File.OpenText(fileName);
|
StreamReader readFile = File.OpenText(fileName);
|
||||||
|
@ -389,14 +391,14 @@ namespace OpenSim
|
||||||
{
|
{
|
||||||
if (currentCommand != "")
|
if (currentCommand != "")
|
||||||
{
|
{
|
||||||
MainLog.Instance.Verbose("Running '" + currentCommand + "'");
|
MainLog.Instance.Verbose("COMMANDFILE", "Running '" + currentCommand + "'");
|
||||||
MainLog.Instance.MainLogRunCommand(currentCommand);
|
MainLog.Instance.MainLogRunCommand(currentCommand);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MainLog.Instance.Error("Command script missing. Can not run commands");
|
MainLog.Instance.Error("COMMANDFILE","Command script missing. Can not run commands");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,8 +47,8 @@ namespace OpenSim.Region.Environment.Interfaces
|
||||||
|
|
||||||
List<SceneObjectGroup> LoadObjects(LLUUID regionUUID);
|
List<SceneObjectGroup> LoadObjects(LLUUID regionUUID);
|
||||||
|
|
||||||
void StoreTerrain(double[,] terrain);
|
void StoreTerrain(double[,] terrain, LLUUID regionID);
|
||||||
double[,] LoadTerrain();
|
double[,] LoadTerrain(LLUUID regionID);
|
||||||
|
|
||||||
void StoreParcel(Land Parcel);
|
void StoreParcel(Land Parcel);
|
||||||
void RemoveLandObject(uint ID);
|
void RemoveLandObject(uint ID);
|
||||||
|
|
|
@ -168,7 +168,7 @@ namespace OpenSim.Region.Environment
|
||||||
}
|
}
|
||||||
catch( BadImageFormatException e )
|
catch( BadImageFormatException e )
|
||||||
{
|
{
|
||||||
m_log.Warn( "MODULES", "The file [{0}] is not a module assembly.", e.FileName );
|
m_log.Verbose( "MODULES", "The file [{0}] is not a module assembly.", e.FileName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,26 +45,55 @@ namespace OpenSim.Region.Environment.Modules
|
||||||
private List<Scene> m_scenes = new List<Scene>();
|
private List<Scene> m_scenes = new List<Scene>();
|
||||||
private LogBase m_log;
|
private LogBase m_log;
|
||||||
|
|
||||||
|
private string m_server = null;
|
||||||
|
private int m_port = 6668;
|
||||||
|
private string m_user = "USER OpenSimBot 8 * :I'm a OpenSim to irc bot";
|
||||||
|
private string m_nick = null;
|
||||||
|
private string m_channel = null;
|
||||||
|
|
||||||
private int m_whisperdistance = 10;
|
private int m_whisperdistance = 10;
|
||||||
private int m_saydistance = 30;
|
private int m_saydistance = 30;
|
||||||
private int m_shoutdistance = 100;
|
private int m_shoutdistance = 100;
|
||||||
|
|
||||||
private IRCChatModule m_irc = null;
|
private NetworkStream m_stream;
|
||||||
|
private TcpClient m_irc;
|
||||||
|
private StreamWriter m_ircWriter;
|
||||||
|
private StreamReader m_ircReader;
|
||||||
|
|
||||||
|
private Thread pingSender;
|
||||||
|
private Thread listener;
|
||||||
|
|
||||||
|
private bool m_enable_irc = false;
|
||||||
|
private bool connected = false;
|
||||||
|
|
||||||
public ChatModule()
|
public ChatModule()
|
||||||
{
|
{
|
||||||
|
m_nick = "OSimBot" + Util.RandomClass.Next(1, 99);
|
||||||
|
m_irc = null;
|
||||||
|
m_ircWriter = null;
|
||||||
|
m_ircReader = null;
|
||||||
|
|
||||||
m_log = OpenSim.Framework.Console.MainLog.Instance;
|
m_log = OpenSim.Framework.Console.MainLog.Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Initialise(Scene scene, Nini.Config.IConfigSource config)
|
public void Initialise(Scene scene, Nini.Config.IConfigSource config)
|
||||||
{
|
{
|
||||||
// wrap this in a try block so that defaults will work if
|
|
||||||
// the config file doesn't specify otherwise.
|
|
||||||
try {
|
try {
|
||||||
m_whisperdistance = config.Configs["Chat"].GetInt("whisper_distance", m_whisperdistance);
|
m_server = config.Configs["IRC"].GetString("server");
|
||||||
m_saydistance = config.Configs["Chat"].GetInt("say_distance", m_saydistance);
|
m_nick = config.Configs["IRC"].GetString("nick");
|
||||||
m_shoutdistance = config.Configs["Chat"].GetInt("shout_distance", m_shoutdistance);
|
m_channel = config.Configs["IRC"].GetString("channel");
|
||||||
} catch (Exception e) {}
|
m_port = config.Configs["IRC"].GetInt("port", m_port);
|
||||||
|
m_user = config.Configs["IRC"].GetString("username", m_user);
|
||||||
|
if (m_server != null && m_nick != null && m_channel != null) {
|
||||||
|
m_enable_irc = true;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
OpenSim.Framework.Console.MainLog.Instance.Verbose("No IRC config information, skipping IRC bridge configuration");
|
||||||
|
}
|
||||||
|
|
||||||
|
m_whisperdistance = config.Configs["Chat"].GetInt("whisper_distance");
|
||||||
|
m_saydistance = config.Configs["Chat"].GetInt("say_distance");
|
||||||
|
m_shoutdistance = config.Configs["Chat"].GetInt("shout_distance");
|
||||||
|
|
||||||
if (!m_scenes.Contains(scene))
|
if (!m_scenes.Contains(scene))
|
||||||
{
|
{
|
||||||
|
@ -72,21 +101,43 @@ namespace OpenSim.Region.Environment.Modules
|
||||||
scene.EventManager.OnNewClient += NewClient;
|
scene.EventManager.OnNewClient += NewClient;
|
||||||
scene.RegisterModuleInterface<ISimChat>(this);
|
scene.RegisterModuleInterface<ISimChat>(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
// setup IRC Relay
|
|
||||||
m_irc = new IRCChatModule(config);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInitialise()
|
public void PostInitialise()
|
||||||
{
|
{
|
||||||
|
if( m_enable_irc ) {
|
||||||
|
try
|
||||||
|
{
|
||||||
|
m_irc = new TcpClient(m_server, m_port);
|
||||||
|
m_stream = m_irc.GetStream();
|
||||||
|
m_ircReader = new StreamReader(m_stream);
|
||||||
|
m_ircWriter = new StreamWriter(m_stream);
|
||||||
|
|
||||||
if (m_irc.Enabled) {
|
pingSender = new Thread(new ThreadStart(this.PingRun));
|
||||||
m_irc.Connect(m_scenes);
|
pingSender.Start();
|
||||||
|
|
||||||
|
listener = new Thread(new ThreadStart(this.ListenerRun));
|
||||||
|
listener.Start();
|
||||||
|
|
||||||
|
m_ircWriter.WriteLine(m_user);
|
||||||
|
m_ircWriter.Flush();
|
||||||
|
m_ircWriter.WriteLine("NICK " + m_nick);
|
||||||
|
m_ircWriter.Flush();
|
||||||
|
m_ircWriter.WriteLine("JOIN " + m_channel);
|
||||||
|
m_ircWriter.Flush();
|
||||||
|
connected = true;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Console.WriteLine(e.ToString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
|
m_ircWriter.Close();
|
||||||
|
m_ircReader.Close();
|
||||||
m_irc.Close();
|
m_irc.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,6 +156,43 @@ namespace OpenSim.Region.Environment.Modules
|
||||||
client.OnChatFromViewer += SimChat;
|
client.OnChatFromViewer += SimChat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void PingRun()
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
m_ircWriter.WriteLine("PING :" + m_server);
|
||||||
|
m_ircWriter.Flush();
|
||||||
|
Thread.Sleep(15000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ListenerRun()
|
||||||
|
{
|
||||||
|
string inputLine;
|
||||||
|
LLVector3 pos = new LLVector3(128, 128, 20);
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
while ((inputLine = m_ircReader.ReadLine()) != null)
|
||||||
|
{
|
||||||
|
Console.WriteLine(inputLine);
|
||||||
|
if (inputLine.Contains(m_channel))
|
||||||
|
{
|
||||||
|
string mess = inputLine.Substring(inputLine.IndexOf(m_channel));
|
||||||
|
foreach (Scene m_scene in m_scenes)
|
||||||
|
{
|
||||||
|
m_scene.Broadcast(delegate(IClientAPI client)
|
||||||
|
{
|
||||||
|
client.SendChatMessage(
|
||||||
|
Helpers.StringToField(mess), 255, pos, "IRC:",
|
||||||
|
LLUUID.Zero);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Thread.Sleep(50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void SimChat(Object sender, ChatFromViewerArgs e)
|
public void SimChat(Object sender, ChatFromViewerArgs e)
|
||||||
{
|
{
|
||||||
ScenePresence avatar = null;
|
ScenePresence avatar = null;
|
||||||
|
@ -158,9 +246,21 @@ namespace OpenSim.Region.Environment.Modules
|
||||||
|
|
||||||
m_log.Verbose("CHAT", fromName + " (" + e.Channel + " @ " + scene.RegionInfo.RegionName + ") " + typeName + ": " + e.Message);
|
m_log.Verbose("CHAT", fromName + " (" + e.Channel + " @ " + scene.RegionInfo.RegionName + ") " + typeName + ": " + e.Message);
|
||||||
|
|
||||||
if (m_irc.Connected)
|
if (connected)
|
||||||
{
|
{
|
||||||
m_irc.PrivMsg(fromName, scene.RegionInfo.RegionName, e.Message);
|
try
|
||||||
|
{
|
||||||
|
m_ircWriter.WriteLine("PRIVMSG " + m_channel + " :" + "<" + fromName + " in " + scene.RegionInfo.RegionName + ">: " +
|
||||||
|
e.Message);
|
||||||
|
m_ircWriter.Flush();
|
||||||
|
}
|
||||||
|
catch (IOException)
|
||||||
|
{
|
||||||
|
m_log.Error("IRC","Disconnected from IRC server.");
|
||||||
|
listener.Abort();
|
||||||
|
pingSender.Abort();
|
||||||
|
connected = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.Channel == 0)
|
if (e.Channel == 0)
|
||||||
|
@ -187,6 +287,7 @@ namespace OpenSim.Region.Environment.Modules
|
||||||
fromAgentID);
|
fromAgentID);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
case ChatTypeEnum.Say:
|
case ChatTypeEnum.Say:
|
||||||
if (dis < m_saydistance)
|
if (dis < m_saydistance)
|
||||||
{
|
{
|
||||||
|
@ -215,158 +316,10 @@ namespace OpenSim.Region.Environment.Modules
|
||||||
fromName,
|
fromName,
|
||||||
fromAgentID);
|
fromAgentID);
|
||||||
break;
|
break;
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class IRCChatModule {
|
|
||||||
private string m_server = null;
|
|
||||||
private int m_port = 6668;
|
|
||||||
private string m_user = "USER OpenSimBot 8 * :I'm a OpenSim to irc bot";
|
|
||||||
private string m_nick = null;
|
|
||||||
private string m_channel = null;
|
|
||||||
|
|
||||||
private NetworkStream m_stream;
|
|
||||||
private TcpClient m_tcp;
|
|
||||||
private StreamWriter m_writer;
|
|
||||||
private StreamReader m_reader;
|
|
||||||
|
|
||||||
private Thread pingSender;
|
|
||||||
private Thread listener;
|
|
||||||
|
|
||||||
private bool m_enabled = false;
|
|
||||||
private bool m_connected = false;
|
|
||||||
|
|
||||||
private List<Scene> m_scenes = null;
|
|
||||||
private LogBase m_log;
|
|
||||||
|
|
||||||
public IRCChatModule(Nini.Config.IConfigSource config) {
|
|
||||||
m_nick = "OSimBot" + Util.RandomClass.Next(1, 99);
|
|
||||||
m_tcp = null;
|
|
||||||
m_writer = null;
|
|
||||||
m_reader = null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
m_server = config.Configs["IRC"].GetString("server");
|
|
||||||
m_nick = config.Configs["IRC"].GetString("nick");
|
|
||||||
m_channel = config.Configs["IRC"].GetString("channel");
|
|
||||||
m_port = config.Configs["IRC"].GetInt("port", m_port);
|
|
||||||
m_user = config.Configs["IRC"].GetString("username", m_user);
|
|
||||||
if (m_server != null && m_nick != null && m_channel != null) {
|
|
||||||
m_enabled = true;
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
Console.WriteLine("No IRC config information, skipping IRC bridge configuration");
|
|
||||||
}
|
|
||||||
m_log = OpenSim.Framework.Console.MainLog.Instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Connect(List<Scene> scenes) {
|
|
||||||
try {
|
|
||||||
m_scenes = scenes;
|
|
||||||
|
|
||||||
m_tcp = new TcpClient(m_server, m_port);
|
|
||||||
m_log.Verbose("IRC", "Connecting...");
|
|
||||||
m_stream = m_tcp.GetStream();
|
|
||||||
m_log.Verbose("IRC", "Connected to " + m_server);
|
|
||||||
m_reader = new StreamReader(m_stream);
|
|
||||||
m_writer = new StreamWriter(m_stream);
|
|
||||||
|
|
||||||
pingSender = new Thread(new ThreadStart(this.PingRun));
|
|
||||||
pingSender.Start();
|
|
||||||
|
|
||||||
listener = new Thread(new ThreadStart(this.ListenerRun));
|
|
||||||
listener.Start();
|
|
||||||
|
|
||||||
m_writer.WriteLine(m_user);
|
|
||||||
m_writer.Flush();
|
|
||||||
m_writer.WriteLine("NICK " + m_nick);
|
|
||||||
m_writer.Flush();
|
|
||||||
m_writer.WriteLine("JOIN " + m_channel);
|
|
||||||
m_writer.Flush();
|
|
||||||
m_log.Verbose("IRC", "Connection fully established");
|
|
||||||
m_connected = true;
|
|
||||||
} catch (Exception e) {
|
|
||||||
Console.WriteLine(e.ToString());
|
|
||||||
}
|
|
||||||
return m_connected;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Enabled
|
|
||||||
{
|
|
||||||
get { return m_enabled; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Connected
|
|
||||||
{
|
|
||||||
get { return m_connected; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public void PrivMsg(string from, string region, string msg) {
|
|
||||||
try {
|
|
||||||
m_writer.WriteLine("PRIVMSG {0} :<{1} in {2}>: {3}", m_channel, from, region, msg);
|
|
||||||
m_writer.Flush();
|
|
||||||
} catch (IOException) {
|
|
||||||
m_log.Error("IRC","Disconnected from IRC server.");
|
|
||||||
listener.Abort();
|
|
||||||
pingSender.Abort();
|
|
||||||
m_connected = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void PingRun()
|
|
||||||
{
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
m_writer.WriteLine("PING :" + m_server);
|
|
||||||
m_writer.Flush();
|
|
||||||
Thread.Sleep(15000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ListenerRun()
|
|
||||||
{
|
|
||||||
string inputLine;
|
|
||||||
LLVector3 pos = new LLVector3(128, 128, 20);
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
while ((inputLine = m_reader.ReadLine()) != null)
|
|
||||||
{
|
|
||||||
Console.WriteLine(inputLine);
|
|
||||||
if (inputLine.Contains(m_channel))
|
|
||||||
{
|
|
||||||
string mess = inputLine.Substring(inputLine.IndexOf(m_channel));
|
|
||||||
foreach (Scene m_scene in m_scenes)
|
|
||||||
{
|
|
||||||
m_scene.ForEachScenePresence(delegate(ScenePresence avatar)
|
|
||||||
{
|
|
||||||
if (!avatar.IsChildAgent)
|
|
||||||
{
|
|
||||||
avatar.ControllingClient.SendChatMessage(
|
|
||||||
Helpers.StringToField(mess), 255, pos, "IRC:",
|
|
||||||
LLUUID.Zero);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Thread.Sleep(50);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void Close() {
|
|
||||||
listener.Abort();
|
|
||||||
pingSender.Abort();
|
|
||||||
m_writer.Close();
|
|
||||||
m_reader.Close();
|
|
||||||
m_tcp.Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -370,7 +370,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
phyScene.SetTerrain(Terrain.GetHeights1D());
|
phyScene.SetTerrain(Terrain.GetHeights1D());
|
||||||
}
|
}
|
||||||
|
|
||||||
storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD());
|
storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD(),RegionInfo.RegionID);
|
||||||
|
|
||||||
float[] terData = Terrain.GetHeights1D();
|
float[] terData = Terrain.GetHeights1D();
|
||||||
|
|
||||||
|
@ -466,7 +466,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
double[,] map = storageManager.DataStore.LoadTerrain();
|
double[,] map = storageManager.DataStore.LoadTerrain(RegionInfo.RegionID);
|
||||||
if (map == null)
|
if (map == null)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(m_regInfo.estateSettings.terrainFile))
|
if (string.IsNullOrEmpty(m_regInfo.estateSettings.terrainFile))
|
||||||
|
@ -474,7 +474,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
MainLog.Instance.Verbose("TERRAIN", "No default terrain. Generating a new terrain.");
|
MainLog.Instance.Verbose("TERRAIN", "No default terrain. Generating a new terrain.");
|
||||||
Terrain.HillsGenerator();
|
Terrain.HillsGenerator();
|
||||||
|
|
||||||
storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD());
|
storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD(),RegionInfo.RegionID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -488,7 +488,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
MainLog.Instance.Verbose("TERRAIN", "No terrain found in database or default. Generating a new terrain.");
|
MainLog.Instance.Verbose("TERRAIN", "No terrain found in database or default. Generating a new terrain.");
|
||||||
Terrain.HillsGenerator();
|
Terrain.HillsGenerator();
|
||||||
}
|
}
|
||||||
storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD());
|
storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD(), RegionInfo.RegionID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -70,7 +70,7 @@ namespace OpenSim.Region.ExtensionsScriptModule
|
||||||
|
|
||||||
public void Initialise(Scene scene, IConfigSource config)
|
public void Initialise(Scene scene, IConfigSource config)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("Initialising Extensions Scripting Module");
|
OpenSim.Framework.Console.MainLog.Instance.Verbose("SCRIPTMODULE", "Initialising Extensions Scripting Module");
|
||||||
m_scene = scene;
|
m_scene = scene;
|
||||||
|
|
||||||
m_scene.RegisterModuleInterface<IExtensionScriptModule>(this);
|
m_scene.RegisterModuleInterface<IExtensionScriptModule>(this);
|
||||||
|
|
|
@ -93,7 +93,7 @@ namespace OpenSim.Region.Physics.Manager
|
||||||
IPhysicsPlugin plug = (IPhysicsPlugin)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
IPhysicsPlugin plug = (IPhysicsPlugin)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
||||||
plug.Init();
|
plug.Init();
|
||||||
this._plugins.Add(plug.GetName(),plug);
|
this._plugins.Add(plug.GetName(),plug);
|
||||||
Console.WriteLine("added physics engine: " + plug.GetName());
|
OpenSim.Framework.Console.MainLog.Instance.Verbose("PHYSICS","Added physics engine: " + plug.GetName());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,10 +43,12 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
{
|
{
|
||||||
private const string primSelect = "select * from prims";
|
private const string primSelect = "select * from prims";
|
||||||
private const string shapeSelect = "select * from primshapes";
|
private const string shapeSelect = "select * from primshapes";
|
||||||
|
private const string terrainSelect = "select * from terrain";
|
||||||
|
|
||||||
private DataSet ds;
|
private DataSet ds;
|
||||||
private SqliteDataAdapter primDa;
|
private SqliteDataAdapter primDa;
|
||||||
private SqliteDataAdapter shapeDa;
|
private SqliteDataAdapter shapeDa;
|
||||||
|
private SqliteDataAdapter terrainDa;
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
*
|
*
|
||||||
|
@ -70,6 +72,8 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
shapeDa = new SqliteDataAdapter(shapeSelectCmd);
|
shapeDa = new SqliteDataAdapter(shapeSelectCmd);
|
||||||
// SqliteCommandBuilder shapeCb = new SqliteCommandBuilder(shapeDa);
|
// SqliteCommandBuilder shapeCb = new SqliteCommandBuilder(shapeDa);
|
||||||
|
|
||||||
|
SqliteCommand terrainSelectCmd = new SqliteCommand(terrainSelect, conn);
|
||||||
|
terrainDa = new SqliteDataAdapter(terrainSelectCmd);
|
||||||
|
|
||||||
// We fill the data set, now we've got copies in memory for the information
|
// We fill the data set, now we've got copies in memory for the information
|
||||||
// TODO: see if the linkage actually holds.
|
// TODO: see if the linkage actually holds.
|
||||||
|
@ -84,6 +88,10 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
ds.Tables.Add(createShapeTable());
|
ds.Tables.Add(createShapeTable());
|
||||||
setupShapeCommands(shapeDa, conn);
|
setupShapeCommands(shapeDa, conn);
|
||||||
|
|
||||||
|
ds.Tables.Add(createTerrainTable());
|
||||||
|
setupTerrainCommands(terrainDa, conn);
|
||||||
|
terrainDa.Fill(ds.Tables["terrain"]);
|
||||||
|
|
||||||
// WORKAROUND: This is a work around for sqlite on
|
// WORKAROUND: This is a work around for sqlite on
|
||||||
// windows, which gets really unhappy with blob columns
|
// windows, which gets really unhappy with blob columns
|
||||||
// that have no sample data in them. At some point we
|
// that have no sample data in them. At some point we
|
||||||
|
@ -210,16 +218,59 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void StoreTerrain(double[,] ter)
|
public void StoreTerrain(double[,] ter, LLUUID regionID)
|
||||||
{
|
{
|
||||||
|
int revision = OpenSim.Framework.Utilities.Util.UnixTimeSinceEpoch();
|
||||||
|
|
||||||
|
MainLog.Instance.Verbose("DATASTORE", "Storing terrain revision r" + revision.ToString());
|
||||||
|
|
||||||
|
DataTable terrain = ds.Tables["terrain"];
|
||||||
|
|
||||||
|
DataRow newrow = terrain.NewRow();
|
||||||
|
fillTerrainRow(newrow, regionID, revision, ter);
|
||||||
|
terrain.Rows.Add(newrow);
|
||||||
|
|
||||||
|
Commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
public double[,] LoadTerrain()
|
public double[,] LoadTerrain(LLUUID regionID)
|
||||||
{
|
{
|
||||||
|
double[,] terret = new double[256, 256];
|
||||||
|
terret.Initialize();
|
||||||
|
|
||||||
|
DataTable terrain = ds.Tables["terrain"];
|
||||||
|
|
||||||
|
DataRow[] rows = terrain.Select("RegionUUID = '" + regionID.ToString() + "'","Revision DESC");
|
||||||
|
|
||||||
|
int rev = 0;
|
||||||
|
|
||||||
|
if (rows.Length > 0)
|
||||||
|
{
|
||||||
|
DataRow row = rows[0];
|
||||||
|
|
||||||
|
byte[] heightmap = (byte[])row["Heightfield"];
|
||||||
|
for (int x = 0; x < 256; x++)
|
||||||
|
{
|
||||||
|
for (int y = 0; y < 256; y++)
|
||||||
|
{
|
||||||
|
terret[x, y] = BitConverter.ToDouble(heightmap, ((x * 256) + y) * 8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rev = (int)row["Revision"];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MainLog.Instance.Verbose("DATASTORE", "No terrain found for region");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MainLog.Instance.Verbose("DATASTORE", "Loaded terrain revision r" + rev.ToString());
|
||||||
|
|
||||||
|
return terret;
|
||||||
|
}
|
||||||
|
|
||||||
public void RemoveLandObject(uint id)
|
public void RemoveLandObject(uint id)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -240,6 +291,7 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
lock (ds) {
|
lock (ds) {
|
||||||
primDa.Update(ds, "prims");
|
primDa.Update(ds, "prims");
|
||||||
shapeDa.Update(ds, "primshapes");
|
shapeDa.Update(ds, "primshapes");
|
||||||
|
terrainDa.Update(ds, "terrain");
|
||||||
ds.AcceptChanges();
|
ds.AcceptChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -263,6 +315,22 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
dt.Columns.Add(col);
|
dt.Columns.Add(col);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DataTable createTerrainTable()
|
||||||
|
{
|
||||||
|
DataTable terrain = new DataTable("terrain");
|
||||||
|
|
||||||
|
createCol(terrain, "RegionUUID", typeof(System.String));
|
||||||
|
createCol(terrain, "Revision", typeof(System.Int32));
|
||||||
|
createCol(terrain, "Heightfield", typeof(System.Byte[]));
|
||||||
|
|
||||||
|
/* // Attempting to work out requirements to get SQLite to actually *save* the data.
|
||||||
|
createCol(terrain, "PrIndex", typeof(System.String));
|
||||||
|
terrain.PrimaryKey = new DataColumn[] { terrain.Columns["PrIndex"] };
|
||||||
|
*/
|
||||||
|
|
||||||
|
return terrain;
|
||||||
|
}
|
||||||
|
|
||||||
private DataTable createPrimTable()
|
private DataTable createPrimTable()
|
||||||
{
|
{
|
||||||
DataTable prims = new DataTable("prims");
|
DataTable prims = new DataTable("prims");
|
||||||
|
@ -431,6 +499,22 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
return prim;
|
return prim;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void fillTerrainRow(DataRow row, LLUUID regionUUID, int rev, double[,] val)
|
||||||
|
{
|
||||||
|
row["RegionUUID"] = regionUUID;
|
||||||
|
row["Revision"] = rev;
|
||||||
|
|
||||||
|
System.IO.MemoryStream str = new System.IO.MemoryStream(65536 * sizeof(double));
|
||||||
|
System.IO.BinaryWriter bw = new System.IO.BinaryWriter(str);
|
||||||
|
|
||||||
|
// TODO: COMPATIBILITY - Add byte-order conversions
|
||||||
|
for (int x = 0; x < 256; x++)
|
||||||
|
for (int y = 0; y < 256; y++)
|
||||||
|
bw.Write(val[x, y]);
|
||||||
|
|
||||||
|
row["Heightfield"] = str.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
private void fillPrimRow(DataRow row, SceneObjectPart prim, LLUUID sceneGroupID, LLUUID regionUUID)
|
private void fillPrimRow(DataRow row, SceneObjectPart prim, LLUUID sceneGroupID, LLUUID regionUUID)
|
||||||
{
|
{
|
||||||
row["UUID"] = prim.UUID;
|
row["UUID"] = prim.UUID;
|
||||||
|
@ -692,7 +776,7 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
subsql += ",\n";
|
subsql += ",\n";
|
||||||
}
|
}
|
||||||
subsql += col.ColumnName + " " + sqliteType(col.DataType);
|
subsql += col.ColumnName + " " + sqliteType(col.DataType);
|
||||||
if (col == dt.PrimaryKey[0])
|
if (dt.PrimaryKey.Length > 0 && col == dt.PrimaryKey[0])
|
||||||
{
|
{
|
||||||
subsql += " primary key";
|
subsql += " primary key";
|
||||||
}
|
}
|
||||||
|
@ -746,6 +830,12 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
da.DeleteCommand = delete;
|
da.DeleteCommand = delete;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setupTerrainCommands(SqliteDataAdapter da, SqliteConnection conn)
|
||||||
|
{
|
||||||
|
da.InsertCommand = createInsertCommand("terrain", ds.Tables["terrain"]);
|
||||||
|
da.InsertCommand.Connection = conn;
|
||||||
|
}
|
||||||
|
|
||||||
private void setupShapeCommands(SqliteDataAdapter da, SqliteConnection conn)
|
private void setupShapeCommands(SqliteDataAdapter da, SqliteConnection conn)
|
||||||
{
|
{
|
||||||
da.InsertCommand = createInsertCommand("primshapes", ds.Tables["primshapes"]);
|
da.InsertCommand = createInsertCommand("primshapes", ds.Tables["primshapes"]);
|
||||||
|
@ -764,12 +854,15 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
{
|
{
|
||||||
string createPrims = defineTable(createPrimTable());
|
string createPrims = defineTable(createPrimTable());
|
||||||
string createShapes = defineTable(createShapeTable());
|
string createShapes = defineTable(createShapeTable());
|
||||||
|
string createTerrain = defineTable(createTerrainTable());
|
||||||
|
|
||||||
SqliteCommand pcmd = new SqliteCommand(createPrims, conn);
|
SqliteCommand pcmd = new SqliteCommand(createPrims, conn);
|
||||||
SqliteCommand scmd = new SqliteCommand(createShapes, conn);
|
SqliteCommand scmd = new SqliteCommand(createShapes, conn);
|
||||||
|
SqliteCommand tcmd = new SqliteCommand(createTerrain, conn);
|
||||||
conn.Open();
|
conn.Open();
|
||||||
pcmd.ExecuteNonQuery();
|
pcmd.ExecuteNonQuery();
|
||||||
scmd.ExecuteNonQuery();
|
scmd.ExecuteNonQuery();
|
||||||
|
tcmd.ExecuteNonQuery();
|
||||||
conn.Close();
|
conn.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -779,12 +872,15 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
SqliteDataAdapter pDa = new SqliteDataAdapter(primSelectCmd);
|
SqliteDataAdapter pDa = new SqliteDataAdapter(primSelectCmd);
|
||||||
SqliteCommand shapeSelectCmd = new SqliteCommand(shapeSelect, conn);
|
SqliteCommand shapeSelectCmd = new SqliteCommand(shapeSelect, conn);
|
||||||
SqliteDataAdapter sDa = new SqliteDataAdapter(shapeSelectCmd);
|
SqliteDataAdapter sDa = new SqliteDataAdapter(shapeSelectCmd);
|
||||||
|
SqliteCommand terrainSelectCmd = new SqliteCommand(terrainSelect, conn);
|
||||||
|
SqliteDataAdapter tDa = new SqliteDataAdapter(terrainSelectCmd);
|
||||||
|
|
||||||
DataSet tmpDS = new DataSet();
|
DataSet tmpDS = new DataSet();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
pDa.Fill(tmpDS, "prims");
|
pDa.Fill(tmpDS, "prims");
|
||||||
sDa.Fill(tmpDS, "primshapes");
|
sDa.Fill(tmpDS, "primshapes");
|
||||||
|
tDa.Fill(tmpDS, "terrain");
|
||||||
}
|
}
|
||||||
catch (Mono.Data.SqliteClient.SqliteSyntaxException)
|
catch (Mono.Data.SqliteClient.SqliteSyntaxException)
|
||||||
{
|
{
|
||||||
|
@ -794,6 +890,7 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
|
|
||||||
pDa.Fill(tmpDS, "prims");
|
pDa.Fill(tmpDS, "prims");
|
||||||
sDa.Fill(tmpDS, "primshapes");
|
sDa.Fill(tmpDS, "primshapes");
|
||||||
|
tDa.Fill(tmpDS, "terrain");
|
||||||
|
|
||||||
foreach (DataColumn col in createPrimTable().Columns)
|
foreach (DataColumn col in createPrimTable().Columns)
|
||||||
{
|
{
|
||||||
|
@ -811,6 +908,14 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
foreach (DataColumn col in createTerrainTable().Columns)
|
||||||
|
{
|
||||||
|
if (!tmpDS.Tables["terrain"].Columns.Contains(col.ColumnName))
|
||||||
|
{
|
||||||
|
MainLog.Instance.Verbose("DATASTORE", "Missing require column:" + col.ColumnName);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -834,6 +939,14 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||||
{
|
{
|
||||||
return DbType.Double;
|
return DbType.Double;
|
||||||
}
|
}
|
||||||
|
else if (type == typeof(System.Byte))
|
||||||
|
{
|
||||||
|
return DbType.Byte;
|
||||||
|
}
|
||||||
|
else if (type == typeof(System.Double))
|
||||||
|
{
|
||||||
|
return DbType.Double;
|
||||||
|
}
|
||||||
else if (type == typeof(System.Byte[]))
|
else if (type == typeof(System.Byte[]))
|
||||||
{
|
{
|
||||||
return DbType.Binary;
|
return DbType.Binary;
|
||||||
|
|
|
@ -61,12 +61,12 @@ namespace OpenSim.DataStore.NullStorage
|
||||||
return new List<SceneObjectGroup>();
|
return new List<SceneObjectGroup>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StoreTerrain(double[,] ter)
|
public void StoreTerrain(double[,] ter, LLUUID regionID)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public double[,] LoadTerrain()
|
public double[,] LoadTerrain(LLUUID regionID)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ serverside_object_permissions = false
|
||||||
; asset_database = "db4o"
|
; asset_database = "db4o"
|
||||||
; to try sqlite as the asset database , comment out the above line, and uncomment following one
|
; to try sqlite as the asset database , comment out the above line, and uncomment following one
|
||||||
asset_database = "sqlite"
|
asset_database = "sqlite"
|
||||||
|
noverbose = false
|
||||||
|
|
||||||
[StandAlone]
|
[StandAlone]
|
||||||
accounts_authenticate = true
|
accounts_authenticate = true
|
||||||
|
|
Loading…
Reference in New Issue