コード例 #1
0
        private void Init()
        {
            var cache = Application.ResourceCache;

            barTex  = cache.GetTexture2D("Textures/Bargraph.png");
            barFont = cache.GetFont("Fonts/OpenSans-SemiBold.ttf");

            graphRoot = new UIElement();
            graphRoot.SetStyleAuto(null);
            graphRoot.LayoutMode = LayoutMode.Free;

            panel = Node.CreateComponent <UIComponent>();
            panel.Material.SetTechnique(0, cache.GetTechnique("Techniques/DiffUnlitAlpha.xml"));
            panel.Root.LayoutMode          = LayoutMode.Free;
            panel.Root.HorizontalAlignment = HorizontalAlignment.Center;
            panel.Root.VerticalAlignment   = VerticalAlignment.Center;
            panel.Root.AddChild(graphRoot);

            billboards = Node.CreateComponent <BillboardSet>();
            billboards.NumBillboards = 1;
            billboards.Material      = panel.Material;

            var billboard = billboards.GetBillboardSafe(0);

            billboard.Enabled = false;
            billboards.Commit();
        }
コード例 #2
0
        public void SetHealth(float healthPercent)
        {
            healthPercent = Math.Max(Math.Min(healthPercent, 100), 0);

            var billboard  = billboardSet.GetBillboardSafe(billboardIndex);
            int imageIndex = (int)healthPercent / entity.Player.Insignia.HealthBarStepSize;

            Rect  uv     = entity.Player.Insignia.HealthBarFullUv;
            float offset = imageIndex / ((100.0f / entity.Player.Insignia.HealthBarStepSize) + 1);

            uv.Min.Y    += offset;
            uv.Max.Y    += offset;
            billboard.Uv = uv;

            billboardSet.Commit();
        }
コード例 #3
0
        private void Init()
        {
            var cache = Application.ResourceCache;

            label = new Text()
            {
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
            };
            label.SetColor(new Color(1.0f, 1.0f, 1.0f));
            label.SetFont(cache.GetFont("Fonts/OpenSans-Bold.ttf"), 20);

            background = new BorderImage()
            {
                //Texture = cache.GetTexture2D("Textures/UI.png"),
                //ImageRect = new IntRect(48, 0, 64, 16),
                //Border = new IntRect(4, 4, 4, 4),
                Texture   = cache.GetTexture2D("Textures/Panel.png"),
                ImageRect = new IntRect(0, 0, 64, 64),
                Border    = new IntRect(30, 30, 30, 30),
                BlendMode = BlendMode.Alpha,
            };

            panel = Node.CreateComponent <UIComponent>();
            panel.Material.SetTechnique(0, cache.GetTechnique("Techniques/DiffUnlitAlpha.xml"));
            panel.Root.LayoutMode          = LayoutMode.Free;
            panel.Root.HorizontalAlignment = HorizontalAlignment.Center;
            panel.Root.VerticalAlignment   = VerticalAlignment.Center;
            panel.Root.AddChild(background);
            panel.Root.AddChild(label);

            billboards = Node.CreateComponent <BillboardSet>();
            billboards.NumBillboards = 1;
            billboards.Material      = panel.Material;

            Node.Position = Position;

            var billboard = billboards.GetBillboardSafe(0);

            billboard.Enabled = false;
            billboards.Commit();


            /*
             * var node = Node.CreateChild();
             * node.Position = new Vector3(0.0f, 2.0f, 0.0f);
             * node.Scale = new Vector3(2.0f, 2.0f, 2.0f);
             */

            /*
             * var box = node.CreateComponent<StaticModel>();
             * box.Model = cache.GetModel("Models/Box.mdl");
             * //box.Material = Material.FromImage("Textures/StoneDiffuse.dds");
             */
        }
コード例 #4
0
        private void Init()
        {
            var cache = Application.ResourceCache;

            billboards = Node.CreateComponent <BillboardSet>();
            billboards.NumBillboards = 1;
            billboards.Material      = cache.GetMaterial("Materials/Sprite.xml").Clone();

            Node.Position = Position;

            var billboard = billboards.GetBillboardSafe(0);

            billboard.Position = Vector3.Zero;
            billboard.Size     = new Vector2(0.1f, 0.1f);
            billboard.Enabled  = true;
            billboards.Commit();
        }
