private void UpdateTargetVitals(NetworkMessageEventArgs e) { int guid = e.Message.Value <int>("object"); WorldObject worldObject = lib.MyCore.WorldFilter[guid]; if (worldObject == null) { return; } try { if (guid.Equals(lib.MyCore.Actions.CurrentSelection)) { bool flag = false; if ((e.Message.Value <int>("flags") & 256) > 0) { int currentHealth = e.Message.Value <int>("health"); int maxHealth = e.Message.Value <int>("healthMax"); int currentStamina = e.Message.Value <int>("stamina"); int maxStamina = e.Message.Value <int>("staminaMax"); int currentMana = e.Message.Value <int>("mana"); int maxMana = e.Message.Value <int>("manaMax"); TargetCache.AddOrUpdate(worldObject, currentHealth, maxHealth, currentStamina, maxStamina, currentMana, maxMana); flag = true; } if (TargetSurface != null && flag) { TargetSurface.Invalidate(); } } } catch (Exception ex) { Repo.RecordException(ex); } }
protected override void UpdateOutputSurface() { base.UpdateOutputSurface(); using (var targetResource = TargetSurface.QueryInterface <SharpDX.Direct3D11.Resource>()) using (var cpuResource = CpuSurface.QueryInterface <SharpDX.Direct3D11.Resource>()) { context.ResolveSubresource(targetResource, 0, cpuResource, 0, Format.B8G8R8A8_UNorm); context.Flush(); } }
private void OnEngineEvent(MediaEngineEvent mediaevent, long param1, int param2) { switch (mediaevent) { case MediaEngineEvent.DurationChange: SetDuration(engine.Duration); break; case MediaEngineEvent.LoadStart: SetCurrentState(StreamPlayerState.LoadingSource); break; case MediaEngineEvent.LoadedMetadata: int x, y; engine.GetNativeVideoSize(out x, out y); using (var texture = new Texture2D(Device, new Texture2DDescription { Format = Format.B8G8R8A8_UNorm, Width = x, Height = y, ArraySize = 1, MipLevels = 1, SampleDescription = new SampleDescription { Count = 1 }, BindFlags = BindFlags.RenderTarget, })) { TargetSurface?.Dispose(); TargetSurface = texture.QueryInterface <Surface>(); OnNewSurface(x, y); SetCurrentTime(TimeSpan.Zero); } break; case MediaEngineEvent.CanPlay: SetCurrentState(StreamPlayerState.CanPlay); break; case MediaEngineEvent.CanPlayThrough: SetCurrentState(StreamPlayerState.CanPlayFully); break; case MediaEngineEvent.Error: // We don't want to throw on this thread, so instead break the debugger if (System.Diagnostics.Debugger.IsAttached) { var exception = System.Runtime.InteropServices.Marshal.GetExceptionForHR(param2); System.Diagnostics.Debugger.Break(); } break; } }