//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ 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); }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ 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); }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ 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; }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ 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; }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ 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; } }