void HandleMouseButtonDown(MouseButtonDownEvent args) { Input input = GetSubsystem <Input>(); PhysicsWorld2D physicsWorld = scene.GetComponent <PhysicsWorld2D>(); RigidBody2D rigidBody = physicsWorld.GetRigidBody(input.MousePosition.X, input.MousePosition.Y, uint.MaxValue); // Raycast for RigidBody2Ds to pick if (rigidBody != null) { pickedNode = rigidBody.Node; //log.Info(pickedNode.name); StaticSprite2D staticSprite = pickedNode.GetComponent <StaticSprite2D>(); staticSprite.Color = (new Color(1.0f, 0.0f, 0.0f, 1.0f)); // Temporary modify color of the picked sprite // Create a ConstraintMouse2D - Temporary apply this constraint to the pickedNode to allow grasping and moving with the mouse ConstraintMouse2D constraintMouse = pickedNode.CreateComponent <ConstraintMouse2D>(); constraintMouse.Target = GetMousePositionXY(); constraintMouse.MaxForce = 1000 * rigidBody.Mass; constraintMouse.CollideConnected = true; constraintMouse.OtherBody = dummyBody; // Use dummy body instead of rigidBody. It's better to create a dummy body automatically in ConstraintMouse2D constraintMouse.DampingRatio = 0.0f; } SubscribeToEvent <MouseMoveEvent>(HandleMouseMove); SubscribeToEvent <MouseButtonUpEvent>(HandleMouseButtonUp); }
public EventManager.EventResult handleInput(Event e) { switch (e.name) { case "input.keyboard.key.up": { KeyUpEvent ke = e as KeyUpEvent; handleKeyboardUp(ke.key); break; } case "input.keyboard.key.down": { KeyDownEvent ke = e as KeyDownEvent; handleKeyboardDown(ke.key); break; } case "input.mouse.wheel": { MouseWheelEvent me = e as MouseWheelEvent; handleMouseWheel(me.delta); break; } case "input.mouse.button.up": { MouseButtonUpEvent me = e as MouseButtonUpEvent; handleMouseButtonUp(me.button); break; } case "input.mouse.button.down": { MouseButtonDownEvent me = e as MouseButtonDownEvent; handleMouseButtonDown(me.button); break; } case "input.mouse.move": { MouseMoveEvent me = e as MouseMoveEvent; handleMouseMove(me.xDelta, -me.yDelta); break; } } return(EventManager.EventResult.HANDLED); }
protected virtual void OnDragStartEvent() { MouseButtonDownEvent?.Invoke(); }
void HandleMouseButtonDown(MouseButtonDownEvent args) { Input input = GetSubsystem<Input>(); PhysicsWorld2D physicsWorld = scene.GetComponent<PhysicsWorld2D>(); RigidBody2D rigidBody = physicsWorld.GetRigidBody(input.MousePosition.X, input.MousePosition.Y, uint.MaxValue); // Raycast for RigidBody2Ds to pick if (rigidBody != null) { pickedNode = rigidBody.Node; //log.Info(pickedNode.name); StaticSprite2D staticSprite = pickedNode.GetComponent<StaticSprite2D>(); staticSprite.Color = (new Color(1.0f, 0.0f, 0.0f, 1.0f)); // Temporary modify color of the picked sprite // Create a ConstraintMouse2D - Temporary apply this constraint to the pickedNode to allow grasping and moving with the mouse ConstraintMouse2D constraintMouse = pickedNode.CreateComponent<ConstraintMouse2D>(); constraintMouse.Target = GetMousePositionXY(); constraintMouse.MaxForce = 1000 * rigidBody.Mass; constraintMouse.CollideConnected = true; constraintMouse.OtherBody = dummyBody; // Use dummy body instead of rigidBody. It's better to create a dummy body automatically in ConstraintMouse2D constraintMouse.DampingRatio = 0.0f; } SubscribeToEvent<MouseMoveEvent>(HandleMouseMove); SubscribeToEvent<MouseButtonUpEvent>(HandleMouseButtonUp); }