Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

Rotate groups of tokens?

July 30 (4 years ago)
CB
Pro

I can't rotate groups of tokens on the objects layer, for some reason.  I select them all, click and drag on the rotate icon, but it just gives me a ping.  Has this changed since the past?  How can I rotate groups of tokens now?

July 30 (4 years ago)
The Aaron
Roll20 Production Team
API Scripter

I'm seeing this same behavior.  You can still do it by holding 'E' on the keyboard and rolling your mouse wheel for 45º rotations (alt-'E' for 1º rotations).

July 30 (4 years ago)

Edited July 30 (4 years ago)
The Aaron
Roll20 Production Team
API Scripter

Are you using a mouse, or a trackpad?  Also, what OS and Browser?

July 30 (4 years ago)
Drespar
Roll20 Team

Hi CB,

Unfortunately, I have not been able to reproduce this issue on my end, so a few questions and steps for you:

1. Does this persist in a brand new game?

2. What is your browser/OS? Are you using a mouse or a track pad?

3. Does this seem to happen only on certain pages within a game? If so, what game and what page.

4. Could you grab a console log when you attempt to rotate the group. For more information on submitting a console log you can view our help center documents here:

Thanks!

July 30 (4 years ago)
The Aaron
Roll20 Production Team
API Scripter

I've tracked this down.  It only happens on pages with Updated Dynamic Lighting enabled.

July 30 (4 years ago)
CB
Pro

I am using chrome, desktop, wired mouse and keyboard, windows 10, updated dynamic lighting enabled.  The E+mouse wheel works, though!  This happens on all pages of my game that use UDL, and none that do not use UDL.

July 30 (4 years ago)

Edited July 30 (4 years ago)
CB
Pro

NOTE: This is the console log for everything since I started up the game (into the map with UDL).  The rotation error is at the bottom of this script starting with "334(index):417 Uncaught TypeError: ".  Tried to post a screenshot, but roll20 won't let me do that for some reason.


Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval' 'sha256-dm6tOb8rwEmENe5+ec26sQvlH6Xd1CBZ7IvtZ4kJ1og=' 'sha256-jlxVUPsj/qdPM120UwbjpC4Tw7dq+obb7SYUV+lSfrI=' 'nonce-XlJjz4QobJZB1AeJ' http://cdn.inspectlet.com https://*.googlesyndication.com https://*.doubleclick.net https://partner.googleadservices.com https://www.googletagservices.com https://ssl.google-analytics.com https://www.google-analytics.com https://ajax.googleapis.com http://ajax.googleapis.com https://d3clqjduf2gvxg.cloudfront.net https://cdn.firebase.com https://*.firebaseio.com https://*.tokbox.com https://*.opentok.com http://static.opentok.com http://www.google-analytics.com http://cdn.crowdin.com https://crowdin.com http://stun.l.google.com *.sentry-cdn.com". Either the 'unsafe-inline' keyword, a hash ('sha256-pTNkp50U6tVf8FuQzTMh762+Nza6SP/j648+XWvdL+s='), or a nonce ('nonce-...') is required to enable inline execution.


jquery.migrate.js:20 JQMIGRATE: Logging is active

?timestamp=1596145618&disablewebgl=false&forcelongpolling=false&offsite=false&fbdebug=false&forcetouch=false:15 CAMPAIGN ID: 4518289

(index):325 Logged in - checking Account GDPR status: true

app.js?1596127817:552 70

app.js?1596127817:553 Custom Sheet Translation

app.js?1596127817:558 TOUCH SUPPORTED: false

app.js?1596127817:558 USING WEBGL ACCELERATION...

app.js?1596127817:558 WEBGL STARTUP SUCCESS

app.js?1596127817:576 Loading Custom character sheet.

app.js?1596127817:576 Including compendium template css.

tutorial_tips.js:7 tuts loaded

(index):1 [DOM] Found 3 elements with non-unique id #0: (More info: https://goo.gl/9p2vKq) <input class=​"filter-search_filter-value filtername" data-filter-num=​"name" data-match-type=​"Any" id=​"0" name=​"Name" type=​"text" value>​ <input class=​"filter-search_filter-value filtername" data-filter-num=​"name" data-match-type=​"Any" id=​"0" name=​"Name" type=​"text" value>​ <select aria-selected=​"true" class=​"chosen filter-search_filter-value" data-filter-num=​"0" data-match-type=​"Any" id=​"0" multiple name=​"expansion">​…​</select>​

