コード例 #1
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        internal void Build(ArcState pArcState, ArcSegmentState pSegState, float pArcAngle,
                            ISettings pSettings)
        {
            vArcState = pArcState;
            vSegState = pSegState;
            ArcAngle  = pArcAngle;

            vSegState.SetCursorDistanceFunction(CalcCursorDistance);

            vCursorBaseTx = gameObject.transform.parent.parent.parent.parent;             //HovercastSetup

            const float pi = (float)Math.PI;
            const float slideBufferAngle = pi / 80f;

            vSlideDegrees = (pArcAngle - slideBufferAngle * 2) / (float)Math.PI * 180;
            vSlideDir0    = MeshUtil.GetRingPoint(1, -pArcAngle / 2f + slideBufferAngle);

            ////

            Type rendType             = pSettings.GetUiArcSegmentRendererType(vSegState.NavItem);
            ArcSegmentSettings colors = pSettings.GetArcSegmentSettings(vSegState.NavItem);

            var rendObj = new GameObject("Renderer");

            rendObj.transform.SetParent(gameObject.transform, false);

            vRenderer = (IUiArcSegmentRenderer)rendObj.AddComponent(rendType);
            vRenderer.Build(vArcState, vSegState, pArcAngle, colors);
        }
コード例 #2
0
 /*--------------------------------------------------------------------------------------------*/
 public void Fill(ArcSegmentSettings pSettings)
 {
     TextSize        = pSettings.TextSize;
     TextColor       = pSettings.TextColor;
     TextFont        = pSettings.TextFont;
     ArrowIconColor  = pSettings.ArrowIconColor;
     ToggleIconColor = pSettings.ToggleIconColor;
     BackgroundColor = pSettings.BackgroundColor;
     EdgeColor       = pSettings.EdgeColor;
     HighlightColor  = pSettings.HighlightColor;
     SliderTickColor = pSettings.SliderTickColor;
 }
コード例 #3
0
        /*--------------------------------------------------------------------------------------------*/
        private void UpdateMenuColorOpacity()
        {
            ArcSegmentSettings sett = DemoSettingsComponent.ArcSegmentSettings;

            Color c = sett.BackgroundColor;

            c.a = vMenuOpacity;
            sett.BackgroundColor = c;

            c   = sett.SliderFillColor;
            c.a = 0.5f * vMenuOpacity;
            sett.SliderFillColor = c;
        }
コード例 #4
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public override void Build(ArcState pArcState, ArcSegmentState pSegState,
                                   float pArcAngle, ArcSegmentSettings pSettings)
        {
            base.Build(pArcState, pSegState, pArcAngle, pSettings);

            vIcon      = GameObject.CreatePrimitive(PrimitiveType.Quad);
            vIcon.name = "Icon";
            vIcon.transform.SetParent(gameObject.transform, false);
            vIcon.renderer.sharedMaterial             = new Material(Shader.Find("Unlit/AlphaSelfIllum"));
            vIcon.renderer.sharedMaterial.color       = Color.clear;
            vIcon.renderer.sharedMaterial.mainTexture = GetIconTexture();
            vIcon.transform.localRotation             = vLabel.CanvasLocalRotation;
        }
コード例 #5
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public override ArcSegmentSettings GetArcSegmentSettings(NavItem pNavItem)
        {
            if (ArcSegmentSettings == null)
            {
                ArcSegmentSettings = base.GetArcSegmentSettings(null);
            }

            if (pNavItem == DemoNavComponent.NavDelegate.Items.ColorHue)
            {
                var sett = new DemoHueSliderSettings(pNavItem);
                sett.Fill(ArcSegmentSettings);
                return(sett);
            }

            return(ArcSegmentSettings);
        }
