2 using System.Collections.Generic;
\r
5 using System.Windows.Forms;
\r
11 public class RadegastInstance
\r
13 private GridClient client;
\r
14 private RadegastNetcom netcom;
\r
15 private GridManager grid;
\r
17 private ImageCache imageCache;
\r
18 private StateManager state;
\r
19 private ConfigManager config;
\r
21 private frmMain mainForm;
\r
22 private TabsConsole tabsConsole;
\r
23 public readonly string userDir;
\r
24 public readonly string animCacheDir;
\r
26 public Dictionary<UUID, Group> groups;
\r
27 public Dictionary<UUID, string> nameCache = new Dictionary<UUID,string>();
\r
29 public delegate void OnAvatarNameCallBack(UUID agentID, string agentName);
\r
30 public event OnAvatarNameCallBack OnAvatarName;
\r
32 public readonly bool advancedDebugging = false;
\r
34 public RadegastInstance()
\r
38 userDir = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData), Properties.Resources.ProgramName);
\r
39 if (!Directory.Exists(userDir))
\r
41 Directory.CreateDirectory(userDir);
\r
46 userDir = System.Environment.CurrentDirectory;
\r
48 animCacheDir = Path.Combine(userDir, @"anim_cache");
\r
50 Settings.PIPELINE_REFRESH_INTERVAL = 2000.0f;
\r
52 client = new GridClient();
\r
53 client.Settings.ALWAYS_REQUEST_OBJECTS = true;
\r
54 client.Settings.ALWAYS_DECODE_OBJECTS = true;
\r
55 client.Settings.OBJECT_TRACKING = true;
\r
56 client.Settings.ENABLE_SIMSTATS = true;
\r
57 client.Settings.FETCH_MISSING_INVENTORY = true;
\r
58 client.Settings.MULTIPLE_SIMS = true;
\r
59 client.Settings.SEND_AGENT_THROTTLE = true;
\r
60 client.Settings.SEND_AGENT_UPDATES = true;
\r
62 client.Settings.USE_TEXTURE_CACHE = true;
\r
63 client.Settings.TEXTURE_CACHE_DIR = Path.Combine(userDir, "cache");
\r
64 client.Assets.Cache.AutoPruneEnabled = false;
\r
66 client.Throttle.Texture = 2446000.0f;
\r
67 client.Throttle.Asset = 2446000.0f;
\r
68 client.Settings.THROTTLE_OUTGOING_PACKETS = false;
\r
70 netcom = new RadegastNetcom(client);
\r
71 grid = new GridManager(client);
\r
73 imageCache = new ImageCache();
\r
74 state = new StateManager(this);
\r
77 mainForm = new frmMain(this);
\r
78 mainForm.InitializeControls();
\r
79 tabsConsole = mainForm.TabConsole;
\r
81 Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
\r
82 groups = new Dictionary<UUID, Group>();
\r
83 client.Groups.OnCurrentGroups += new GroupManager.CurrentGroupsCallback(Groups_OnCurrentGroups);
\r
84 client.Groups.OnGroupLeft += new GroupManager.GroupLeftCallback(Groups_OnGroupLeft);
\r
85 client.Groups.OnGroupJoined += new GroupManager.GroupJoinedCallback(Groups_OnGroupJoined);
\r
86 client.Groups.OnGroupProfile += new GroupManager.GroupProfileCallback(Groups_OnGroupProfile);
\r
87 client.Avatars.OnAvatarNames += new AvatarManager.AvatarNamesCallback(Avatars_OnAvatarNames);
\r
90 void Avatars_OnAvatarNames(Dictionary<UUID, string> names)
\r
94 foreach (KeyValuePair<UUID, string> av in names)
\r
96 if (OnAvatarName != null) try { OnAvatarName(av.Key, av.Value); }
\r
97 catch (Exception) { };
\r
99 if (!nameCache.ContainsKey(av.Key))
\r
101 nameCache.Add(av.Key, av.Value);
\r
107 public string getAvatarName(UUID key)
\r
109 if (nameCache.ContainsKey(key))
\r
111 return nameCache[key];
\r
115 client.Avatars.RequestAvatarName(key);
\r
116 return "Loading...";
\r
120 void Groups_OnGroupProfile(Group group)
\r
122 if (groups.ContainsKey(group.ID))
\r
124 groups[group.ID] = group;
\r
128 void Groups_OnGroupJoined(UUID groupID, bool success)
\r
130 if (success && !groups.ContainsKey(groupID))
\r
132 groups.Add(groupID, new Group());
\r
133 client.Groups.RequestGroupProfile(groupID);
\r
137 void Groups_OnGroupLeft(UUID groupID, bool success)
\r
139 if (groups.ContainsKey(groupID))
\r
141 groups.Remove(groupID);
\r
145 void Groups_OnCurrentGroups(Dictionary<UUID, Group> gr)
\r
150 private void Application_ApplicationExit(object sender, EventArgs e)
\r
152 config.SaveCurrentConfig();
\r
155 private void InitializeConfig()
\r
157 config = new ConfigManager(this);
\r
158 config.ApplyDefault();
\r
160 netcom.LoginOptions.FirstName = config.CurrentConfig.FirstName;
\r
161 netcom.LoginOptions.LastName = config.CurrentConfig.LastName;
\r
162 netcom.LoginOptions.Password = config.CurrentConfig.PasswordMD5;
\r
163 netcom.LoginOptions.IsPasswordMD5 = true;
\r
166 public GridClient Client
\r
168 get { return client; }
\r
171 public RadegastNetcom Netcom
\r
173 get { return netcom; }
\r
176 public GridManager Grid
\r
178 get { return grid; }
\r
181 public ImageCache ImageCache
\r
183 get { return imageCache; }
\r
186 public StateManager State
\r
188 get { return state; }
\r
191 public ConfigManager Config
\r
193 get { return config; }
\r
196 public frmMain MainForm
\r
198 get { return mainForm; }
\r
201 public TabsConsole TabConsole
\r
203 get { return tabsConsole; }
\r