(index):1 [DOM] Found 3 elements with non-unique id #1: (More info: https://goo.gl/9p2vKq) <select name=​"Level[]​" id=​"1" class=​"chosen filter-search_filter-value multiselect" multiple=​"multiple" aria-selected=​"true" data-filter-num=​"1" data-match-type=​"Any" placeholder=​"Select Some Options">​…​</select>​ <select name=​"Alignment[]​" id=​"1" class=​"chosen filter-search_filter-value multiselect" multiple=​"multiple" aria-selected=​"true" data-filter-num=​"1" data-match-type=​"Any" placeholder=​"Select Some Options">​…​</select>​ <select name=​"Item Type[]​" id=​"1" class=​"chosen filter-search_filter-value multiselect" multiple=​"multiple" aria-selected=​"true" data-filter-num=​"1" data-match-type=​"Exact" placeholder=​"Select Some Options">​…​</select>​

(index):1 [DOM] Found 2 elements with non-unique id #2: (More info: https://goo.gl/9p2vKq) <select name=​"Classes[]​" id=​"2" class=​"chosen filter-search_filter-value multiselect" multiple=​"multiple" aria-selected=​"true" data-filter-num=​"2" data-match-type=​"Any" placeholder=​"Select Some Options">​…​</select>​ <input class=​"filter-search_filter-value" data-filter-num=​"2" data-match-type=​"Any" id=​"2" name=​"Speed" type=​"text" value>​

(index):1 [DOM] Found 2 elements with non-unique id #3: (More info: https://goo.gl/9p2vKq) <select name=​"School[]​" id=​"3" class=​"chosen filter-search_filter-value multiselect" multiple=​"multiple" aria-selected=​"true" data-filter-num=​"3" data-match-type=​"Any" placeholder=​"Select Some Options">​…​</select>​ <select name=​"Type[]​" id=​"3" class=​"chosen filter-search_filter-value multiselect" multiple=​"multiple" aria-selected=​"true" data-filter-num=​"3" data-match-type=​"Any" placeholder=​"Select Some Options">​…​</select>​

(index):1 [DOM] Found 2 elements with non-unique id #6: (More info: https://goo.gl/9p2vKq) <select name=​"Casting Time[]​" id=​"6" class=​"chosen filter-search_filter-value multiselect" multiple=​"multiple" aria-selected=​"true" data-filter-num=​"6" data-match-type=​"Any" placeholder=​"Select Some Options">​…​</select>​ <select name=​"Languages[]​" id=​"6" class=​"chosen filter-search_filter-value multiselect" multiple=​"multiple" aria-selected=​"true" data-filter-num=​"6" data-match-type=​"Any" placeholder=​"Select Some Options">​…​</select>​

(index):1 [DOM] Found 2 elements with non-unique id #7: (More info: https://goo.gl/9p2vKq) <select name=​"Range[]​" id=​"7" class=​"chosen filter-search_filter-value multiselect" multiple=​"multiple" aria-selected=​"true" data-filter-num=​"7" data-match-type=​"Any" placeholder=​"Select Some Options">​…​</select>​ <select aria-selected=​"true" class=​"chosen filter-search_filter-value" data-filter-num=​"7" data-match-type=​"Any" id=​"7" multiple name=​"expansion">​…​</select>​

sheetsandboxworker.js?1596145619981:682 Starting up WEB WORKER

roll20.js:2585 Beyond20: Roll20 module loaded.

(index):417 Refused to load the script 'https://js-agent.newrelic.com/nr-1167.min.js' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval' 'sha256-dm6tOb8rwEmENe5+ec26sQvlH6Xd1CBZ7IvtZ4kJ1og=' 'sha256-jlxVUPsj/qdPM120UwbjpC4Tw7dq+obb7SYUV+lSfrI=' 'nonce-XlJjz4QobJZB1AeJ' http://cdn.inspectlet.com https://*.googlesyndication.com https://*.doubleclick.net https://partner.googleadservices.com https://www.googletagservices.com https://ssl.google-analytics.com https://www.google-analytics.com https://ajax.googleapis.com http://ajax.googleapis.com https://d3clqjduf2gvxg.cloudfront.net https://cdn.firebase.com https://*.firebaseio.com https://*.tokbox.com https://*.opentok.com http://static.opentok.com http://www.google-analytics.com http://cdn.crowdin.com https://crowdin.com http://stun.l.google.com *.sentry-cdn.com". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.


r @ (index):417

load (async)

__nr_require.loader @ (index):417

r @ (index):417

__nr_require.1 @ (index):417

turnOnNewRelicBrowserPro @ (index):417

acceptCookies @ (index):378

checkAccountGdprCookieSettings @ (index):328

checkGdprStatus @ (index):316

(anonymous) @ (index):414

DevTools failed to load SourceMap: Could not load content for https://app.roll20.net/js/d20/underscore-min.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE

app.js?1596127817:566 Final page load.

app.js?1596127817:564 Auth'ed.

app.js?1596127817:564 Go post auth!

app.js?1596127817:564 initial setup

app.js?1596127817:565 joining game...

