コード例 #1
0
        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];
            }
        }
コード例 #2
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);
        }
コード例 #3
0
        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);
            }
        }