////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		internal void Build(ArcState pArcState, ICustomSegment pCustom) {
			vArcState = pArcState;
			vSegmentObjList = new List<GameObject>();

			gameObject.transform.localPosition = PushFromHand;

			SegmentState[] segStates = vArcState.GetSegments();
			int segCount = segStates.Length;
			float degree = 170 + DegreeFull/2f;
			float sizeSum = 0;

			for ( int i = 0 ; i < segCount ; i++ ) {
				sizeSum += segStates[i].NavItem.RelativeSize;
			}

			for ( int i = 0 ; i < segCount ; i++ ) {
				SegmentState segState = segStates[i];
				float segPerc = segState.NavItem.RelativeSize/sizeSum;
				float segAngle = AngleFull*segPerc;
				float segDegHalf = segAngle*ToDegrees/2f;

				var segObj = new GameObject("Segment"+vSegmentObjList.Count);
				segObj.transform.SetParent(gameObject.transform, false);
				vSegmentObjList.Add(segObj);

				UiSegment uiSeg = segObj.AddComponent<UiSegment>();
				uiSeg.Build(vArcState, segState, segAngle, pCustom);

				degree -= segDegHalf;
				segObj.transform.localRotation = Quaternion.AngleAxis(degree, Vector3.up);
				degree -= segDegHalf;
			}
		}
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		internal void Build(ArcState pArc, ICustomSegment pCustom) {
			vArcState = pArc;
			vCustom = pCustom;

			vArcState.OnLevelChange += HandleLevelChange;
			UpdateAfterSideChange();
		}
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		internal void Build(ArcState pArcState, SegmentState pSegState, float pArcAngle, 
																			ICustomSegment pCustom) {
			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 = pCustom.GetSegmentRenderer(vSegState.NavItem);
			SegmentSettings sett = pCustom.GetSegmentSettings(vSegState.NavItem);

			var rendObj = new GameObject("Renderer");
			rendObj.transform.SetParent(gameObject.transform, false);

			vRenderer = (IUiSegmentRenderer)rendObj.AddComponent(rendType);
			vRenderer.Build(vArcState, vSegState, pArcAngle, sett);
		}
Beispiel #4
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        internal void Build(ArcState pArcState, SegmentState pSegState, float pArcAngle,
                            ICustomSegment pCustom)
        {
            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 = pCustom.GetSegmentRenderer(vSegState.NavItem);
            SegmentSettings sett     = pCustom.GetSegmentSettings(vSegState.NavItem);

            var rendObj = new GameObject("Renderer");

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

            vRenderer = (IUiSegmentRenderer)rendObj.AddComponent(rendType);
            vRenderer.Build(vArcState, vSegState, pArcAngle, sett);
        }
Beispiel #5
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        internal void Build(ArcState pArc, ICustomSegment pCustom)
        {
            vArcState = pArc;
            vCustom   = pCustom;

            vArcState.OnLevelChange += HandleLevelChange;
            UpdateAfterSideChange();
        }
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		internal void Build(MenuState pMenuState, ICustomSegment pCustomSeg, ICustomPalm pCustomPalm) {
			vMenuState = pMenuState;
			vArcState = vMenuState.Arc;
			vLeftRot = Quaternion.identity;
			vRightRot = Quaternion.AngleAxis(180, Vector3.up);

			var palmObj = new GameObject("Palm");
			palmObj.transform.SetParent(gameObject.transform, false);
			vUiPalm = palmObj.AddComponent<UiPalm>();
			vUiPalm.Build(vArcState, pCustomPalm);

			var arcObj = new GameObject("Arc");
			arcObj.transform.SetParent(gameObject.transform, false);
			vUiArc = arcObj.AddComponent<UiArc>();
			vUiArc.Build(vArcState, pCustomSeg);

			vMenuState.OnSideChange += HandleSideChange;
		}
Beispiel #7
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        internal void Build(MenuState pMenuState, ICustomSegment pCustomSeg, ICustomPalm pCustomPalm)
        {
            vMenuState = pMenuState;
            vArcState  = vMenuState.Arc;
            vLeftRot   = Quaternion.identity;
            vRightRot  = Quaternion.AngleAxis(180, Vector3.up);

            var palmObj = new GameObject("Palm");

            palmObj.transform.SetParent(gameObject.transform, false);
            vUiPalm = palmObj.AddComponent <UiPalm>();
            vUiPalm.Build(vArcState, pCustomPalm);

            var arcObj = new GameObject("Arc");

            arcObj.transform.SetParent(gameObject.transform, false);
            vUiArc = arcObj.AddComponent <UiArc>();
            vUiArc.Build(vArcState, pCustomSeg);

            vMenuState.OnSideChange += HandleSideChange;
        }
Beispiel #8
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        internal void Build(ArcState pArcState, ICustomSegment pCustom)
        {
            vArcState       = pArcState;
            vSegmentObjList = new List <GameObject>();

            gameObject.transform.localPosition = PushFromHand;

            SegmentState[] segStates = vArcState.GetSegments();
            int            segCount  = segStates.Length;
            float          degree    = 170 + DegreeFull / 2f;
            float          sizeSum   = 0;

            for (int i = 0; i < segCount; i++)
            {
                sizeSum += segStates[i].NavItem.RelativeSize;
            }

            for (int i = 0; i < segCount; i++)
            {
                SegmentState segState   = segStates[i];
                float        segPerc    = segState.NavItem.RelativeSize / sizeSum;
                float        segAngle   = AngleFull * segPerc;
                float        segDegHalf = segAngle * ToDegrees / 2f;

                var segObj = new GameObject("Segment" + vSegmentObjList.Count);
                segObj.transform.SetParent(gameObject.transform, false);
                vSegmentObjList.Add(segObj);

                UiSegment uiSeg = segObj.AddComponent <UiSegment>();
                uiSeg.Build(vArcState, segState, segAngle, pCustom);

                degree -= segDegHalf;
                segObj.transform.localRotation = Quaternion.AngleAxis(degree, Vector3.up);
                degree -= segDegHalf;
            }
        }