Annotation of /trunk/DefaultNetwork/DefaultNetwork.cs
Parent Directory
|
Revision Log
Revision 38 - (view) (download)
| 1 : | albert | 4 | using System; |
| 2 : | using System.Timers; | ||
| 3 : | using System.Windows; | ||
| 4 : | using OpenMetaverse; | ||
| 5 : | using Xenki.Framework; | ||
| 6 : | albert | 35 | using System.Drawing; |
| 7 : | albert | 36 | using System.Windows.Media.Imaging; |
| 8 : | albert | 38 | using System.IO; |
| 9 : | using OpenMetaverse.Imaging; | ||
| 10 : | albert | 36 | //using System.IO; |
| 11 : | //using System.Windows.Media; | ||
| 12 : | //using System.Drawing.Imaging; | ||
| 13 : | //using OpenMetaverse.Imaging; | ||
| 14 : | albert | 4 | |
| 15 : | |||
| 16 : | albert | 35 | |
| 17 : | albert | 4 | namespace Xenki.DefaultNetwork |
| 18 : | { | ||
| 19 : | public delegate void OnLogDelegate(string msg); | ||
| 20 : | albert | 38 | public delegate void OnMessageChatDelegate(string msg); |
| 21 : | albert | 4 | |
| 22 : | albert | 38 | |
| 23 : | albert | 4 | class DefaultNetwork |
| 24 : | { | ||
| 25 : | private readonly GridClient m_gridclient; | ||
| 26 : | private readonly IRenderer m_renderer; | ||
| 27 : | albert | 33 | public static IPrimitiveData m_primitiveData; |
| 28 : | |||
| 29 : | albert | 4 | private double[,] m_terrainpatch = new double[256,256]; |
| 30 : | private Timer m_terrainSetTimer = new Timer(1000); | ||
| 31 : | private Timer m_cameraTimer = new Timer(1000); | ||
| 32 : | private int m_cameraSeed; | ||
| 33 : | private Random m_random = new Random(1338); | ||
| 34 : | albert | 38 | private DefaultTexture.DefaultTexture defaultTexture; |
| 35 : | albert | 4 | |
| 36 : | albert | 38 | public static TextureCache textureCauche; |
| 37 : | |||
| 38 : | albert | 4 | public event OnLogDelegate OnLog; |
| 39 : | albert | 38 | public event OnMessageChatDelegate OnMessageChat; |
| 40 : | |||
| 41 : | DefaultAgent.MessageChatManage chat; | ||
| 42 : | |||
| 43 : | albert | 36 | //AssetManager asset ; |
| 44 : | albert | 4 | |
| 45 : | private void log(string v) | ||
| 46 : | { | ||
| 47 : | if (OnLog != null) | ||
| 48 : | OnLog(v); | ||
| 49 : | } | ||
| 50 : | |||
| 51 : | albert | 33 | public DefaultNetwork(IRenderer m_renderer,IPrimitiveData m_primitiveData) |
| 52 : | albert | 4 | { |
| 53 : | |||
| 54 : | log("Creating class"); | ||
| 55 : | m_gridclient = new GridClient(); | ||
| 56 : | this.m_renderer = m_renderer; | ||
| 57 : | albert | 33 | DefaultNetwork.m_primitiveData = m_primitiveData; |
| 58 : | albert | 38 | defaultTexture = new Xenki.DefaultTexture.DefaultTexture(m_gridclient); |
| 59 : | albert | 4 | |
| 60 : | albert | 38 | m_gridclient.Settings.USE_TEXTURE_CACHE = true; |
| 61 : | m_gridclient.Settings.TEXTURE_CACHE_DIR = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "textures"); | ||
| 62 : | albert | 35 | |
| 63 : | albert | 4 | // Important |
| 64 : | m_gridclient.Settings.MULTIPLE_SIMS = false; | ||
| 65 : | m_gridclient.Settings.OBJECT_TRACKING = false; | ||
| 66 : | albert | 38 | |
| 67 : | albert | 4 | Settings.LOG_LEVEL = Helpers.LogLevel.Debug; |
| 68 : | m_gridclient.Throttle.Land = 10000; | ||
| 69 : | |||
| 70 : | log("Initialising callbacks"); | ||
| 71 : | m_gridclient.Objects.OnNewPrim += Objects_OnNewPrim; | ||
| 72 : | m_gridclient.Objects.OnObjectUpdated += Objects_OnObjectUpdated; | ||
| 73 : | m_gridclient.Objects.OnObjectKilled += Objects_OnObjectKilled; | ||
| 74 : | m_gridclient.Network.OnConnected += Network_OnConnected; | ||
| 75 : | m_gridclient.Terrain.OnLandPatch += Terrain_OnLandPatch; | ||
| 76 : | m_gridclient.Network.OnSimConnected += Network_OnSimConnected; | ||
| 77 : | albert | 38 | |
| 78 : | |||
| 79 : | defaultTexture.OnDownloadFinished += new Xenki.DefaultTexture.DefaultTexture.DownloadFinishedCallback(defaultTexture_OnDownloadFinished); | ||
| 80 : | |||
| 81 : | chat = new Xenki.DefaultAgent.MessageChatManage(m_gridclient); | ||
| 82 : | chat.OnChat += new Xenki.DefaultAgent.OnChatDelegate(chat_OnChat); | ||
| 83 : | albert | 36 | |
| 84 : | albert | 38 | textureCauche = new TextureCache(m_gridclient); |
| 85 : | |||
| 86 : | albert | 4 | Logger.OnLogMessage += Logger_OnLogMessage; |
| 87 : | |||
| 88 : | m_terrainSetTimer.Elapsed += m_terrainSetTimer_Elapsed; | ||
| 89 : | m_cameraTimer.Elapsed += m_cameraTimer_Elapsed; | ||
| 90 : | } | ||
| 91 : | albert | 36 | |
| 92 : | albert | 38 | void chat_OnChat(string msg) |
| 93 : | { | ||
| 94 : | if (OnMessageChat != null) | ||
| 95 : | OnMessageChat(msg); | ||
| 96 : | } | ||
| 97 : | |||
| 98 : | void defaultTexture_OnDownloadFinished(ImageDownload imageIDDownload, bool success) | ||
| 99 : | { | ||
| 100 : | byte[] bytes; | ||
| 101 : | bytes = DefaultNetwork.m_primitiveData.RetireveTextureData(imageIDDownload.ID); | ||
| 102 : | if (bytes == null || bytes.Length <= 0) | ||
| 103 : | { | ||
| 104 : | DefaultNetwork.m_primitiveData.CacheDownloadedTexture(imageIDDownload); | ||
| 105 : | } | ||
| 106 : | if (success == true) | ||
| 107 : | { | ||
| 108 : | textureCauche.SaveImageToCache(imageIDDownload.ID, imageIDDownload.AssetData); | ||
| 109 : | |||
| 110 : | m_renderer.UpdatePrimTexture(imageIDDownload.ID); | ||
| 111 : | } | ||
| 112 : | } | ||
| 113 : | |||
| 114 : | albert | 36 | |
| 115 : | |||
| 116 : | albert | 38 | |
| 117 : | albert | 4 | void Objects_OnObjectUpdated(Simulator simulator, ObjectUpdate update, ulong regionHandle, ushort timeDilation) |
| 118 : | { | ||
| 119 : | albert | 38 | |
| 120 : | albert | 4 | } |
| 121 : | |||
| 122 : | void m_cameraTimer_Elapsed(object sender, ElapsedEventArgs e) | ||
| 123 : | { | ||
| 124 : | m_gridclient.Throttle.Land = 40000; | ||
| 125 : | m_gridclient.Throttle.Task = 40000; | ||
| 126 : | |||
| 127 : | m_gridclient.Self.Movement.Camera.Far = 1024.0f; | ||
| 128 : | |||
| 129 : | m_gridclient.Self.Movement.Camera.LookAt( | ||
| 130 : | new Vector3((float) m_random.NextDouble()*256.0f, (float) m_random.NextDouble()*256.0f, 256.0f), | ||
| 131 : | new Vector3((float) m_random.NextDouble()*256.0f, (float) m_random.NextDouble()*256.0f, 0.0f)); | ||
| 132 : | } | ||
| 133 : | |||
| 134 : | void Network_OnSimConnected(Simulator simulator) | ||
| 135 : | { | ||
| 136 : | m_cameraTimer.Start(); | ||
| 137 : | m_gridclient.Self.Movement.Camera.Far = 512.0f; | ||
| 138 : | m_gridclient.Self.Movement.Camera.LookAt(new Vector3(0, 0, 256), new Vector3(256, 256, 0)); | ||
| 139 : | } | ||
| 140 : | |||
| 141 : | void m_terrainSetTimer_Elapsed(object sender, ElapsedEventArgs e) | ||
| 142 : | { | ||
| 143 : | log("Refreshing terrain..."); | ||
| 144 : | m_renderer.SetTerrain(m_terrainpatch); | ||
| 145 : | } | ||
| 146 : | |||
| 147 : | void Terrain_OnLandPatch(Simulator simulator, int x, int y, int width, float[] data) | ||
| 148 : | { | ||
| 149 : | if(width != 16) | ||
| 150 : | return; | ||
| 151 : | |||
| 152 : | x *= 16; | ||
| 153 : | y *= 16; | ||
| 154 : | |||
| 155 : | int i = 0; | ||
| 156 : | |||
| 157 : | for(int tx=0;tx<16;tx++) | ||
| 158 : | { | ||
| 159 : | for(int ty=0;ty<16;ty++) | ||
| 160 : | { | ||
| 161 : | m_terrainpatch[x + ty, y + tx] = data[i++]; | ||
| 162 : | } | ||
| 163 : | } | ||
| 164 : | |||
| 165 : | m_terrainSetTimer.Stop(); | ||
| 166 : | m_terrainSetTimer.AutoReset = false; | ||
| 167 : | m_terrainSetTimer.Start(); | ||
| 168 : | |||
| 169 : | //m_renderer.SetTerrain(m_terrainpatch); | ||
| 170 : | |||
| 171 : | log("Setting terrain patch " + x + "," + y + " midval: " + m_terrainpatch[x + 8, y + 8] + "/" + data[128]); | ||
| 172 : | } | ||
| 173 : | |||
| 174 : | void Network_OnConnected(object sender) | ||
| 175 : | { | ||
| 176 : | // Download whole scene here. | ||
| 177 : | albert | 38 | //textureCache = new TextureCache(m_gridclient); |
| 178 : | albert | 4 | m_gridclient.Self.Movement.Camera.LookAt(new Vector3(128, 128, 192), new Vector3(128, 128, 0)); |
| 179 : | } | ||
| 180 : | |||
| 181 : | void Logger_OnLogMessage(object message, Helpers.LogLevel level) | ||
| 182 : | { | ||
| 183 : | log(message.ToString()); | ||
| 184 : | } | ||
| 185 : | |||
| 186 : | public void RequestTexture(UUID tex) | ||
| 187 : | { | ||
| 188 : | m_gridclient.Assets.RequestImage(tex, ImageType.Normal); | ||
| 189 : | } | ||
| 190 : | |||
| 191 : | public void Start(string username, string lastname, string password) | ||
| 192 : | { | ||
| 193 : | log("Calling login method"); | ||
| 194 : | |||
| 195 : | albert | 18 | LoginParams login = m_gridclient.Network.DefaultLoginParams(username, lastname,password |
| 196 : | albert | 15 | ,"XenkiViewer", |
| 197 : | albert | 4 | System.Windows.Forms.Application.ProductVersion); |
| 198 : | //login.URI = "http://osgrid.org:8002/"; | ||
| 199 : | m_gridclient.Network.BeginLogin(login); | ||
| 200 : | } | ||
| 201 : | |||
| 202 : | public void Stop() | ||
| 203 : | { | ||
| 204 : | m_gridclient.Network.Logout(); | ||
| 205 : | } | ||
| 206 : | |||
| 207 : | void Objects_OnObjectKilled(Simulator simulator, uint objectID) | ||
| 208 : | { | ||
| 209 : | //m_renderer.RemovePrimitive(objectID); | ||
| 210 : | } | ||
| 211 : | |||
| 212 : | void Objects_OnNewPrim(Simulator simulator, Primitive prim, ulong regionHandle, ushort timeDilation) | ||
| 213 : | { | ||
| 214 : | try | ||
| 215 : | { | ||
| 216 : | albert | 38 | |
| 217 : | albert | 4 | //log("Adding new primitive to Renderer scene: " + prim.LocalID + " at " + prim.Position); |
| 218 : | albert | 35 | DownLoadTextureAndCache(prim.Textures.DefaultTexture.TextureID); |
| 219 : | albert | 38 | |
| 220 : | albert | 35 | m_renderer.AddPrimitive(prim.LocalID, prim); |
| 221 : | albert | 33 | |
| 222 : | albert | 4 | } catch(Exception e) |
| 223 : | { | ||
| 224 : | MessageBox.Show(e.ToString()); | ||
| 225 : | } | ||
| 226 : | } | ||
| 227 : | albert | 35 | |
| 228 : | albert | 38 | //public static TextureCache textureCache; |
| 229 : | albert | 35 | |
| 230 : | void DownLoadTextureAndCache(UUID textureID) | ||
| 231 : | { | ||
| 232 : | // asset.Cache = textureCache; | ||
| 233 : | albert | 36 | //asset.RequestAsset(textureID, AssetType.Texture, true); |
| 234 : | albert | 38 | byte[] imagebytes = DefaultNetwork.m_primitiveData.RetireveTextureData(textureID); |
| 235 : | albert | 36 | if (imagebytes != null && imagebytes.Length > 0) |
| 236 : | return; | ||
| 237 : | if (DefaultNetwork.m_primitiveData.UnAttachedTextures.ContainsValue(textureID) == true) | ||
| 238 : | return; | ||
| 239 : | |||
| 240 : | albert | 38 | defaultTexture.RequestTexture(textureID); |
| 241 : | |||
| 242 : | albert | 36 | |
| 243 : | albert | 35 | } |
| 244 : | albert | 38 | |
| 245 : | albert | 35 | |
| 246 : | albert | 38 | |
| 247 : | albert | 4 | } |
| 248 : | } |
| ViewVC Help | |
| Powered by ViewVC 1.0.0 |