app.js?1596127817:563 Player -LcHvYUOKgVlTaZ_0-kH is offline...

app.js?1596127817:228 THREE.WebGLRenderer 69

app.js?1596127817:563 Player -LdpeyJywpXlg2qk3xFU is offline...

app.js?1596127817:563 Player -Le92ibum_sLUrF4PEE5 is offline...

app.js?1596127817:563 Player -LeMm1d5nm-hY5FZoXGQ is offline...

app.js?1596127817:563 Player -LeMvcw2R4MCSzHhXk4e is offline...

app.js?1596127817:563 Player -Lf301JS2Q5lTSxSjrRK is offline...

app.js?1596127817:563 Player -LjNAdKM21ZgXQhgqF9x is offline...

app.js?1596127817:563 Player -M6GJnWdaE7pdrzG7Gyb is offline...

app.js?1596127817:565 Deferred finish joining...

app.js?1596127817:552 Firebase Online

14app.js?1596127817:561 Full load page!

app.js?1596127817:564 We have 19 pages

mini.jpg:1 GET https://s3.amazonaws.com/files.d20.io/images/126954183/c3Z0BUxgI3WW4fP_zMFJDQ/mini.jpg?1587767216 403 (Forbidden)

Image (async)

(anonymous) @ jquery-1.9.1.js:6063

access @ jquery-1.9.1.js:852

html @ jquery-1.9.1.js:6038

d20.journal.refreshJournalList @ app.js?1596127817:576

(anonymous) @ app.js?1596127817:576

nrWrapper @ (index):417

setTimeout (async)

nrWrapper @ (index):417

i @ app.js?1596127817:576

d20.journal.refreshJournalList @ app.js?1596127817:576

(anonymous) @ app.js?1596127817:568

trigger @ base.js?1595950670:7

_onModelEvent @ base.js?1595950670:7

trigger @ base.js?1595950670:7

add @ base.js?1595950670:7

_add @ app.js?1596127817:81

child_added @ app.js?1596127817:81

(anonymous) @ firebase.2.4.0.js:203

gc @ firebase.2.4.0.js:52

cc @ firebase.2.4.0.js:30

dc @ firebase.2.4.0.js:29

h.Kb @ firebase.2.4.0.js:220

h.Ld @ firebase.2.4.0.js:188

Eh.Ld @ firebase.2.4.0.js:178

(anonymous) @ firebase.2.4.0.js:176

yh @ firebase.2.4.0.js:170

La.onmessage @ firebase.2.4.0.js:169

s3.amazonaws.com/files.d20.io/images/86700540/Puem4ksqIOuzF6dnT3_slA/thumb.jpeg?1563376064:1 GET https://s3.amazonaws.com/files.d20.io/images/86700540/Puem4ksqIOuzF6dnT3_slA/thumb.jpeg?1563376064 403 (Forbidden)

Image (async)

buildFragment @ jquery-1.9.1.js:6469

domManip @ jquery-1.9.1.js:6129

append @ jquery-1.9.1.js:5949

callback @ app.js?1596127817:586

a @ base.js?1595950670:20

fire @ jquery-1.9.1.js:1037

fireWith @ jquery-1.9.1.js:1148

done @ jquery-1.9.1.js:8074

callback @ jquery-1.9.1.js:8598

nrWrapper @ (index):417

XMLHttpRequest.send (async)

nrWrapper @ (index):417

send @ jquery-1.9.1.js:8526

ajax @ jquery-1.9.1.js:7978

jQuery.<computed> @ jquery-1.9.1.js:7614

s @ base.js?1595950670:20

(anonymous) @ base.js?1595950670:20

each @ jquery-1.9.1.js:648

each @ jquery-1.9.1.js:270

t.fn.infinitescroll @ base.js?1595950670:20

(anonymous) @ app.js?1596127817:586

fire @ jquery-1.9.1.js:1037

fireWith @ jquery-1.9.1.js:1148

done @ jquery-1.9.1.js:8074

callback @ jquery-1.9.1.js:8598

nrWrapper @ (index):417

XMLHttpRequest.send (async)

nrWrapper @ (index):417

send @ jquery-1.9.1.js:8526

ajax @ jquery-1.9.1.js:7978

jQuery.<computed> @ jquery-1.9.1.js:7614

d20.library.buildRecentUploads @ app.js?1596127817:586

(anonymous) @ app.js?1596127817:563

(anonymous) @ base.js?1595950670:6

nrWrapper @ (index):417

setTimeout (async)

nrWrapper @ (index):417

C.delay @ base.js?1595950670:6

C.defer @ base.js?1595950670:6

initialize @ app.js?1596127817:563

t.Model @ base.js?1595950670:7

T.i @ base.js?1595950670:8

_prepareModel @ base.js?1595950670:7

