Wicklets / wick-editor-2018

Archived - New repo is now at github.com/wicklets/wick-editor
GNU General Public License v3.0
515 stars 57 forks source link

Setting rotation less than 0 or greater than 360 degrees in inspector is buggy #649

Open rogerrey opened 7 years ago

rogerrey commented 7 years ago

Rotation of objects in the timeline only works from 0 to 180 degrees. From 180 degrees are negative -179, -178 ...

zachrispoli commented 7 years ago

Hmm, not able to reproduce this o_O - where exactly does this happen?

rogerrey commented 7 years ago

When you create a spin interpolation animation you can not set a rotation more than 180 degrees. For example to create the spin of a wheel. From 180 degrees these become negative. https://docs.google.com/presentation/d/10WppnpJvsFDLI6ABQNTT4vi89LK5-6Wh5AoGXIdolRQ/edit?usp=sharing

In previous versions if that could be done.

kryptot7 commented 6 years ago

This bug still happens. I have a tweened group that rotates between tween keyframes, and whenever I set a rotation greater than 180, it snaps to -180 + (whatever angle it is - 180). Going negative messes up the slider's functionality since it has an out-of-range value, and it means that you can't have an object rotate from zero degrees to, say, 270.

AnthonyTonev commented 6 years ago

Saw that issue yesterday - impossible to make a full rotation or one that passes 180/-180 degrees. So I've figured out a workaround that does the job for me. Hope it helps someone else to make rotations until this gets fixed. Here is the result I managed to get:

wickarround

Works only for the slider (rotating with the mouse still can't pass 180). Here is what I've changed (just increased the angle of rotation with the slider from -360 to 360):

in WickTween.js line 92 if(name === 'rotation') { while(valA < -360) valA += 360; while(valB < -360) valB += 360; while(valA > 360) valA -= 360; while(valB > 360) valB -= 360; valB += tweenA.rotations * 360; }

in Interfaces.Inspector.Properties.js line 100 properties.push(new InspectorInterface.SliderInput({ title: '<img src="resources/inspector-icons/rotation.svg" class="inspector-icon"/>', tooltip: 'Rotation', className: 'inspector-input-string-small', max: 360, min: -360,

Have both negative and positive angle values in order to start rotating in any direction. In the gif I put copies of the same keyframes at the end in order to have some sort of hold before rotating again. Some apps have +1 counter on each oscillation which is a good way to make multiple rotations in the same direction but this could be avoided if the animator is just making an extra keyframe that starts the angle at 0 right after each rotation.