Add tween actions for camera zoom and camera rotation (#4174)

This commit is contained in:
Arthur Pacaud
2022-08-03 22:21:45 +02:00
committed by GitHub
parent 6ae1b62df7
commit c86388018c
2 changed files with 107 additions and 15 deletions

View File

@@ -109,12 +109,12 @@ module.exports = {
'JsPlatform/Extensions/tween_behavior32.png'
)
.addCodeOnlyParameter('currentScene', '')
.addParameter('string', 'Tween identifier', '', false)
.addParameter('scenevar', 'The variable to tween', '', false)
.addParameter('expression', 'Initial value', '', false)
.addParameter('expression', 'Final value', '', false)
.addParameter('expression', 'Duration', '', false)
.addParameter('stringWithSelector', 'Easing', easingChoices, false)
.addParameter('string', _('Tween Identifier'), '', false)
.addParameter('scenevar', _('The variable to tween'), '', false)
.addParameter('expression', _('Initial value'), '', false)
.addParameter('expression', _('Final value'), '', false)
.addParameter('expression', _('Duration'), '', false)
.addParameter('stringWithSelector', _('Easing'), easingChoices, false)
.getCodeExtraInformation()
.setIncludeFile('Extensions/TweenBehavior/shifty.js')
.addIncludeFile('Extensions/TweenBehavior/shifty_setup.js')
@@ -125,9 +125,7 @@ module.exports = {
.addAction(
'TweenCameraPosition',
_('Tween the camera position'),
_(
'Tweens tweens the camera position from the current one to a new one.'
),
_('Tweens the camera position from the current one to a new one.'),
_(
'Tween camera on layer _PARAM4_ to _PARAM2_;_PARAM3_ for _PARAM5_ms with easing _PARAM6_ as _PARAM1_'
),
@@ -136,18 +134,66 @@ module.exports = {
'JsPlatform/Extensions/tween_behavior32.png'
)
.addCodeOnlyParameter('currentScene', '')
.addParameter('string', 'Tween identifier', '', false)
.addParameter('expression', 'Target X position', '', false)
.addParameter('expression', 'Target Y position', '', false)
.addParameter('layer', 'Layer', '', true)
.addParameter('expression', 'Duration', '', false)
.addParameter('stringWithSelector', 'Easing', easingChoices, false)
.addParameter('string', _('Tween Identifier'), '', false)
.addParameter('expression', _('Target X position'), '', false)
.addParameter('expression', _('Target Y position'), '', false)
.addParameter('layer', _('Layer'), '', true)
.addParameter('expression', _('Duration'), '', false)
.addParameter('stringWithSelector', _('Easing'), easingChoices, false)
.getCodeExtraInformation()
.setIncludeFile('Extensions/TweenBehavior/shifty.js')
.addIncludeFile('Extensions/TweenBehavior/shifty_setup.js')
.addIncludeFile('Extensions/TweenBehavior/tweentools.js')
.setFunctionName('gdjs.evtTools.tween.tweenCamera');
extension
.addAction(
'TweenCameraZoom',
_('Tween the camera zoom'),
_('Tweens the camera zoom from the current zoom factor to a new one.'),
_(
'Tween the zoom of camera on layer _PARAM3_ to _PARAM2_ for _PARAM4_ms with easing _PARAM5_ as _PARAM1_'
),
_('Scene Tweens'),
'JsPlatform/Extensions/tween_behavior24.png',
'JsPlatform/Extensions/tween_behavior32.png'
)
.addCodeOnlyParameter('currentScene', '')
.addParameter('string', _('Tween Identifier'), '', false)
.addParameter('expression', _('Target zoom'), '', false)
.addParameter('layer', _('Layer'), '', true)
.addParameter('expression', _('Duration'), '', false)
.addParameter('stringWithSelector', _('Easing'), easingChoices, false)
.getCodeExtraInformation()
.setIncludeFile('Extensions/TweenBehavior/shifty.js')
.addIncludeFile('Extensions/TweenBehavior/shifty_setup.js')
.addIncludeFile('Extensions/TweenBehavior/tweentools.js')
.setFunctionName('gdjs.evtTools.tween.tweenCameraZoom');
extension
.addAction(
'TweenCameraRotation',
_('Tween the camera rotation'),
_('Tweens the camera rotation from the current angle to a new one.'),
_(
'Tween the rotation of camera on layer _PARAM3_ to _PARAM2_ for _PARAM4_ms with easing _PARAM5_ as _PARAM1_'
),
_('Scene Tweens'),
'JsPlatform/Extensions/tween_behavior24.png',
'JsPlatform/Extensions/tween_behavior32.png'
)
.addCodeOnlyParameter('currentScene', '')
.addParameter('string', _('Tween Identifier'), '', false)
.addParameter('expression', _('Target rotation'), '', false)
.addParameter('layer', _('Layer'), '', true)
.addParameter('expression', _('Duration'), '', false)
.addParameter('stringWithSelector', _('Easing'), easingChoices, false)
.getCodeExtraInformation()
.setIncludeFile('Extensions/TweenBehavior/shifty.js')
.addIncludeFile('Extensions/TweenBehavior/shifty_setup.js')
.addIncludeFile('Extensions/TweenBehavior/tweentools.js')
.setFunctionName('gdjs.evtTools.tween.tweenCameraRotation');
extension
.addCondition(
'SceneTweenExists',

View File

@@ -182,6 +182,52 @@ namespace gdjs {
getTweensMap(runtimeScene).set(identifier, tween);
getShiftyScene(runtimeScene).add(tween);
};
export const tweenCameraZoom = (
runtimeScene: RuntimeScene,
identifier: string,
toZoom: number,
layerName: string,
duration: number,
easing: shifty.easingFunction
) => {
const layer = runtimeScene.getLayer(layerName);
const tween = shifty.tween({
from: { zoom: layer.getCameraZoom() },
to: { zoom: toZoom },
easing,
duration,
render: ({ zoom }) => {
layer.setCameraZoom(zoom);
},
});
getTweensMap(runtimeScene).set(identifier, tween);
getShiftyScene(runtimeScene).add(tween);
};
export const tweenCameraRotation = (
runtimeScene: RuntimeScene,
identifier: string,
toRotation: number,
layerName: string,
duration: number,
easing: shifty.easingFunction
) => {
const layer = runtimeScene.getLayer(layerName);
const tween = shifty.tween({
from: { rotation: layer.getCameraRotation() },
to: { rotation: toRotation },
easing,
duration,
render: ({ rotation }) => {
layer.setCameraRotation(rotation);
},
});
getTweensMap(runtimeScene).set(identifier, tween);
getShiftyScene(runtimeScene).add(tween);
};
}
}
}