private void RetrieveFrameMetadata(DesktopFrame frame) { if (frameInfo.TotalMetadataBufferSize > 0) { // Get moved regions int movedRegionsLength = 0; OutputDuplicateMoveRectangle[] movedRectangles = new OutputDuplicateMoveRectangle[frameInfo.TotalMetadataBufferSize]; mDeskDupl.GetFrameMoveRects(movedRectangles.Length, movedRectangles, out movedRegionsLength); frame.MovedRegions = new MovedRegion[movedRegionsLength / Marshal.SizeOf(typeof(OutputDuplicateMoveRectangle))]; for (int i = 0; i < frame.MovedRegions.Length; i++) { frame.MovedRegions[i] = new MovedRegion { Source = new Point(movedRectangles[i].SourcePoint.X, movedRectangles[i].SourcePoint.Y), Destination = new Rectangle(movedRectangles[i].DestinationRect.X, movedRectangles[i].DestinationRect.Y, movedRectangles[i].DestinationRect.Width, movedRectangles[i].DestinationRect.Height) }; } // Get dirty regions int dirtyRegionsLength = 0; SharpDX.Rectangle[] dirtyRectangles = new SharpDX.Rectangle[frameInfo.TotalMetadataBufferSize]; mDeskDupl.GetFrameDirtyRects(dirtyRectangles.Length, dirtyRectangles, out dirtyRegionsLength); frame.UpdatedRegions = new Rectangle[dirtyRegionsLength / Marshal.SizeOf(typeof(SharpDX.Rectangle))]; for (int i = 0; i < frame.UpdatedRegions.Length; i++) { frame.UpdatedRegions[i] = new Rectangle(dirtyRectangles[i].X, dirtyRectangles[i].Y, dirtyRectangles[i].Width, dirtyRectangles[i].Height); } } else { frame.MovedRegions = new MovedRegion[0]; frame.UpdatedRegions = new Rectangle[0]; } }
private void DrawTexture2(Classes.Rendering.TextureExt image, Rectangle srcRect, Vector3 center, Vector3 position, Color color) { if (image == null) { return; } var dx_color = new SharpDX.Color(color.R, color.G, color.B, color.A); var dx_rec = new SharpDX.Rectangle(srcRect.X, srcRect.Y, srcRect.Width, srcRect.Height); sprite2.Draw(image, dx_color, dx_rec, center, position); }
public void Render2D() { Vector2 pos; float length = 0; Vector2 pos2D; for (int i = 0; i < list.Count; i++) { InteractiveObject2D obj = list[i]; CameraHelper.Convert3DPointTo2D(obj.entity.IntObj3D.Position, out pos); obj.position.X = (int)pos.X; obj.position.Y = (int)pos.Y; if (!StrategicMode) { length = Vector3.Distance(SceneManager.Camera.eyePosition, obj.entity.IntObj3D.Position); obj.rect.Width = obj.rect.Height = (int)(16 * (obj.bracketSize * 120 / length)); obj.rect.X = (int)(pos.X - (float)obj.rect.Height / 2); obj.rect.Y = (int)(pos.Y - (float)obj.rect.Height / 2); } else { obj.rect.Width = obj.rect.Height = 16; obj.rect.X = (int)pos.X - 7; obj.rect.Y = (int)pos.Y - 7; } obj.onScreen = obj.rect.Right > 0 && obj.rect.Bottom > 0 && obj.rect.Left < Display.Width && obj.rect.Top < Display.Height; if (!obj.onScreen) { continue; } //DEBUG SELECTION RECTANGLE //QuadRenderer.Draw(Resources.GetEmptyTexture(), new SharpDX.Rectangle(obj.rect.X, obj.rect.Y, obj.rect.Width, obj.rect.Height), new Color4(0, 1, 1, 0.2f)); if (!StrategicMode) { // DRAW PROGRESS BARS /*if (obj.progress != -1) { * //if (obj.side != Main.network.me.id) continue; * float size = obj.bracketSize * 1000 / length; * Vector2 posBar = new Vector2(pos.X - size, pos.Y + 5 + size); * Vector2 sizeBar = new Vector2(size * 2, 2); * Vector2 progressBar = new Vector2(size * 2 * ((float)obj.progress / 10000), 2)*0.25f; * QuadRenderer.Draw(Resources.GetEmptyTexture(), posBar - new Vector2(1, 1), (sizeBar + new Vector2(2, 2))*0.25f, Color.Black); * * QuadRenderer.Draw(Resources.GetEmptyTexture(), posBar, progressBar, Color.Cyan); * posBar.Y += 2; * FontRenderer.Draw("default", obj.progress_text, posBar + new Vector2(1, 1), Color.Black); * FontRenderer.Draw("default", obj.progress_text, posBar, Color.White); * }*/ if (obj.selected || obj.focused) { SharpDX.Rectangle rect = new SharpDX.Rectangle(obj.rect.X, obj.rect.Y + obj.rect.Height, obj.rect.Width, 3); QuadRenderer.Draw(Resources.GetEmptyTexture(), rect, Color.Black); rect.Right = (int)(rect.Right * ((float)obj.entity.Health / obj.entity.HealthMax)); QuadRenderer.Draw(Resources.GetEmptyTexture(), rect, Color.LightGreen); } } else { // DRAW STRATEGIC ICON OUTLINES pos2D.X = pos.X - 7; pos2D.Y = pos.Y - 7; if (obj.iconId != -1 && !obj.selected && !obj.focused) { QuadRenderer.Draw(ForegroundGame.startegicIcons, new SharpDX.Rectangle((int)pos2D.X, (int)pos2D.Y, 16, 16), new SharpDX.Rectangle(obj.iconId, 32, 16, 16), Color.Black); } } } if (!StrategicMode) { return; } // STRATEGIC ICONS with over the outlines //------------------------------------------ foreach (InteractiveObject2D obj in list) { if (!obj.onScreen || obj.iconId == -1) { continue; } pos2D.X = obj.position.X - 7; pos2D.Y = obj.position.Y - 7; Color4 color = Color.LimeGreen;//Main.network.players.GetColor(obj.side); QuadRenderer.Draw(ForegroundGame.startegicIcons, new SharpDX.Rectangle((int)pos2D.X, (int)pos2D.Y, 16, 16), new SharpDX.Rectangle(obj.iconId, 0, 16, 16), color); } // SELECTED UNITS HAVE TO BE RENDERED ON TOP //------------------------------------------ foreach (InteractiveObject2D obj in list) { if (!obj.onScreen || obj.iconId == -1 || (!obj.selected && !obj.focused)) { continue; } pos2D.X = obj.position.X - 7; pos2D.Y = obj.position.Y - 7; Color4 color = Color.Black; if (obj.selected) { color = Color.White; } else if (obj.focused) { color = Color.LimeGreen; //Main.network.players.GetColor(obj.side); } QuadRenderer.Draw(ForegroundGame.startegicIcons, new SharpDX.Rectangle((int)pos2D.X, (int)pos2D.Y, 16, 16), new SharpDX.Rectangle(obj.iconId, 32, 16, 16), color); } foreach (InteractiveObject2D obj in list) { if (!obj.onScreen || obj.iconId == -1 || (!obj.selected && !obj.focused)) { continue; } pos2D.X = obj.position.X - 7; pos2D.Y = obj.position.Y - 7; Color4 color = Color.LimeGreen; //Main.network.players.GetColor(obj.side); QuadRenderer.Draw(ForegroundGame.startegicIcons, new SharpDX.Rectangle((int)pos2D.X, (int)pos2D.Y, 16, 16), new SharpDX.Rectangle(obj.iconId, 0, 16, 16), color); } }