add @ base.js?1595950670:7

reset @ base.js?1595950670:7

(anonymous) @ app.js?1596127817:564

(anonymous) @ firebase.2.4.0.js:201

gc @ firebase.2.4.0.js:52

cc @ firebase.2.4.0.js:30

dc @ firebase.2.4.0.js:29

h.Kb @ firebase.2.4.0.js:220

h.Ld @ firebase.2.4.0.js:188

Eh.Ld @ firebase.2.4.0.js:178

(anonymous) @ firebase.2.4.0.js:176

yh @ firebase.2.4.0.js:170

La.onmessage @ firebase.2.4.0.js:169

s3.amazonaws.com/files.d20.io/images/85976957/leC0JCISuXMuMSbQLur8fQ/thumb.jpeg?1562631629:1 GET https://s3.amazonaws.com/files.d20.io/images/85976957/leC0JCISuXMuMSbQLur8fQ/thumb.jpeg?1562631629 403 (Forbidden)

Image (async)

buildFragment @ jquery-1.9.1.js:6469

domManip @ jquery-1.9.1.js:6129

append @ jquery-1.9.1.js:5949

callback @ app.js?1596127817:586

a @ base.js?1595950670:20

fire @ jquery-1.9.1.js:1037

fireWith @ jquery-1.9.1.js:1148

done @ jquery-1.9.1.js:8074

callback @ jquery-1.9.1.js:8598

nrWrapper @ (index):417

XMLHttpRequest.send (async)

nrWrapper @ (index):417

send @ jquery-1.9.1.js:8526

ajax @ jquery-1.9.1.js:7978

jQuery.<computed> @ jquery-1.9.1.js:7614

s @ base.js?1595950670:20

(anonymous) @ base.js?1595950670:20

each @ jquery-1.9.1.js:648

each @ jquery-1.9.1.js:270

t.fn.infinitescroll @ base.js?1595950670:20

(anonymous) @ app.js?1596127817:586

fire @ jquery-1.9.1.js:1037

fireWith @ jquery-1.9.1.js:1148

done @ jquery-1.9.1.js:8074

callback @ jquery-1.9.1.js:8598

nrWrapper @ (index):417

XMLHttpRequest.send (async)

nrWrapper @ (index):417

send @ jquery-1.9.1.js:8526

ajax @ jquery-1.9.1.js:7978

jQuery.<computed> @ jquery-1.9.1.js:7614

d20.library.buildRecentUploads @ app.js?1596127817:586

(anonymous) @ app.js?1596127817:563

(anonymous) @ base.js?1595950670:6

nrWrapper @ (index):417

setTimeout (async)

nrWrapper @ (index):417

C.delay @ base.js?1595950670:6

C.defer @ base.js?1595950670:6

initialize @ app.js?1596127817:563

t.Model @ base.js?1595950670:7

T.i @ base.js?1595950670:8

_prepareModel @ base.js?1595950670:7

add @ base.js?1595950670:7

reset @ base.js?1595950670:7

(anonymous) @ app.js?1596127817:564

(anonymous) @ firebase.2.4.0.js:201

gc @ firebase.2.4.0.js:52

cc @ firebase.2.4.0.js:30

dc @ firebase.2.4.0.js:29

h.Kb @ firebase.2.4.0.js:220

h.Ld @ firebase.2.4.0.js:188

Eh.Ld @ firebase.2.4.0.js:178

(anonymous) @ firebase.2.4.0.js:176

yh @ firebase.2.4.0.js:170

La.onmessage @ firebase.2.4.0.js:169

334(index):417 Uncaught TypeError: Cannot read property 'id' of undefined

    at e.init (app.js?1596127817:554)

    at new e (app.js?1596127817:554)

    at app.js?1596127817:555

    at base.js?1595950670:6

    at Array.forEach (<anonymous>)

    at C.each.C.forEach (base.js?1595950670:6)

    at Function.C.map.C.collect (base.js?1595950670:6)

    at e.updateFromGraphics (app.js?1596127817:555)

    at i._rotateObject (app.js?1596127817:549)

    at i.__onMouseMove (app.js?1596127817:550)

July 31 (4 years ago)
Drespar
Roll20 Team

Thank you all!

A Ticket has been submitted to the dev team to make sure this gets addressed as soon as we can!

August 18 (4 years ago)
Baka
Pro

Just noticed this in my own pages that I recently updated to UDL. So glad to find this thread!

Can confirm that I have this same bug today. But, I didn't actually know about holding 'E' and using the mouse wheel to rotate. That DOES work, even though click-dragging the lollipop handle does not.  I can also confirm that using Alt-E-mousehwheel provides fine-grained rotation.

That at least unblocks me to keep using the pages rather than rolling back to the old lighting. Thanks again!