Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 protected virtual void OnDragStartEvent()
 {
     MouseButtonDownEvent?.Invoke();
 }
Пример #4
0
        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);
        }