private static void UpdateRadarData(RadarData radarData) { if (sendMessageThread == null || sendMessageThread.IsAlive) { sendMessageThread = new Thread(new ParameterizedThreadStart(Program.SendMessage)); sendMessageThread.Start(radarData); } }
private void ClearAlerts(RadarData RadarData) { if (this.alerts.Any()) { foreach (var guid in RadarData.Objects.Select(t => t.GUID).Where(g => !this.alerts.Keys.Contains(g))) this.alerts.Remove(guid); } }
private void UpdateRadarData(RadarData RadarData) { lock (this.lockRadarData) { this.RadarData = RadarData; this.SetText(this.RadarData.WindowTitle); this.UpdateRadar(this.RadarData); frmRadar.IsUpdating = false; } }
private void UpdateRadar(RadarData RadarData) { if (ResizingRadar) return; try { lock (this.lockdevice) { if (this.device != null && RadarData.Me != null) { this.focusObject = null; if (focusObjectOverrideGuid != null) { var focusObjectOverride = RadarData.GetWowObjectByGuid(focusObjectOverrideGuid.Value); if (focusObjectOverride != null) this.focusObject = focusObjectOverride; //else // focusObjectOverrideGuid = null; } if (this.focusObject == null) this.focusObject = RadarData.Me; var zoneId = ((WowPlayerMe)RadarData.Me).ZoneID; this.device.Clear(ClearFlags.Target, Color.Black, 1f, 0); float valueZ = 100000f; Microsoft.DirectX.Vector3 cameraPosition = new Microsoft.DirectX.Vector3(0f, 0f, valueZ); Microsoft.DirectX.Vector3 cameraTarget = new Microsoft.DirectX.Vector3(0f, 0f, 0f); Microsoft.DirectX.Vector3 cameraUpVector = new Microsoft.DirectX.Vector3(0f, -1f, 0f); Microsoft.DirectX.Matrix sourceMatrix = Microsoft.DirectX.Matrix.RotationY(Rotation) * Microsoft.DirectX.Matrix.RotationX(Rotation); if (this.settings.RotateMap) { sourceMatrix *= Microsoft.DirectX.Matrix.RotationZ(6.283185f - this.focusObject.Facing); } cameraPosition.TransformCoordinate(sourceMatrix); cameraTarget.TransformCoordinate(sourceMatrix); cameraUpVector.TransformCoordinate(sourceMatrix); cameraTarget.Add(new Microsoft.DirectX.Vector3(this.focusObject.X, this.focusObject.Y, this.focusObject.Z)); cameraPosition.Add(new Microsoft.DirectX.Vector3(this.focusObject.X, this.focusObject.Y, this.focusObject.Z)); this.device.Transform.View = Microsoft.DirectX.Matrix.LookAtLH(cameraPosition, cameraTarget, cameraUpVector); this.device.Transform.Projection = Microsoft.DirectX.Matrix.PerspectiveLH(((float)base.Width) / (valueZ * this.scale), ((float)base.Height) / (valueZ * this.scale), 1f, 1000000f); this.device.BeginScene(); if (this.showMapTexturesOverride && this.settings.ShowMinimap) { this.DrawMinimap(); } foreach (var WowObject in RadarData.Objects) { PresentWowObject(WowObject); } PresentWowObject(RadarData.Me); var ArchaeologyCacheList = BlackRain.Cache.ArchaeologyCache.ObjList.Where(t => t.ZoneID == zoneId); foreach (var WowGameObject in ArchaeologyCacheList) { PresentWowObject(WowGameObject); } this.device.EndScene(); this.device.Present(); ClearAlerts(RadarData); } } } catch (Exception exception) { Console.WriteLine(exception); this.InitializeDXDevice(); } }
private void ProcessOnRecievedMessage(object buffer) { lock (this.lockRadarData) { using (var ms = new System.IO.MemoryStream((buffer as byte[]))) { this.RadarData = BlackRain.Serialization.BinarySerializer.DeSerializeObject<RadarData>(ms); buffer = null; } this.SetText(this.RadarData.WindowTitle); this.UpdateRadar(this.RadarData); frmRadar.IsUpdating = false; } }