DragDetectors [Beta]

Good news!
We’ve done all the testing on the next scheduled release, and when it comes out (planned for later this week), we’ll be able to turn on DragDetectors in all published games.

I’ll post a longer announcement later this week after we’ve set it all in motion.

11 Likes

Is it possible for there be methods added post launch for forcing a player to start/stop dragging a part?
As that would allow for drag detectors to be able to be triggered with ui for build modes, or inventorys for dragging an object out from the ui and into the world. With the start method making the object go to the cursor when forced.

2 Likes

How can I use a dragdettector by a hinge so you can rotate a part by dragging

1 Like

The documentation still shows DragDetectors as a beta feature.

2 Likes

Wait 2 days there come a bigger announcements later this week

2 Likes

It’s already out, please get off the dev forum if you’re under 13.

1 Like

im pretty sure english isn’t their first language, and they are based in the netherlands.

5 Likes

I saw that after I replied, I was assuming based off of other factors as well.

4 Likes

I’m not underr 13 I’m coming from 2005

She says it coming out later this week and she said they give a bigger announcement if it is set in motion

So wait 1 day then it sall be changed

5 Likes

I’m having issues where DragStart will fire when DragDetector.Enabled == false (server side). This will happen when Enabled gets set to false and a players “start drag” message arrives to the server late. The DragEnd event will also not fire until DragDetector.Enabled is toggled on and then off again while in this state.

This will also cause whatever is being dragged to float until DragEnd fires. But the player will not be able to actually control the movement of the object.


When the pallet is wrapped up, the dragger is enabled. When it has no wrap, the dragger is disabled.

-- Console output in above video. 
DragDetector.DragStart:Connect(function()
	print("Start", DragDetector.Enabled)
end)
DragDetector.DragEnd:Connect(function()
	print("End", DragDetector.Enabled)
end)

I think it’s important that DragDetector.Enabled can never be false when DragStart fires.

5 Likes

cant you just put a check for dragdetector.enabled? if it gets fixed, its ok. it could be used for clickdetector substitutes, so probably a bug-turned-feature? lol

4 Likes

Doing something like this sometimes cancels the drag and exits the bugged state but not always.

DragDetector.DragStart:Connect(function()
	if DragDetector.Enabled == false then
		DragDetector.Enabled = true
		DragDetector.Enabled = false
	end
end)

Same goes for this.

DragDetector.DragStart:Connect(function()
	if DragDetector.Enabled == false then
		DragDetector:RestartDrag()
	end
end)
5 Likes

hello @kalrnlo there are two ways you could stop a player from dragging a part after they’v begun.
One is to set ‘enabled’ false via script (but if you are not runnning locally the script should be a server script). If you do this while dragging, the drag will be ended automatically even if the user still has the mouse down.

The second is to add a constraint function that just returns the input change in the case where the user is allowed to drag, but return identity matrix if they are not allowed to drag.

The third is API we hope to add after release: the ability to register a method something like canDrag(player, part) and you can will be able to make whatever checks you wan.t

3 Likes

if you set up the hinge, you can then add dragDetectors to the two parts that contain the attachments. If you set the DragStyle to dragPlane, you’ll be able to drag the parts in the plane and the hinge will work.

If you want the dragdetector to only rotate around the hinge, then set the referenceInstance to be the attachment, the DragStyle to be RotateAxis, and the Axis to match the X-axis of your attachment. That should work

3 Likes

quick question when will the release come

2 Likes

Thanks @Razorter.
Looking at the code, your behavior makes sense.
We check ‘enabled’ before SENDING the event, but the dragDetector PERFORMING the drag does not check ‘enabled’ and you are right, it should.

I’ll file a bug, this should be easy to fix.

3 Likes

Update: There was an issue with last week’s release on certain platforms (not dragDetectors, something else) so I couldn’t enable DragDetectors in all games.

Look for another post from me this afternoon.

1 Like

Man i wish drag detectors were real

5 Likes

DragDetectors are now live in all games!
You no longer need to request for us to enable it for you.
Please post here if you have any issues!

So, while DragDetectors are still technically in beta, you can consider them a full feature when used in games. We are going to watch for new bugs and if all goes well, we will come out of beta in a couple of weeks and DragDetectors will be part of studio for all.

I also want to give you all a summary of [a] what we’ve fixed and [b] some features we hope to add in the coming months (no guarantees here, but we want to be open with you).

You will notice that many of these bugs and plans are things that YOU reported and requested from us. YOU all have been absolutely amazing through this beta period. DragDetectors are way better because of you, and all the people who use them in the future will have you to thank for finding problems early.

Here are some key bugs you reported that we’ve fixed during beta:

  • correct behavior to cancel a drag on respawn, disable, destroy leaveGame, show menu, pick up tool)
  • axis/orientation now replicating and saving correctly
  • scriptable dragStyle called on dragStart as well as dragContinue
  • dragDetector no longer registers extra touch events on tap
  • camera scroll wheel now works even when dragging
  • in geometric mode, we anchor all parts when moving, not just the clicked one
  • scriptable and 6DOF dragStyles now properly handle rotation for non-anchored objects
  • several issues in Team Create and with undo/redo
  • plus a bunch of things behind the scenes that your comments and test cases influenced us to do.

And here are some features we’d like to add (no promises!) based on your feedback:

  • Security Control: a property named PermissionPolicy with 3 values: Nobody, Everybody, or Scripted. If scripted, you may register a method dragDetector:SetScriptedPermissionCheck(function(player, part) that returns true if the player may drag the part, false otherwise.
  • Better Physics Integration:
    *. runLocally should automatically get network ownership for non-anchored objects they drag
    *. add new Collision response style. This will collide anchored objects and allow a way to move non-anchored objects geometrically, but with collisions
    *. throw non-anchored objects on release even in geometric mode
  • Screen Gui & Viewport Frame
    *. ScreenGui/SurfaceGUI: we know you miss ‘draggable’ on 2DUI elements. We want to make it so that if you put a DragDetector below ScreenGui object like a button or text label, then you can drag it, complete with all the callbacks and API; you just won’t be able to bring it out of the plane.
    *. ViewportFrame/WorldModels - we hope to make it so that DragDetectors work in this context just like they do in the main view.
9 Likes

Wish granted!

… unless you mean in real life. Unfortunately, we don’t know how to wield the force :sob:

6 Likes