public virtual void SetScrollerElementLocalPosOnAxis(float localPosOnAxis, int dimension) { Vector2 newScrollerElementLocalPos = thisScrollerElement.GetLocalPosition(); newScrollerElementLocalPos[dimension] = localPosOnAxis; thisScrollerElement.SetLocalPosition(newScrollerElementLocalPos); }
string GetCursorOffsetString() { IUIElementGroupScroller uieGroupScroller = (IUIElementGroupScroller)uieGroupScrollerAdaptor.GetUIElement(); if (uieGroupScroller != null) { IUIElement scrollerElement = uieGroupScroller.GetScrollerElement(); Vector2 offset = new Vector2(); for (int i = 0; i < 2; i++) { float cursorOffset = uieGroupScroller.GetElementCursorOffsetInPixel( scrollerElement.GetLocalPosition()[i], i ); offset[i] = cursorOffset; } string result = "Cursored Offset: ( " + offset.x + ", " + offset.y + " )"; return(result); } return(""); }
public void UpadateProcess_Demo(float initDeltaPosOnAxis, float deceleration, int dimension, Vector2 elementInitLocalPos) { IInertialScrollProcessConstArg arg = CreateMockConstArg(); arg.processManager.GetInertialScrollDeceleration().Returns(deceleration); arg.initialVelocity.Returns(initDeltaPosOnAxis); arg.dimension.Returns(dimension); IUIElement scrollerElement = Substitute.For <IUIElement>(); scrollerElement.GetLocalPosition().Returns(elementInitLocalPos); arg.scrollerElement.Returns(scrollerElement); TestInertialScrollProcess process = new TestInertialScrollProcess(arg); bool done = false; DebugHelper.PrintInRed("initVel: " + initDeltaPosOnAxis.ToString() + ", deceleration: " + deceleration.ToString()); float deltaT = .1f; Vector2 localPos = elementInitLocalPos; scrollerElement.SetLocalPosition(Arg.Do <Vector2>(x => localPos = x)); while (!done) { process.UpdateProcess(deltaT); Debug.Log("elementLocalPos: " + localPos.ToString() + ", velocity: " + process.thisPrevVelocity_Test.ToString()); if (process.thisElapsedTime_Test >= process.thisExpireTime_Test) { done = true; } } }
public ScrollerElementSnapProcess( IConstArg arg ) : base( arg ) { IUIElement scrollerElement = arg.scrollerElement; int dimension = arg.dimension; float targetElementLocalPositionOnAxis = arg.targetElementLocalPositionOnAxis; float initialVelOnAxis = arg.initialVelocityOnAxis; float initialElementLocalPosOnAxis = scrollerElement.GetLocalPosition()[dimension]; thisTargetElementLocalPositionOnAxis = targetElementLocalPositionOnAxis; float springCoefficient = 10f; thisSpringCalculator = new RealTimeCriticallyDampedSpringCalculator(initialElementLocalPosOnAxis, targetElementLocalPositionOnAxis, initialVelOnAxis, springCoefficient); prevLocalPosOnAxis = scrollerElement.GetLocalPosition()[dimension]; thisInitVel = initialVelOnAxis; }
public void UpdateProcess_Demo(Vector2 initialLocalPos, float targetLocalPosOnAxis, float initialVelOnAxis, int dimension, float diffThreshold, float stopVelocity) { IScrollerElementSnapProcessConstArg arg = CreateMockConstArg(); IUIElement scrollerElement = Substitute.For <IUIElement>(); arg.scrollerElement.Returns(scrollerElement); scrollerElement.GetLocalPosition().Returns(initialLocalPos); arg.dimension.Returns(dimension); arg.targetElementLocalPositionOnAxis.Returns(targetLocalPosOnAxis); arg.processManager.GetScrollerElementSnapSpringCoefficient().Returns(5f); arg.initialVelocityOnAxis.Returns(initialVelOnAxis); arg.stopVelocity.Returns(stopVelocity); TestScrollerElementSnapProcess process = new TestScrollerElementSnapProcess(arg); float deltaT = .02f; bool done = false; Vector2 passedLocalPos = Vector2.zero; scrollerElement.SetLocalPosition(Arg.Do <Vector2>(x => passedLocalPos = x)); float prevLocalPosOnAxis = initialLocalPos[dimension]; DKUtility.DebugHelper.PrintInRed("initPos: " + initialLocalPos.ToString() + ", targetPosOnAxis: " + targetLocalPosOnAxis.ToString() + ", initVel: " + initialVelOnAxis.ToString() + ", dimension: " + dimension.ToString()); float delta; while (!done) { process.UpdateProcess(deltaT); delta = Mathf.Abs(passedLocalPos[dimension] - prevLocalPosOnAxis) / deltaT; Debug.Log("scrollerElementLocalPos: " + passedLocalPos.ToString() + ", delta: " + delta.ToString()); if (delta <= stopVelocity) { done = true; } prevLocalPosOnAxis = passedLocalPos[dimension]; } }
protected float GetNormalizedCursoredPositionFromGroupElementToCursor(IUIElement groupElement, int dimension) { float groupElementLocalPositionOnAxis = groupElement.GetLocalPosition()[dimension]; return(GetNormalizedCursoredPositionFromPosInElementSpace(groupElementLocalPositionOnAxis - thisPadding[dimension], dimension)); }