Version 0.8.5b: Mediafire
If you’d like to be notified via private message on these forums when new versions are released, please send me a private message. Thanks!
Changelog:
~New Features
-Consolidated OnTweenDataTick into OnTweenUpdate (name change) by putting “Current” values into a struct called “Data Type Values.” Now you can split or break the struct to access Data Tween values through OnTweenUpdate. OnTweenTick and OnTweenDataTick are now deprecated, so be sure to update your projects.
-Added new property “Tie to Object Validity.” Available in Full Events and through the parser (key is “tietoobjectvalidity” or “tov”, value is true or false). If enabled, the tween will destroy itself when the object it acts upon is destroyed. True by default. Thanks to user gpvd for bringing this to our attention.
-Added new property “Enforce Value To” that determines whether the tween will “snap” to the “to” value at the end of the tween. This is how it had always been done, and now it’s an option. True by default. Available in Full Events and through the parser (key is “enforcevalueto” or “evt”, value is true or false). This is useful to turn off when using a custom easetype curve that ends with a value that is not your valueto. For example, your easetype curve starts at 0, goes to 1, then back to 0. With enforceValueTo set to true, your tween will snap to 1 at the end. With it set to false, it will not snap at the end.
-All Events are now properly sorted based on the type of object they tween and how they tween it. Ex: Actor Move From/To is now under “iTween|Events|Actor Tweens|Actor Move”
-Added a new property “Maximum Loop Sections” that determines how many times a tween may pass a loop section before destroying itself. 0 is infinite. Negative values get converted to positive values. 0 by default. Available in Full Events or through the parser (key is “maximumloopsections”, “maxloops”, or “mls”, value is any integer). Thanks gpvd for this suggestion!
-There are now utilities to get Event Operators in the scene by index, Tween Name, Object name, and Object reference. The return value of these utilities is the same as the return value from iTween Event calls. This is useful if you want to get or set a property/call a function on an iTweenEvent but didn’t save the event to a variable. It should be noted that all but GetEventByIndex will return an array (TArray<AiTweenEvent*>) of event operators.
-There now exists the groundwork for Slate-specific tweens! This is all thanks to . As of right now this is an unsupported feature, but consider it adopted - it will be fleshed out and worked on and supported just like every other aspect of iTween in the coming months, but for now is “experimental”
~Bugfixes
-Fixed an issue that caused random crashes/breakpoints when calling Stop/Pause/Resume Tweening events on occasion.
-Fixed an unrelated issue with crashing the editor when stopping tweens if there existed multiple tweens with the same search criteria, i.e. same tween name, same object reference, etc. Thanks SwiftIllusion for bringing to light this crash!
-Fixed issue with iOS compiler not compiling when using Ease In Elastic or Ease Out Elastic EaseTypes.
-Had to break functionality for the Ease In and Out Elastic EaseType for the sake of the iOS compiler. If you are developing on iOS, it’s best to avoid this EaseType for now. If you are not developing for iOS and would like to utilize this EaseType, you can enable its original functionality by uncommenting its equation in the source code for iTween and recompiling. It is found in iTweenEvent.cpp at lines 2419-2420. If you leave the source as-is, the tween will react erratically and not as expected when using this particular EaseType. Thanks for bringing to light these two iOS issues!
-Log cleanup: a handful of overlooked IsValidLowLevel() have been converted to regular C++ pointer checks so logs will no longer be flooded with “NULL object” warning messages. Thanks again to for this bug report!
~Non-implementation info updates
-To answer SwiftIllusion’s question about values zeroing out when taking them directly from an Event Operator after the Event Operator has been destroyed: This is a characteristic of the Unreal Engine - when you get a float from a class (ints too) they will be zero (null) if the instance of this class is destroyed. If you get this information using Tick, which lives outside the bounds of an Event Operator’s life, you should use the IsValid macro node to be sure the object exists first before taking information from it. This will ensure that you don’t get zeros before or after the Event Operator is in the scene! As any C++ teacher will tell you, always check your pointers, or object references. This holds true for Blueprints. It’s always good practice to make sure your object exists before trying to get information from it!
-To answer Rastar’s (old, sorry!) question about Landscape Splines and tweening using them: This unfortunately is not possible until Landscape properties are exposed to blueprints. It’s definitely on our todo list because cars following streets is fertile ground for iTween, but it’s not possible for the time being.