mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 00:46:02 +08:00
fixing me some line endings
This commit is contained in:
@@ -1,50 +1,50 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class AssetDownloadModule : IRegionModule
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
public AssetDownloadModule()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
m_scene.EventManager.OnNewClient += NewClient;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "AssetDownloadModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void NewClient(IClientAPI client)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class AssetDownloadModule : IRegionModule
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
public AssetDownloadModule()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
m_scene.EventManager.OnNewClient += NewClient;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "AssetDownloadModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void NewClient(IClientAPI client)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,71 +1,71 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class AvatarProfilesModule :IRegionModule
|
||||
{
|
||||
|
||||
private Scene m_scene;
|
||||
|
||||
public AvatarProfilesModule()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
m_scene.EventManager.OnNewClient += NewClient;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "AvatarProfilesModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void NewClient(IClientAPI client)
|
||||
{
|
||||
client.OnRequestAvatarProperties += RequestAvatarProperty;
|
||||
}
|
||||
|
||||
public void RemoveClient(IClientAPI client)
|
||||
{
|
||||
client.OnRequestAvatarProperties -= RequestAvatarProperty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="remoteClient"></param>
|
||||
/// <param name="avatarID"></param>
|
||||
public void RequestAvatarProperty(IClientAPI remoteClient, LLUUID avatarID)
|
||||
{
|
||||
string about = "OpenSim crash test dummy";
|
||||
string bornOn = "Before now";
|
||||
string flAbout = "First life? What is one of those? OpenSim is my life!";
|
||||
LLUUID partner = new LLUUID("11111111-1111-0000-0000-000100bba000");
|
||||
remoteClient.SendAvatarProperties(avatarID, about, bornOn, "", flAbout, 0, LLUUID.Zero, LLUUID.Zero, "", partner);
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class AvatarProfilesModule :IRegionModule
|
||||
{
|
||||
|
||||
private Scene m_scene;
|
||||
|
||||
public AvatarProfilesModule()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
m_scene.EventManager.OnNewClient += NewClient;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "AvatarProfilesModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void NewClient(IClientAPI client)
|
||||
{
|
||||
client.OnRequestAvatarProperties += RequestAvatarProperty;
|
||||
}
|
||||
|
||||
public void RemoveClient(IClientAPI client)
|
||||
{
|
||||
client.OnRequestAvatarProperties -= RequestAvatarProperty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="remoteClient"></param>
|
||||
/// <param name="avatarID"></param>
|
||||
public void RequestAvatarProperty(IClientAPI remoteClient, LLUUID avatarID)
|
||||
{
|
||||
string about = "OpenSim crash test dummy";
|
||||
string bornOn = "Before now";
|
||||
string flAbout = "First life? What is one of those? OpenSim is my life!";
|
||||
LLUUID partner = new LLUUID("11111111-1111-0000-0000-000100bba000");
|
||||
remoteClient.SendAvatarProperties(avatarID, about, bornOn, "", flAbout, 0, LLUUID.Zero, LLUUID.Zero, "", partner);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,216 +1,216 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Threading;
|
||||
using System.IO;
|
||||
using libsecondlife;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Framework.Utilities;
|
||||
using OpenSim.Framework.Console;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class ChatModule : IRegionModule, ISimChat
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
private string m_server = "irc2.choopa.net";
|
||||
|
||||
// private int m_port = 6668;
|
||||
//private string m_user = "USER OpenSimBot 8 * :I'm a OpenSim to irc bot";
|
||||
private string m_nick = "OSimBot";
|
||||
private string m_channel = "#opensim";
|
||||
|
||||
// private NetworkStream m_stream;
|
||||
private TcpClient m_irc;
|
||||
private StreamWriter m_ircWriter;
|
||||
private StreamReader m_ircReader;
|
||||
|
||||
// private Thread pingSender;
|
||||
// private Thread listener;
|
||||
|
||||
private bool connected = false;
|
||||
|
||||
public ChatModule()
|
||||
{
|
||||
m_nick = "OSimBot" + Util.RandomClass.Next(1, 99);
|
||||
m_irc = null;
|
||||
m_ircWriter = null;
|
||||
m_ircReader = null;
|
||||
}
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
m_scene.EventManager.OnNewClient += NewClient;
|
||||
|
||||
m_scene.RegisterModuleInterface<ISimChat>(this);
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
/*
|
||||
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);
|
||||
|
||||
pingSender = new Thread(new ThreadStart(this.PingRun));
|
||||
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 CloseDown()
|
||||
{
|
||||
m_ircWriter.Close();
|
||||
m_ircReader.Close();
|
||||
m_irc.Close();
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "ChatModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void NewClient(IClientAPI client)
|
||||
{
|
||||
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));
|
||||
m_scene.ForEachScenePresence(delegate(ScenePresence presence)
|
||||
{
|
||||
presence.ControllingClient.SendChatMessage(Helpers.StringToField(mess), 255, pos, "IRC:",
|
||||
LLUUID.Zero);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SimChat(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
|
||||
{
|
||||
ScenePresence avatar = null;
|
||||
avatar = m_scene.RequestAvatar(fromAgentID);
|
||||
if (avatar != null)
|
||||
{
|
||||
fromPos = avatar.AbsolutePosition;
|
||||
fromName = avatar.Firstname + " " + avatar.Lastname;
|
||||
avatar = null;
|
||||
}
|
||||
|
||||
if (connected)
|
||||
{
|
||||
m_ircWriter.WriteLine("PRIVMSG " + m_channel + " :" + "<" + fromName + ">: " +
|
||||
Util.FieldToString(message));
|
||||
m_ircWriter.Flush();
|
||||
}
|
||||
|
||||
if (channel == 0)
|
||||
{
|
||||
m_scene.ForEachScenePresence(delegate(ScenePresence presence)
|
||||
{
|
||||
int dis = -1000;
|
||||
|
||||
//err ??? the following code seems to be request a scenePresence when it already has a ref to it
|
||||
avatar = m_scene.RequestAvatar(presence.ControllingClient.AgentId);
|
||||
if (avatar != null)
|
||||
{
|
||||
dis = (int) avatar.AbsolutePosition.GetDistanceTo(fromPos);
|
||||
}
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case 0: // Whisper
|
||||
if ((dis < 10) && (dis > -10))
|
||||
{
|
||||
//should change so the message is sent through the avatar rather than direct to the ClientView
|
||||
presence.ControllingClient.SendChatMessage(message,
|
||||
type,
|
||||
fromPos,
|
||||
fromName,
|
||||
fromAgentID);
|
||||
}
|
||||
break;
|
||||
case 1: // Say
|
||||
if ((dis < 30) && (dis > -30))
|
||||
{
|
||||
//Console.WriteLine("sending chat");
|
||||
presence.ControllingClient.SendChatMessage(message,
|
||||
type,
|
||||
fromPos,
|
||||
fromName,
|
||||
fromAgentID);
|
||||
}
|
||||
break;
|
||||
case 2: // Shout
|
||||
if ((dis < 100) && (dis > -100))
|
||||
{
|
||||
presence.ControllingClient.SendChatMessage(message,
|
||||
type,
|
||||
fromPos,
|
||||
fromName,
|
||||
fromAgentID);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0xff: // Broadcast
|
||||
presence.ControllingClient.SendChatMessage(message, type,
|
||||
fromPos,
|
||||
fromName,
|
||||
fromAgentID);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Threading;
|
||||
using System.IO;
|
||||
using libsecondlife;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Framework.Utilities;
|
||||
using OpenSim.Framework.Console;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class ChatModule : IRegionModule, ISimChat
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
private string m_server = "irc2.choopa.net";
|
||||
|
||||
// private int m_port = 6668;
|
||||
//private string m_user = "USER OpenSimBot 8 * :I'm a OpenSim to irc bot";
|
||||
private string m_nick = "OSimBot";
|
||||
private string m_channel = "#opensim";
|
||||
|
||||
// private NetworkStream m_stream;
|
||||
private TcpClient m_irc;
|
||||
private StreamWriter m_ircWriter;
|
||||
private StreamReader m_ircReader;
|
||||
|
||||
// private Thread pingSender;
|
||||
// private Thread listener;
|
||||
|
||||
private bool connected = false;
|
||||
|
||||
public ChatModule()
|
||||
{
|
||||
m_nick = "OSimBot" + Util.RandomClass.Next(1, 99);
|
||||
m_irc = null;
|
||||
m_ircWriter = null;
|
||||
m_ircReader = null;
|
||||
}
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
m_scene.EventManager.OnNewClient += NewClient;
|
||||
|
||||
m_scene.RegisterModuleInterface<ISimChat>(this);
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
/*
|
||||
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);
|
||||
|
||||
pingSender = new Thread(new ThreadStart(this.PingRun));
|
||||
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 CloseDown()
|
||||
{
|
||||
m_ircWriter.Close();
|
||||
m_ircReader.Close();
|
||||
m_irc.Close();
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "ChatModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void NewClient(IClientAPI client)
|
||||
{
|
||||
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));
|
||||
m_scene.ForEachScenePresence(delegate(ScenePresence presence)
|
||||
{
|
||||
presence.ControllingClient.SendChatMessage(Helpers.StringToField(mess), 255, pos, "IRC:",
|
||||
LLUUID.Zero);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SimChat(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
|
||||
{
|
||||
ScenePresence avatar = null;
|
||||
avatar = m_scene.RequestAvatar(fromAgentID);
|
||||
if (avatar != null)
|
||||
{
|
||||
fromPos = avatar.AbsolutePosition;
|
||||
fromName = avatar.Firstname + " " + avatar.Lastname;
|
||||
avatar = null;
|
||||
}
|
||||
|
||||
if (connected)
|
||||
{
|
||||
m_ircWriter.WriteLine("PRIVMSG " + m_channel + " :" + "<" + fromName + ">: " +
|
||||
Util.FieldToString(message));
|
||||
m_ircWriter.Flush();
|
||||
}
|
||||
|
||||
if (channel == 0)
|
||||
{
|
||||
m_scene.ForEachScenePresence(delegate(ScenePresence presence)
|
||||
{
|
||||
int dis = -1000;
|
||||
|
||||
//err ??? the following code seems to be request a scenePresence when it already has a ref to it
|
||||
avatar = m_scene.RequestAvatar(presence.ControllingClient.AgentId);
|
||||
if (avatar != null)
|
||||
{
|
||||
dis = (int) avatar.AbsolutePosition.GetDistanceTo(fromPos);
|
||||
}
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case 0: // Whisper
|
||||
if ((dis < 10) && (dis > -10))
|
||||
{
|
||||
//should change so the message is sent through the avatar rather than direct to the ClientView
|
||||
presence.ControllingClient.SendChatMessage(message,
|
||||
type,
|
||||
fromPos,
|
||||
fromName,
|
||||
fromAgentID);
|
||||
}
|
||||
break;
|
||||
case 1: // Say
|
||||
if ((dis < 30) && (dis > -30))
|
||||
{
|
||||
//Console.WriteLine("sending chat");
|
||||
presence.ControllingClient.SendChatMessage(message,
|
||||
type,
|
||||
fromPos,
|
||||
fromName,
|
||||
fromAgentID);
|
||||
}
|
||||
break;
|
||||
case 2: // Shout
|
||||
if ((dis < 100) && (dis > -100))
|
||||
{
|
||||
presence.ControllingClient.SendChatMessage(message,
|
||||
type,
|
||||
fromPos,
|
||||
fromName,
|
||||
fromAgentID);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0xff: // Broadcast
|
||||
presence.ControllingClient.SendChatMessage(message, type,
|
||||
fromPos,
|
||||
fromName,
|
||||
fromAgentID);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,159 +1,159 @@
|
||||
using System.Text;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Threading;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using libsecondlife;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Framework.Utilities;
|
||||
using OpenSim.Framework.Console;
|
||||
using OpenSim.Framework.Types;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class DynamicTextureModule :IRegionModule, IDynamicTextureManager
|
||||
{
|
||||
private Dictionary<LLUUID, Scene> RegisteredScenes = new Dictionary<LLUUID, Scene>();
|
||||
private Dictionary<string, IDynamicTextureRender> RenderPlugins= new Dictionary<string, IDynamicTextureRender>();
|
||||
private Dictionary<LLUUID, DynamicTextureUpdater> Updaters = new Dictionary<LLUUID, DynamicTextureUpdater>();
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
if (!RegisteredScenes.ContainsKey(scene.RegionInfo.SimUUID))
|
||||
{
|
||||
RegisteredScenes.Add(scene.RegionInfo.SimUUID, scene);
|
||||
scene.RegisterModuleInterface<IDynamicTextureManager>(this);
|
||||
}
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "DynamicTextureModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public void RegisterRender(string handleType, IDynamicTextureRender render)
|
||||
{
|
||||
if (!RenderPlugins.ContainsKey(handleType))
|
||||
{
|
||||
RenderPlugins.Add(handleType, render);
|
||||
}
|
||||
}
|
||||
|
||||
public void ReturnData(LLUUID id, byte[] data)
|
||||
{
|
||||
if (Updaters.ContainsKey(id))
|
||||
{
|
||||
DynamicTextureUpdater updater = Updaters[id];
|
||||
if (RegisteredScenes.ContainsKey(updater.SimUUID))
|
||||
{
|
||||
Scene scene = RegisteredScenes[updater.SimUUID];
|
||||
updater.DataReceived(data, scene);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public LLUUID AddDynamicTextureURL(LLUUID simID, LLUUID primID, string contentType, string url, string extraParams, int updateTimer)
|
||||
{
|
||||
System.Console.WriteLine("dynamic texture being created: " + url + " of type " + contentType);
|
||||
if (this.RenderPlugins.ContainsKey(contentType))
|
||||
{
|
||||
DynamicTextureUpdater updater = new DynamicTextureUpdater();
|
||||
updater.SimUUID = simID;
|
||||
updater.PrimID = primID;
|
||||
updater.ContentType = contentType;
|
||||
updater.Url = url;
|
||||
updater.UpdateTimer = updateTimer;
|
||||
updater.UpdaterID = LLUUID.Random();
|
||||
updater.Params = extraParams;
|
||||
|
||||
if (!this.Updaters.ContainsKey(updater.UpdaterID))
|
||||
{
|
||||
Updaters.Add(updater.UpdaterID, updater);
|
||||
}
|
||||
|
||||
RenderPlugins[contentType].AsyncConvertUrl(updater.UpdaterID, url, extraParams);
|
||||
return updater.UpdaterID;
|
||||
}
|
||||
return LLUUID.Zero;
|
||||
}
|
||||
|
||||
public LLUUID AddDynamicTextureData(LLUUID simID, LLUUID primID, string contentType, string data, string extraParams, int updateTimer)
|
||||
{
|
||||
if (this.RenderPlugins.ContainsKey(contentType))
|
||||
{
|
||||
DynamicTextureUpdater updater = new DynamicTextureUpdater();
|
||||
updater.SimUUID = simID;
|
||||
updater.PrimID = primID;
|
||||
updater.ContentType = contentType;
|
||||
updater.BodyData = data;
|
||||
updater.UpdateTimer = updateTimer;
|
||||
updater.UpdaterID = LLUUID.Random();
|
||||
updater.Params = extraParams;
|
||||
|
||||
if (!this.Updaters.ContainsKey(updater.UpdaterID))
|
||||
{
|
||||
Updaters.Add(updater.UpdaterID, updater);
|
||||
}
|
||||
|
||||
RenderPlugins[contentType].AsyncConvertData(updater.UpdaterID, data, extraParams);
|
||||
return updater.UpdaterID;
|
||||
}
|
||||
return LLUUID.Zero;
|
||||
}
|
||||
|
||||
public class DynamicTextureUpdater
|
||||
{
|
||||
public LLUUID SimUUID;
|
||||
public LLUUID UpdaterID;
|
||||
public string ContentType;
|
||||
public string Url;
|
||||
public string BodyData;
|
||||
public LLUUID PrimID;
|
||||
public int UpdateTimer;
|
||||
public LLUUID LastAssetID;
|
||||
public string Params;
|
||||
|
||||
public DynamicTextureUpdater()
|
||||
{
|
||||
LastAssetID = LLUUID.Zero;
|
||||
UpdateTimer = 0;
|
||||
BodyData = null;
|
||||
}
|
||||
|
||||
public void DataReceived(byte[] data, Scene scene)
|
||||
{
|
||||
//TODO delete the last asset(data), if it was a dynamic texture
|
||||
|
||||
AssetBase asset = new AssetBase();
|
||||
asset.FullID = LLUUID.Random();
|
||||
asset.Data = data;
|
||||
asset.Name = "DynamicImage" + Util.RandomClass.Next(1, 10000);
|
||||
asset.Type = 0;
|
||||
scene.commsManager.AssetCache.AddAsset(asset);
|
||||
|
||||
this.LastAssetID = asset.FullID;
|
||||
|
||||
SceneObjectPart part = scene.GetSceneObjectPart(PrimID);
|
||||
part.Shape.TextureEntry = new LLObject.TextureEntry(asset.FullID).ToBytes();
|
||||
part.ScheduleFullUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
using System.Text;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Threading;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using libsecondlife;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Framework.Utilities;
|
||||
using OpenSim.Framework.Console;
|
||||
using OpenSim.Framework.Types;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class DynamicTextureModule :IRegionModule, IDynamicTextureManager
|
||||
{
|
||||
private Dictionary<LLUUID, Scene> RegisteredScenes = new Dictionary<LLUUID, Scene>();
|
||||
private Dictionary<string, IDynamicTextureRender> RenderPlugins= new Dictionary<string, IDynamicTextureRender>();
|
||||
private Dictionary<LLUUID, DynamicTextureUpdater> Updaters = new Dictionary<LLUUID, DynamicTextureUpdater>();
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
if (!RegisteredScenes.ContainsKey(scene.RegionInfo.SimUUID))
|
||||
{
|
||||
RegisteredScenes.Add(scene.RegionInfo.SimUUID, scene);
|
||||
scene.RegisterModuleInterface<IDynamicTextureManager>(this);
|
||||
}
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "DynamicTextureModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public void RegisterRender(string handleType, IDynamicTextureRender render)
|
||||
{
|
||||
if (!RenderPlugins.ContainsKey(handleType))
|
||||
{
|
||||
RenderPlugins.Add(handleType, render);
|
||||
}
|
||||
}
|
||||
|
||||
public void ReturnData(LLUUID id, byte[] data)
|
||||
{
|
||||
if (Updaters.ContainsKey(id))
|
||||
{
|
||||
DynamicTextureUpdater updater = Updaters[id];
|
||||
if (RegisteredScenes.ContainsKey(updater.SimUUID))
|
||||
{
|
||||
Scene scene = RegisteredScenes[updater.SimUUID];
|
||||
updater.DataReceived(data, scene);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public LLUUID AddDynamicTextureURL(LLUUID simID, LLUUID primID, string contentType, string url, string extraParams, int updateTimer)
|
||||
{
|
||||
System.Console.WriteLine("dynamic texture being created: " + url + " of type " + contentType);
|
||||
if (this.RenderPlugins.ContainsKey(contentType))
|
||||
{
|
||||
DynamicTextureUpdater updater = new DynamicTextureUpdater();
|
||||
updater.SimUUID = simID;
|
||||
updater.PrimID = primID;
|
||||
updater.ContentType = contentType;
|
||||
updater.Url = url;
|
||||
updater.UpdateTimer = updateTimer;
|
||||
updater.UpdaterID = LLUUID.Random();
|
||||
updater.Params = extraParams;
|
||||
|
||||
if (!this.Updaters.ContainsKey(updater.UpdaterID))
|
||||
{
|
||||
Updaters.Add(updater.UpdaterID, updater);
|
||||
}
|
||||
|
||||
RenderPlugins[contentType].AsyncConvertUrl(updater.UpdaterID, url, extraParams);
|
||||
return updater.UpdaterID;
|
||||
}
|
||||
return LLUUID.Zero;
|
||||
}
|
||||
|
||||
public LLUUID AddDynamicTextureData(LLUUID simID, LLUUID primID, string contentType, string data, string extraParams, int updateTimer)
|
||||
{
|
||||
if (this.RenderPlugins.ContainsKey(contentType))
|
||||
{
|
||||
DynamicTextureUpdater updater = new DynamicTextureUpdater();
|
||||
updater.SimUUID = simID;
|
||||
updater.PrimID = primID;
|
||||
updater.ContentType = contentType;
|
||||
updater.BodyData = data;
|
||||
updater.UpdateTimer = updateTimer;
|
||||
updater.UpdaterID = LLUUID.Random();
|
||||
updater.Params = extraParams;
|
||||
|
||||
if (!this.Updaters.ContainsKey(updater.UpdaterID))
|
||||
{
|
||||
Updaters.Add(updater.UpdaterID, updater);
|
||||
}
|
||||
|
||||
RenderPlugins[contentType].AsyncConvertData(updater.UpdaterID, data, extraParams);
|
||||
return updater.UpdaterID;
|
||||
}
|
||||
return LLUUID.Zero;
|
||||
}
|
||||
|
||||
public class DynamicTextureUpdater
|
||||
{
|
||||
public LLUUID SimUUID;
|
||||
public LLUUID UpdaterID;
|
||||
public string ContentType;
|
||||
public string Url;
|
||||
public string BodyData;
|
||||
public LLUUID PrimID;
|
||||
public int UpdateTimer;
|
||||
public LLUUID LastAssetID;
|
||||
public string Params;
|
||||
|
||||
public DynamicTextureUpdater()
|
||||
{
|
||||
LastAssetID = LLUUID.Zero;
|
||||
UpdateTimer = 0;
|
||||
BodyData = null;
|
||||
}
|
||||
|
||||
public void DataReceived(byte[] data, Scene scene)
|
||||
{
|
||||
//TODO delete the last asset(data), if it was a dynamic texture
|
||||
|
||||
AssetBase asset = new AssetBase();
|
||||
asset.FullID = LLUUID.Random();
|
||||
asset.Data = data;
|
||||
asset.Name = "DynamicImage" + Util.RandomClass.Next(1, 10000);
|
||||
asset.Type = 0;
|
||||
scene.commsManager.AssetCache.AddAsset(asset);
|
||||
|
||||
this.LastAssetID = asset.FullID;
|
||||
|
||||
SceneObjectPart part = scene.GetSceneObjectPart(PrimID);
|
||||
part.Shape.TextureEntry = new LLObject.TextureEntry(asset.FullID).ToBytes();
|
||||
part.ScheduleFullUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
class EmailModule
|
||||
{
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
class EmailModule
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class FriendsModule : IRegionModule
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "FriendsModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class FriendsModule : IRegionModule
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "FriendsModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class GroupsModule : IRegionModule
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "GroupsModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class GroupsModule : IRegionModule
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "GroupsModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class InstantMessageModule :IRegionModule
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "InstantMessageModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class InstantMessageModule :IRegionModule
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "InstantMessageModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class InventoryModule :IRegionModule
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "InventoryModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class InventoryModule :IRegionModule
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "InventoryModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
class ScriptsHttpRequests
|
||||
{
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
class ScriptsHttpRequests
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
class TeleportModule
|
||||
{
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
class TeleportModule
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,54 +1,54 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class TextureDownloadModule :IRegionModule
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
public TextureDownloadModule()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
m_scene.EventManager.OnNewClient += NewClient;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "TextureDownloadModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void NewClient(IClientAPI client)
|
||||
{
|
||||
}
|
||||
|
||||
public void TextureAssetCallback(LLUUID texture, byte[] data)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class TextureDownloadModule :IRegionModule
|
||||
{
|
||||
private Scene m_scene;
|
||||
|
||||
public TextureDownloadModule()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
m_scene.EventManager.OnNewClient += NewClient;
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "TextureDownloadModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void NewClient(IClientAPI client)
|
||||
{
|
||||
}
|
||||
|
||||
public void TextureAssetCallback(LLUUID texture, byte[] data)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,180 +1,180 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Framework.Utilities;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class XferModule : IRegionModule, IXfer
|
||||
{
|
||||
public Dictionary<string, byte[]> NewFiles = new Dictionary<string, byte[]>();
|
||||
public Dictionary<ulong, XferDownLoad> Transfers = new Dictionary<ulong, XferDownLoad>();
|
||||
|
||||
private Scene m_scene;
|
||||
|
||||
public XferModule()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
m_scene.EventManager.OnNewClient += NewClient;
|
||||
|
||||
m_scene.RegisterModuleInterface<IXfer>(this);
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "XferModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void NewClient(IClientAPI client)
|
||||
{
|
||||
client.OnRequestXfer += RequestXfer;
|
||||
client.OnConfirmXfer += AckPacket;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="remoteClient"></param>
|
||||
/// <param name="xferID"></param>
|
||||
/// <param name="fileName"></param>
|
||||
public void RequestXfer(IClientAPI remoteClient, ulong xferID, string fileName)
|
||||
{
|
||||
lock (NewFiles)
|
||||
{
|
||||
if (NewFiles.ContainsKey(fileName))
|
||||
{
|
||||
if (!Transfers.ContainsKey(xferID))
|
||||
{
|
||||
byte[] fileData = NewFiles[fileName];
|
||||
XferDownLoad transaction = new XferDownLoad(fileName, fileData, xferID, remoteClient);
|
||||
Transfers.Add(xferID, transaction);
|
||||
NewFiles.Remove(fileName);
|
||||
transaction.StartSend();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void AckPacket(IClientAPI remoteClient, ulong xferID, uint packet)
|
||||
{
|
||||
if (this.Transfers.ContainsKey(xferID))
|
||||
{
|
||||
Transfers[xferID].AckPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
public bool AddNewFile(string fileName, byte[] data)
|
||||
{
|
||||
lock (NewFiles)
|
||||
{
|
||||
if (NewFiles.ContainsKey(fileName))
|
||||
{
|
||||
NewFiles[fileName] = data;
|
||||
}
|
||||
else
|
||||
{
|
||||
NewFiles.Add(fileName, data);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public class XferDownLoad
|
||||
{
|
||||
public byte[] Data = new byte[0];
|
||||
public string FileName = "";
|
||||
public ulong XferID = 0;
|
||||
public int DataPointer = 0;
|
||||
public uint Packet = 0;
|
||||
public IClientAPI Client;
|
||||
public uint Serial = 1;
|
||||
private bool complete = false;
|
||||
|
||||
public XferDownLoad(string fileName, byte[] data, ulong xferID, IClientAPI client)
|
||||
{
|
||||
FileName = fileName;
|
||||
Data = data;
|
||||
XferID = xferID;
|
||||
Client = client;
|
||||
}
|
||||
|
||||
public XferDownLoad()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void StartSend()
|
||||
{
|
||||
if (Data.Length < 1000)
|
||||
{
|
||||
// for now (testing ) we only support files under 1000 bytes
|
||||
byte[] transferData = new byte[Data.Length + 4];
|
||||
Array.Copy(Helpers.IntToBytes(Data.Length), 0, transferData, 0, 4);
|
||||
Array.Copy(Data, 0, transferData, 4, Data.Length);
|
||||
Client.SendXferPacket(XferID, 0 + 0x80000000, transferData);
|
||||
complete = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] transferData = new byte[1000 +4];
|
||||
Array.Copy(Helpers.IntToBytes(Data.Length), 0, transferData, 0, 4);
|
||||
Array.Copy(Data, 0, transferData, 4, 1000);
|
||||
Client.SendXferPacket(XferID, 0 , transferData);
|
||||
Packet++;
|
||||
DataPointer = 1000;
|
||||
}
|
||||
}
|
||||
|
||||
public void AckPacket(uint packet)
|
||||
{
|
||||
if (!complete)
|
||||
{
|
||||
if ((Data.Length - DataPointer) > 1000)
|
||||
{
|
||||
byte[] transferData = new byte[1000];
|
||||
Array.Copy(Data, DataPointer, transferData, 0, 1000);
|
||||
Client.SendXferPacket(XferID, Packet, transferData);
|
||||
Packet++;
|
||||
DataPointer += 1000;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] transferData = new byte[Data.Length - DataPointer];
|
||||
Array.Copy(Data, DataPointer, transferData, 0, Data.Length - DataPointer);
|
||||
uint endPacket = Packet |= (uint)0x80000000;
|
||||
Client.SendXferPacket(XferID, endPacket, transferData);
|
||||
Packet++;
|
||||
DataPointer += (Data.Length - DataPointer);
|
||||
complete = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Framework.Utilities;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
|
||||
namespace OpenSim.Region.Environment.Modules
|
||||
{
|
||||
public class XferModule : IRegionModule, IXfer
|
||||
{
|
||||
public Dictionary<string, byte[]> NewFiles = new Dictionary<string, byte[]>();
|
||||
public Dictionary<ulong, XferDownLoad> Transfers = new Dictionary<ulong, XferDownLoad>();
|
||||
|
||||
private Scene m_scene;
|
||||
|
||||
public XferModule()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void Initialise(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
m_scene.EventManager.OnNewClient += NewClient;
|
||||
|
||||
m_scene.RegisterModuleInterface<IXfer>(this);
|
||||
}
|
||||
|
||||
public void PostInitialise()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CloseDown()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return "XferModule";
|
||||
}
|
||||
|
||||
public bool IsSharedModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void NewClient(IClientAPI client)
|
||||
{
|
||||
client.OnRequestXfer += RequestXfer;
|
||||
client.OnConfirmXfer += AckPacket;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="remoteClient"></param>
|
||||
/// <param name="xferID"></param>
|
||||
/// <param name="fileName"></param>
|
||||
public void RequestXfer(IClientAPI remoteClient, ulong xferID, string fileName)
|
||||
{
|
||||
lock (NewFiles)
|
||||
{
|
||||
if (NewFiles.ContainsKey(fileName))
|
||||
{
|
||||
if (!Transfers.ContainsKey(xferID))
|
||||
{
|
||||
byte[] fileData = NewFiles[fileName];
|
||||
XferDownLoad transaction = new XferDownLoad(fileName, fileData, xferID, remoteClient);
|
||||
Transfers.Add(xferID, transaction);
|
||||
NewFiles.Remove(fileName);
|
||||
transaction.StartSend();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void AckPacket(IClientAPI remoteClient, ulong xferID, uint packet)
|
||||
{
|
||||
if (this.Transfers.ContainsKey(xferID))
|
||||
{
|
||||
Transfers[xferID].AckPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
public bool AddNewFile(string fileName, byte[] data)
|
||||
{
|
||||
lock (NewFiles)
|
||||
{
|
||||
if (NewFiles.ContainsKey(fileName))
|
||||
{
|
||||
NewFiles[fileName] = data;
|
||||
}
|
||||
else
|
||||
{
|
||||
NewFiles.Add(fileName, data);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public class XferDownLoad
|
||||
{
|
||||
public byte[] Data = new byte[0];
|
||||
public string FileName = "";
|
||||
public ulong XferID = 0;
|
||||
public int DataPointer = 0;
|
||||
public uint Packet = 0;
|
||||
public IClientAPI Client;
|
||||
public uint Serial = 1;
|
||||
private bool complete = false;
|
||||
|
||||
public XferDownLoad(string fileName, byte[] data, ulong xferID, IClientAPI client)
|
||||
{
|
||||
FileName = fileName;
|
||||
Data = data;
|
||||
XferID = xferID;
|
||||
Client = client;
|
||||
}
|
||||
|
||||
public XferDownLoad()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void StartSend()
|
||||
{
|
||||
if (Data.Length < 1000)
|
||||
{
|
||||
// for now (testing ) we only support files under 1000 bytes
|
||||
byte[] transferData = new byte[Data.Length + 4];
|
||||
Array.Copy(Helpers.IntToBytes(Data.Length), 0, transferData, 0, 4);
|
||||
Array.Copy(Data, 0, transferData, 4, Data.Length);
|
||||
Client.SendXferPacket(XferID, 0 + 0x80000000, transferData);
|
||||
complete = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] transferData = new byte[1000 +4];
|
||||
Array.Copy(Helpers.IntToBytes(Data.Length), 0, transferData, 0, 4);
|
||||
Array.Copy(Data, 0, transferData, 4, 1000);
|
||||
Client.SendXferPacket(XferID, 0 , transferData);
|
||||
Packet++;
|
||||
DataPointer = 1000;
|
||||
}
|
||||
}
|
||||
|
||||
public void AckPacket(uint packet)
|
||||
{
|
||||
if (!complete)
|
||||
{
|
||||
if ((Data.Length - DataPointer) > 1000)
|
||||
{
|
||||
byte[] transferData = new byte[1000];
|
||||
Array.Copy(Data, DataPointer, transferData, 0, 1000);
|
||||
Client.SendXferPacket(XferID, Packet, transferData);
|
||||
Packet++;
|
||||
DataPointer += 1000;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] transferData = new byte[Data.Length - DataPointer];
|
||||
Array.Copy(Data, DataPointer, transferData, 0, Data.Length - DataPointer);
|
||||
uint endPacket = Packet |= (uint)0x80000000;
|
||||
Client.SendXferPacket(XferID, endPacket, transferData);
|
||||
Packet++;
|
||||
DataPointer += (Data.Length - DataPointer);
|
||||
complete = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user