// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus).
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)
using UnityEngine ;
using UnityEngine.Serialization ;
using System.Collections ;
namespace Fungus
{
/// <summary>
/// Moves a game object from a specified position back to its starting position over time. The position can be defined by a transform in another object (using To Transform) or by setting an absolute position (using To Position, if To Transform is set to None).
/// </summary>
[ CommandInfo ( "iTween" ,
"Move From" ,
"Moves a game object from a specified position back to its starting position over time. The position can be defined by a transform in another object (using To Transform) or by setting an absolute position (using To Position, if To Transform is set to None)." ) ]
[AddComponentMenu("")]
[ExecuteInEditMode]
public class MoveFrom : iTweenCommand
{
[Tooltip("Target transform that the GameObject will move from")]
[SerializeField] protected TransformData _f romTransform ;
[Tooltip("Target world position that the GameObject will move from, if no From Transform is set")]
[SerializeField] protected Vector3Data _f romPosition ;
[Tooltip("Whether to animate in world space or relative to the parent. False by default.")]
[SerializeField] protected bool isLocal ;
#region Public members
public override void DoTween ( )
{
Hashtable tweenParams = new Hashtable ( ) ;
tweenParams . Add ( "name" , _ tweenName . Value ) ;
if ( _f romTransform . Value = = null )
{
tweenParams . Add ( "position" , _f romPosition . Value ) ;
}
else
{
tweenParams . Add ( "position" , _f romTransform . Value ) ;
}
tweenParams . Add ( "time" , _d uration . Value ) ;
tweenParams . Add ( "easetype" , easeType ) ;
tweenParams . Add ( "looptype" , loopType ) ;
tweenParams . Add ( "isLocal" , isLocal ) ;
tweenParams . Add ( "oncomplete" , "OniTweenComplete" ) ;
tweenParams . Add ( "oncompletetarget" , gameObject ) ;
tweenParams . Add ( "oncompleteparams" , this ) ;
iTween . MoveFrom ( _ targetObject . Value , tweenParams ) ;
}
public override bool HasReference ( Variable variable )
{
return _f romTransform . transformRef = = variable | | _f romPosition . vector3Ref = = variable | |
base . HasReference ( variable ) ;
}
# endregion
#region Backwards compatibility
[HideInInspector] [ FormerlySerializedAs ( "fromTransform" ) ] public Transform fromTransformOLD ;
[HideInInspector] [ FormerlySerializedAs ( "fromPosition" ) ] public Vector3 fromPositionOLD ;
protected override void OnEnable ( )
{
base . OnEnable ( ) ;
if ( fromTransformOLD ! = null )
{
_f romTransform . Value = fromTransformOLD ;
fromTransformOLD = null ;
}
if ( fromPositionOLD ! = default ( Vector3 ) )
{
_f romPosition . Value = fromPositionOLD ;
fromPositionOLD = default ( Vector3 ) ;
}
}
# endregion
}
}