コード例 #6
0
        /*--------------------------------------------------------------------------------------------*/
        private void HandleColorThemeSelected(NavItem pItem)
        {
            ArcSegmentSettings sett = DemoSettingsComponent.ArcSegmentSettings;

            sett.TextColor        = new Color(1, 1, 0.7f);
            sett.ArrowIconColor   = new Color(1, 1, 0.7f);
            sett.ToggleIconColor  = new Color(1, 1, 0.7f);
            sett.BackgroundColor  = new Color(0.05f, 0.25f, 0.45f, 0.5f);
            sett.EdgeColor        = new Color(0.1f, 0.9f, 0.2f);
            sett.HighlightColor   = new Color(0.1f, 0.5f, 0.9f);
            sett.SelectionColor   = new Color(0.1f, 0.9f, 0.2f);
            sett.SliderTrackColor = new Color(0.1f, 0.5f, 0.9f, 0.5f);
            sett.SliderFillColor  = new Color(0.1f, 0.9f, 0.2f, 0.5f);
            sett.SliderTickColor  = new Color(1, 1, 1, 0.2f);

            UpdateMenuColorOpacity();
        }
コード例 #7
0
 /*--------------------------------------------------------------------------------------------*/
 public virtual void SetSettings(ArcSegmentSettings pSettings)
 {
     vSettings = pSettings;
 }
コード例 #8
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public virtual void Build(ArcState pArcState, ArcSegmentState pSegState,
                                  float pArcAngle, ArcSegmentSettings pSettings)
        {
            vArcState  = pArcState;
            vSegState  = pSegState;
            vAngle0    = -pArcAngle / 2f + AngleInset;
            vAngle1    = pArcAngle / 2f - AngleInset;
            vSettings  = pSettings;
            vMeshSteps = (int)Math.Round(Math.Max(2, (vAngle1 - vAngle0) / Math.PI * 60));

            ////

            vBackground = new GameObject("Background");
            vBackground.transform.SetParent(gameObject.transform, false);
            vBackground.AddComponent <MeshFilter>();
            vBackground.AddComponent <MeshRenderer>();
            vBackground.renderer.sharedMaterial              = new Material(Shader.Find("Unlit/AlphaSelfIllum"));
            vBackground.renderer.sharedMaterial.renderQueue -= 300;
            vBackground.renderer.sharedMaterial.color        = Color.clear;

            vEdge = new GameObject("Edge");
            vEdge.transform.SetParent(gameObject.transform, false);
            vEdge.AddComponent <MeshFilter>();
            vEdge.AddComponent <MeshRenderer>();
            vEdge.renderer.sharedMaterial              = new Material(Shader.Find("Unlit/AlphaSelfIllum"));
            vEdge.renderer.sharedMaterial.renderQueue -= 300;
            vEdge.renderer.sharedMaterial.color        = Color.clear;

            vHighlight = new GameObject("Highlight");
            vHighlight.transform.SetParent(gameObject.transform, false);
            vHighlight.AddComponent <MeshFilter>();
            vHighlight.AddComponent <MeshRenderer>();
            vHighlight.renderer.sharedMaterial              = new Material(Shader.Find("Unlit/AlphaSelfIllum"));
            vHighlight.renderer.sharedMaterial.renderQueue -= 200;
            vHighlight.renderer.sharedMaterial.color        = Color.clear;

            vSelect = new GameObject("Select");
            vSelect.transform.SetParent(gameObject.transform, false);
            vSelect.AddComponent <MeshFilter>();
            vSelect.AddComponent <MeshRenderer>();
            vSelect.renderer.sharedMaterial              = new Material(Shader.Find("Unlit/AlphaSelfIllum"));
            vSelect.renderer.sharedMaterial.renderQueue -= 10;
            vSelect.renderer.sharedMaterial.color        = Color.clear;

            ////

            Mesh bgMesh = vBackground.GetComponent <MeshFilter>().mesh;

            BuildMesh(bgMesh, 1);

            vSelectionPoints = new List <Vector3>();

            for (int i = 1; i < bgMesh.vertices.Length; i += 2)
            {
                vSelectionPoints.Add(bgMesh.vertices[i]);
            }

            MeshUtil.BuildRingMesh(vEdge.GetComponent <MeshFilter>().mesh,
                                   0.99f, 1.0f, vAngle0, vAngle1, vMeshSteps);

            ////

            var labelObj = new GameObject("Label");

            labelObj.transform.SetParent(gameObject.transform, false);
            labelObj.transform.localPosition = new Vector3(0, 0, 1);
            labelObj.transform.localScale    = new Vector3(1, 1, (vArcState.IsLeft ? 1 : -1));

            vLabel        = labelObj.AddComponent <UiLabel>();
            vLabel.IsLeft = vArcState.IsLeft;
        }
