public void DragMove(DragMessage msg) { if( !ControllerEnabled ) return; float turnAngle = - msg.DeltaPosition.x; if( msg.StartPosition.x < - mCenter.x ) { turnAngle -= msg.DeltaPosition.y; } else turnAngle += msg.DeltaPosition.y; SetWheelRotationAngle( mTotalAngle + turnAngle ); if( mTotalAngle > MaxAngle ) { turnAngle -= (mTotalAngle - MaxAngle); SetWheelRotationAngle(MaxAngle); mCurrentSpeed = 0.0f; } else if( mTotalAngle < MinAngle ) { turnAngle -= (mTotalAngle - MinAngle); SetWheelRotationAngle(MinAngle); mCurrentSpeed = 0.0f; } else { mCurrentSpeed = turnAngle / msg.DeltaTime; if( mCurrentSpeed > MaxRotationSpeed ) mCurrentSpeed = MaxRotationSpeed; } transform.rotation = transform.rotation * Quaternion.Euler( 0, 0, turnAngle ); mLastMessage = msg; }
private void Drag(DragMessage _action) { // Update the position of the node within the Canvas. if (SelectedNode == _action.Node) { Vector displacement = new Vector(_action.DeltaX, _action.DeltaY); //check for clipping bool willClip = Utilities.WillClip(_action.Node.Visual, displacement, Visual); //if (!willClip) { Debug.WriteLine(string.Format("@{0},{1}", _action.Node.X, _action.Node.Y)); //Translate the selected node _action.Node.X += _action.DeltaX; _action.Node.Y += _action.DeltaY; //Update the edge positions as well, allowing easier edge collision detection _action.Node.LeftEdgeViewModel.X = _action.DeltaX; _action.Node.LeftEdgeViewModel.Y = _action.DeltaY; _action.Node.RightEdgeViewModel.X += _action.DeltaX; _action.Node.RightEdgeViewModel.Y += _action.DeltaY; } //else { //If the vector magnitude will take the node outside the network visual //set the position of the node to the edge of the visual, and not beyond. } } }
void KeyBoardDrive(float x) { if (mLastMessage == null) { mLastMessage = new DragMessage(); mLastMessage.StartPosition = Vector2.zero; } Vector2 endPosition = mLastMessage.StartPosition; endPosition.x -= x * MaxAngle; mLastMessage.EndPosition = endPosition; mLastMessage.DeltaTime = Time.deltaTime; mLastMessage.DeltaPosition = mLastMessage.StartPosition - mLastMessage.EndPosition; DragMove(mLastMessage); }
public void DragMove(DragMessage msg) { if (!ControllerEnabled) { return; } float turnAngle = -msg.DeltaPosition.x; if (msg.StartPosition.x < -mCenter.x) { turnAngle -= msg.DeltaPosition.y; } else { turnAngle += msg.DeltaPosition.y; } SetWheelRotationAngle(mTotalAngle + turnAngle); if (mTotalAngle > MaxAngle) { turnAngle -= (mTotalAngle - MaxAngle); SetWheelRotationAngle(MaxAngle); mCurrentSpeed = 0.0f; } else if (mTotalAngle < MinAngle) { turnAngle -= (mTotalAngle - MinAngle); SetWheelRotationAngle(MinAngle); mCurrentSpeed = 0.0f; } else { mCurrentSpeed = turnAngle / msg.DeltaTime; if (mCurrentSpeed > MaxRotationSpeed) { mCurrentSpeed = MaxRotationSpeed; } } transform.rotation = transform.rotation * Quaternion.Euler(0, 0, turnAngle); mLastMessage = msg; }
void Update() { if (Input.GetMouseButtonDown(MouseButton)) { if( !mStartDrag) { Vector2 mousePos = new Vector2(Input.mousePosition.x, Input.mousePosition.y); if (mDragArea.Contains(mousePos)) { mStartDrag = true; mPositionRec = mousePos; GlobalMethods.SendMessage(MessageTarget, "DragStart"); } } } else if (Input.GetMouseButtonUp(MouseButton)) { if (mStartDrag) { Vector2 mousePos = new Vector2(Input.mousePosition.x, Input.mousePosition.y); DragMessage msg = new DragMessage(); msg.Index = MouseButton; msg.StartPosition = mPositionRec; msg.EndPosition = mousePos; msg.DeltaPosition = mousePos - mPositionRec; msg.DeltaTime = Time.deltaTime; mStartDrag = false; mPositionRec = Vector2.zero; if (MessageTarget != null) { GlobalMethods.SendMessage(MessageTarget, "DragMove", msg); GlobalMethods.SendMessage(MessageTarget, "DragEnd"); } } } else if (mStartDrag) { Vector2 mousePos = new Vector2(Input.mousePosition.x, Input.mousePosition.y); if (mDragArea.Contains(mousePos)) { if (mousePos != mPositionRec) { DragMessage msg = new DragMessage(); msg.Index = MouseButton; msg.StartPosition = mPositionRec; msg.EndPosition = mousePos; msg.DeltaPosition = mousePos - mPositionRec; msg.DeltaTime = Time.deltaTime; mPositionRec = mousePos; if (MessageTarget != null) GlobalMethods.SendMessage(MessageTarget, "DragMove", msg); } } else { mStartDrag = false; DragMessage msg = new DragMessage(); msg.Index = MouseButton; msg.StartPosition = mPositionRec; msg.EndPosition = mousePos; msg.DeltaPosition = mousePos - mPositionRec; msg.DeltaTime = Time.deltaTime; mPositionRec = Vector2.zero; if (MessageTarget != null) { GlobalMethods.SendMessage(MessageTarget, "DragMove", msg); GlobalMethods.SendMessage(MessageTarget, "DragEnd"); } } } }
void KeyBoardDrive(float x) { if( mLastMessage == null ) { mLastMessage = new DragMessage(); mLastMessage.StartPosition = Vector2.zero; } Vector2 endPosition = mLastMessage.StartPosition; endPosition.x -= x * MaxAngle; mLastMessage.EndPosition = endPosition; mLastMessage.DeltaTime = Time.deltaTime; mLastMessage.DeltaPosition = mLastMessage.StartPosition - mLastMessage.EndPosition; DragMove(mLastMessage); }
private void OnDragMessage(DragMessage msg) { ResizeInProgress = msg.Start; }
void Update() { if (Input.GetMouseButtonDown(MouseButton)) { if (!mStartDrag) { Vector2 mousePos = new Vector2(Input.mousePosition.x, Input.mousePosition.y); if (mDragArea.Contains(mousePos)) { mStartDrag = true; mPositionRec = mousePos; GlobalMethods.SendMessage(MessageTarget, "DragStart"); } } } else if (Input.GetMouseButtonUp(MouseButton)) { if (mStartDrag) { Vector2 mousePos = new Vector2(Input.mousePosition.x, Input.mousePosition.y); DragMessage msg = new DragMessage(); msg.Index = MouseButton; msg.StartPosition = mPositionRec; msg.EndPosition = mousePos; msg.DeltaPosition = mousePos - mPositionRec; msg.DeltaTime = Time.deltaTime; mStartDrag = false; mPositionRec = Vector2.zero; if (MessageTarget != null) { GlobalMethods.SendMessage(MessageTarget, "DragMove", msg); GlobalMethods.SendMessage(MessageTarget, "DragEnd"); } } } else if (mStartDrag) { Vector2 mousePos = new Vector2(Input.mousePosition.x, Input.mousePosition.y); if (mDragArea.Contains(mousePos)) { if (mousePos != mPositionRec) { DragMessage msg = new DragMessage(); msg.Index = MouseButton; msg.StartPosition = mPositionRec; msg.EndPosition = mousePos; msg.DeltaPosition = mousePos - mPositionRec; msg.DeltaTime = Time.deltaTime; mPositionRec = mousePos; if (MessageTarget != null) { GlobalMethods.SendMessage(MessageTarget, "DragMove", msg); } } } else { mStartDrag = false; DragMessage msg = new DragMessage(); msg.Index = MouseButton; msg.StartPosition = mPositionRec; msg.EndPosition = mousePos; msg.DeltaPosition = mousePos - mPositionRec; msg.DeltaTime = Time.deltaTime; mPositionRec = Vector2.zero; if (MessageTarget != null) { GlobalMethods.SendMessage(MessageTarget, "DragMove", msg); GlobalMethods.SendMessage(MessageTarget, "DragEnd"); } } } }