コード例 #5
0
ファイル: OverheadImage.cs プロジェクト: MK4H/MHUrho
        void AddToEntity(IEntity entity, Vector3 offset, Vector2 size)
        {
            billboardSet = entity.Node.CreateComponent <BillboardSet>();
            billboardSet.FaceCameraMode = FaceCameraMode.RotateXyz;
            billboardSet.NumBillboards  = 1;
            billboardSet.Sorted         = false;
            billboardSet.Material       = material;
            billboardSet.Scaled         = false;


            var billboard = billboardSet.GetBillboardSafe(0);

            billboard.Position = offset;
            billboard.Rotation = 0;
            billboard.Size     = size;
            billboard.Uv       = new Rect(new Vector2(0, 0), new Vector2(1, 1));
            billboard.Enabled  = true;
        }
コード例 #6
0
        public void Update(IEnumerable <BarData> newData)
        {
            if (newData.Count() != data.Count)
            {
                graphRoot.Size = new IntVector2(MAX_BAR_WIDTH + labelWidth, newData.Count() * HEIGHT);

                graphRoot.RemoveAllChildren();
                for (int i = 0; i < newData.Count(); ++i)
                {
                    var row = new UIElement();

                    var label = new Text()
                    {
                        TextAlignment       = HorizontalAlignment.Right,
                        HorizontalAlignment = HorizontalAlignment.Right
                    };
                    label.SetColor(new Color(1.0f, 1.0f, 1.0f));
                    label.SetFont(barFont, 22);
                    label.Position = new IntVector2(labelWidth, i * HEIGHT);
                    label.Width    = labelWidth;
                    row.AddChild(label);

                    var bar = new BorderImage()
                    {
                        Texture   = barTex,
                        ImageRect = new IntRect(0, 0, 32, 32),
                        Border    = new IntRect(6, 9, 6, 9),

                        MinSize   = new IntVector2(20, 20),
                        BlendMode = BlendMode.Alpha
                    };
                    bar.Position = new IntVector2(labelWidth + LABEL_GAP, i * HEIGHT);
                    row.AddChild(bar);

                    graphRoot.AddChild(row);
                }
            }
            data.Clear();
            data.AddRange(newData);

            var selected = data.Select(bd => bd.Value);
            // TODO: Check whether this should be in or out

            /*if (!selected.Any()) {
             *  return;
             * }*/
            var maxValue      = selected.Max();
            int maxLabelWidth = -1;

            for (int i = 0; i < data.Count; ++i)
            {
                var row = graphRoot.GetChild((uint)i);

                var label = row.GetChild(0) as Text;
                label.Value   = data[i].Label;
                maxLabelWidth = (int)Math.Max(label.GetRowWidth(0), maxLabelWidth);

                var bar = row.GetChild(1) as BorderImage;
                if (data[i].Color.HasValue)
                {
                    bar.SetColor(data[i].Color.Value);
                }
                else
                {
                    bar.SetColor(colorCycle[i % colorCycle.Length]);
                }
                bar.Size = new IntVector2((int)(MAX_BAR_WIDTH * (data[i].Value / maxValue)), HEIGHT);
            }

            if (maxLabelWidth != labelWidth)
            {
                labelWidth = maxLabelWidth;
                for (int i = 0; i < data.Count; ++i)
                {
                    var row   = graphRoot.GetChild((uint)i);
                    var label = row.GetChild(0) as Text;
                    var bar   = row.GetChild(1) as BorderImage;

                    label.Position = new IntVector2(labelWidth, i * HEIGHT);
                    label.Width    = labelWidth;
                    bar.Position   = new IntVector2(labelWidth + LABEL_GAP, i * HEIGHT);
                }
            }

            var billboard = billboards.GetBillboardSafe(0);

            billboard.Size    = new Vector2(0.001f * (MAX_BAR_WIDTH + labelWidth), 0.002f * (HEIGHT * data.Count));
            billboard.Enabled = true;
            billboards.Commit();
        }