コード例 #9
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public virtual void Build(ArcState pArcState, ArcSegmentState pSegState,
                                  float pArcAngle, ArcSegmentSettings pSettings)
        {
            vArcState  = pArcState;
            vSegState  = pSegState;
            vAngle0    = -pArcAngle / 2f + UiSelectRenderer.AngleInset;
            vAngle1    = pArcAngle / 2f - UiSelectRenderer.AngleInset;
            vSettings  = pSettings;
            vNavSlider = (NavItemSlider)vSegState.NavItem;
            vMeshSteps = (int)Math.Round(Math.Max(2, (vAngle1 - vAngle0) / Math.PI * 60));

            const float pi = (float)Math.PI;

            vSliderAngleHalf = pi / 80f;
            vSlideDegree0    = (vAngle0 + vSliderAngleHalf) / pi * 180;
            vSlideDegrees    = (vAngle1 - vAngle0 - vSliderAngleHalf * 2) / pi * 180;

            ////

            vTrack = new GameObject("Track");
            vTrack.transform.SetParent(gameObject.transform, false);
            vTrack.AddComponent <MeshFilter>();
            vTrack.AddComponent <MeshRenderer>();
            vTrack.renderer.sharedMaterial              = new Material(Shader.Find("Unlit/AlphaSelfIllum"));
            vTrack.renderer.sharedMaterial.renderQueue -= 600;
            vTrack.renderer.sharedMaterial.color        = Color.clear;

            vFill = new GameObject("Fill");
            vFill.transform.SetParent(gameObject.transform, false);
            vFill.AddComponent <MeshFilter>();
            vFill.AddComponent <MeshRenderer>();
            vFill.renderer.sharedMaterial              = new Material(Shader.Find("Unlit/AlphaSelfIllum"));
            vFill.renderer.sharedMaterial.renderQueue -= 500;
            vFill.renderer.sharedMaterial.color        = Color.clear;

            vTrackMesh = vTrack.GetComponent <MeshFilter>().mesh;
            vFillMesh  = vFill.GetComponent <MeshFilter>().mesh;

            ////

            vTickMat              = new Material(Shader.Find("Unlit/AlphaSelfIllum"));
            vTickMat.renderQueue -= 400;
            vTickMat.color        = Color.clear;

            if (vNavSlider.Ticks > 1)
            {
                Vector3 quadScale   = new Vector3(UiSelectRenderer.AngleInset * 2, 0.36f, 0.1f);
                float   percPerTick = 1 / (float)(vNavSlider.Ticks - 1);

                vTicks = new GameObject[vNavSlider.Ticks];

                for (int i = 0; i < vNavSlider.Ticks; ++i)
                {
                    var tick = new GameObject("Tick" + i);
                    tick.transform.SetParent(gameObject.transform, false);
                    tick.transform.localRotation = Quaternion.AngleAxis(
                        vSlideDegree0 + vSlideDegrees * i * percPerTick, Vector3.up);
                    vTicks[i] = tick;

                    var quad = GameObject.CreatePrimitive(PrimitiveType.Quad);
                    quad.renderer.sharedMaterial = vTickMat;
                    quad.transform.SetParent(tick.transform, false);
                    quad.transform.localPosition = new Vector3(0, 0, 1.25f);
                    quad.transform.localRotation =
                        Quaternion.FromToRotation(Vector3.back, Vector3.down);
                    quad.transform.localScale = quadScale;
                }
            }

            ////

            vGrabHold = new GameObject("GrabHold");
            vGrabHold.transform.SetParent(gameObject.transform, false);

            var grabObj = new GameObject("Grab");

            grabObj.transform.SetParent(vGrabHold.transform, false);

            vGrab = grabObj.AddComponent <UiSliderGrabRenderer>();
            vGrab.Build(vArcState, vSegState, vSliderAngleHalf * 2, pSettings);
        }