[Open Beta] Procedural On-the-Fly Animation in UE4: iTween!

I’m on a really slow and restricted internet connection and downloaded UE 4.10 to start playing around in. I wish to use this plugin but as it says on the front page, it’s tops made for 4.8. Are there any posibilities to compile this for 4.10? There might be bugs, I know, but maybe (and hopefully) there won’t be any and I won’t need to redownload the whole UE4 again.
Thanks!

Is there support for UE4 4.10 planned or in the works?

4.10 support on the way?

Sorry everyone, I haven’t been getting notifications for this thread. Had I not seen it bumped on the front page, I wouldn’t have seen any of it!

Hi guys, can you expand on this issue? “Stop” force destroys the actor that causes the tween to happen, so this crash depends on from where you’re calling “Stop.” Can you post your blueprints? It’d really help me pinpoint the issue!

Yes! I will be making some more tutorials in the future in my downtime. I know I keep saying that and no new tutorials have materialized, but time is a factor :stuck_out_tongue:

Can you give me an example of your use case and what you want to do? I want to be sure I answer your question when I record the tute.

Yes, I’m working on an update for 4.10.1 today. It’s done, just testing things now and it’ll be up this evening :slight_smile:

we go:

Changelog: 4.10 support.

Thank you for your patience, everyone :slight_smile:

Thanks a lot for the 4.10 support…

Unfortunately I wasn’t able to install it on osx as I get “Plugin “iTween” failed to load…” when loading into the editor after copying the iTween folder. Not sure if I’m doing something wrong…

thanks a lot

David

Hey ,

nice work on that script! two things though:
first one is likely a bug. when setting it to ping pong, orient to path and disable switch path orientation direction (!) the mesh is following the mesh as it should but it’s rotating into the wrong direction!

second one is more of a feature request (as i couldn’t figure out a good way to do this based on the most recent version). What i’d like to do is move multiple train carts along a spline so they should all be accelerating together while keeping the same distance. any clue if this can currently be done? otherwise i’d love to see this implemented.

best,
h

Hey again everyone, sorry for the latency. I was failed again by the thread subscription notifications. I had no idea there were posts :confused:

Even more unfortunately, I don’t know what the issue could be. You can try this new build I’m about to post but i can’t guarantee it’ll work. I don’t mean to treat Mac users as second-class citizens, I just don’t have a Mac myself so I can’t test all the contingencies. Just make sure that you delete the iTween folder from your plugins as a whole then copy in the new one.

Have you used iTween in the past? Is this your first time adding it to your project?

Failing all else, you can try manually adding the source to your project and rebuilding it with xcode. Be sure to include your project header into each source file, add “[PROJECTNAME]_API” to each class declaration in the headers, and add “Slate”, “SlateCore”, and “UMG” to your PrivateDependencyModuleNames in your build file.

Thanks a_prototype, that is a known bug where orientation is backward. It’s on the roadmap to fix, along with that feature request you made (spline offsets), I just haven’t had the time to really dive back into the plugin, just doing recompiles for new engine versions and critical bugfixes for now.

For right now, you can do all that stuff by using the OnTweenUpdate interface event. OnTweenUpdate is called after all other tweening operations, so you can add transformations in this event and you shouldn’t have any issues.

-Implement iTInterface in a blueprint.
-When you call iTween, make sure you give your tween a unique name and set the blueprint that implements the interface as the “OnTweenUpdateTarget.”
-Go to that target blueprint and add an event called “OnTweenUpdate.”
-From , drag out of the tween name input and do a switch on name. Set one of the outputs to be your tween’s name. This is why I encourage unique names so that whatever you call only reacts to that specific tween.
-Now you can apply extra transformations. In the case of incorrect orientation, you can get the actor’s rotation and invert it then set the rotation to be the inverted one you just calculated. In the case of the trains, you can run 3 tweens all off of one spline then OnTweenUpdate you can set its position to be its current position + the transform direction’d additional position.

's a hotfix (v0.8.6d) for people who are having issues packaging: Mega

This fixes an oversight in the build file that included the “EditorStyle” module. Because this module is editor-only, shipping builds would fail. This version removes the reference to that module from the build file and patches the installer so that it does not include that module when installing by C++. It also adds a reminder message when adding as a C++ plugin that you must generate VS files again and recompile for it to work. This reminder will only show once unless you want it to show every time. It is compiled for 4.10.

If you are a blueprint-only iTween user, all you have to do is uninstall the previous version and install the new one, either with the installer or by manually deleting the iTween plugin folder and copying over the new one.

If you’re a C++ user, you don’t need to do copy over the source files as they have not changed. Simply open your project’s Build.cs file and remove “EditorStyle” from your PrivateDependencyModuleNames. The installer will not remove this reference automatically if you click “Uninstall” so you must be sure to take care of this manually. Projects that you add iTween to from this version on will not add “EditorStyle” to the build file.

Happy packaging!

Build Error (Mobile)

Hey .

I installed your plugin on Windows, UE 4.10.4, blueprint-only, and try to launch my mobile project on an Android tablet. is the error I get:


LogPlayLevel: UnrealBuildTool: Performing full C++ include scan (no include cache file)
LogPlayLevel: UnrealBuildTool: NDK version: 19, GccVersion: 4.8
LogPlayLevel: UnrealBuildTool: Compiling Native code with NDK API 'android-19'
LogPlayLevel: UnrealBuildTool: Performing 12 actions (3 in parallel)
LogPlayLevel: UnrealBuildTool: [1/12] clang++.exe iTweenPCH.h [armv7-es2]
LogPlayLevel: UnrealBuildTool: [2/12] clang++.exe UELinkerFixupsName.h [armv7-es2]
LogPlayLevel: UnrealBuildTool: [3/12] clang++.exe UELinkerFixups.cpp [armv7-es2]
LogPlayLevel: UnrealBuildTool: [4/12] clang++.exe iTAux.cpp [armv7-es2]
LogPlayLevel: UnrealBuildTool: [5/12] clang++.exe iTInterface.cpp [armv7-es2]
LogPlayLevel: UnrealBuildTool: [6/12] clang++.exe iTSpline.cpp [armv7-es2]
LogPlayLevel: UnrealBuildTool: [7/12] clang++.exe iTween.cpp [armv7-es2]
LogPlayLevel: UnrealBuildTool: [8/12] clang++.exe iTweenEvent.cpp [armv7-es2]
LogPlayLevel: UnrealBuildTool: [9/12] clang++.exe iTweenModule.cpp [armv7-es2]
LogPlayLevel: UnrealBuildTool: [10/12] clang++.exe iTween.generated.cpp [armv7-es2]
LogPlayLevel: UnrealBuildTool: [11/12] arm-linux-androideabi-ar.exe UE4-iTween-armv7-es2.a
LogPlayLevel: UnrealBuildTool: [12/12] clang++.exe BoardGame-armv7-es2.so
LogPlayLevel: UnrealBuildTool: E:/PROJEKTE/UNREAL ENGINE/BoardGame/Plugins/iTween/Binaries/Android/UE4-iTween-armv7-es2.a(iTInterface.cpp-armv7-es2.o):E:/PROJEKTE/UNREAL ENGINE/BoardGame/Plugins/iTween/Source/iTween/Private/iTInterface.cpp:vtable for STweenableWidget: error: undefined reference to 'STweenableWidget::OnTweenUpdate(AiTweenEvent*, AActor*, USceneComponent*, UWidget*, FName, FDataTypeValues, float)'
LogPlayLevel: UnrealBuildTool: clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
LogPlayLevel: UnrealBuildTool: -------- End Detailed Actions Stats -----------------------------------------------------------
LogPlayLevel: UnrealBuildTool: ERROR: UBT ERROR: Failed to produce item: E:\PROJEKTE\UNREAL ENGINE\BoardGame\Binaries\Android\BoardGame-armv7-es2.so
LogPlayLevel: UnrealBuildTool: Total build time: 159,02 seconds
LogPlayLevel: CommandUtils.Run: Run: Took 159,0886326s to run UnrealBuildTool.exe, ExitCode=5
LogPlayLevel: BuildCommand.Execute: ERROR: BUILD FAILED
LogPlayLevel: Program.Main: ERROR: AutomationTool terminated with exception:
LogPlayLevel: Program.Main: ERROR: Exception in AutomationUtils.Automation: Command failed (Result:5): F:\Epic Games\4.10\Engine\Binaries\DotNET\UnrealBuildTool.exe BoardGame Android Development  "E:\PROJEKTE\UNREAL ENGINE\BoardGame\BoardGame.uproject"  -remoteini="E:\PROJEKTE\UNREAL ENGINE\BoardGame" -noxge -rocket -NoHotReloadFromIDE -ignorejunk. See logfile for details: 'UnrealBuildTool-2016.03.28-02.21.29.txt'
LogPlayLevel: Stacktrace:    bei AutomationTool.CommandUtils.RunAndLog(String App, String CommandLine, String Logfile, Int32 MaxSuccessCode, String Input, ERunOptions Options, Dictionary`2 EnvVars)
LogPlayLevel:    bei AutomationTool.CommandUtils.RunUBT(CommandEnvironment Env, String UBTExecutable, String CommandLine, String LogName, Dictionary`2 EnvVars)
LogPlayLevel:    bei AutomationTool.UE4Build.BuildWithUBT(String ProjectName, String TargetName, UnrealTargetPlatform TargetPlatform, String Config, String UprojectPath, Boolean ForceMonolithic, Boolean ForceNonUnity, Boolean ForceDebugInfo, Boolean ForceFlushMac, Boolean DisableXGE, String InAddArgs, Boolean ForceUnity, Dictionary`2 EnvVars)
LogPlayLevel:    bei AutomationTool.UE4Build.Build(BuildAgenda Agenda, Nullable`1 InDeleteBuildProducts, Boolean InUpdateVersionFiles, Boolean InForceNoXGE, Boolean InUseParallelExecutor, Boolean InForceNonUnity, Boolean InForceUnity, Boolean InShowProgress, Dictionary`2 PlatformEnvVars)
LogPlayLevel:    bei Project.Build(BuildCommand Command, ProjectParams Params, Int32 WorkingCL)
LogPlayLevel:    bei BuildCookRun.DoBuildCookRun(ProjectParams Params)
LogPlayLevel:    bei BuildCommand.Execute()
LogPlayLevel:    bei AutomationTool.Automation.Execute(List`1 CommandsToExecute, CaselessDictionary`1 Commands)
LogPlayLevel:    bei AutomationTool.Automation.Process(String] CommandLine)
LogPlayLevel:    bei AutomationTool.Program.MainProc(Object Param)
LogPlayLevel:    bei AutomationTool.InternalUtils.RunSingleInstance(Action`1 Main, Object Param)
LogPlayLevel:    bei AutomationTool.Program.Main()
LogPlayLevel: ProcessManager.KillAll: Trying to kill 0 spawned processes.
LogPlayLevel: Program.Main: AutomationTool exiting with ExitCode=5
LogPlayLevel: Domain_ProcessExit
LogPlayLevel: copying UAT log files...
LogPlayLevel: RunUAT.bat ERROR: AutomationTool was unable to run successfully.
LogPlayLevel: Completed Launch On Stage: Build Task, Time: 161.610882
LogPlayLevel: BUILD FAILED
PackagingResults:Error: Error Launch failed! Unknown Error

Would love to use your plugin in my project, it makes so many things so much easier :frowning:

Working on a band-aid fix for this right now. It’ll disable Slate Tweens on Android, but you’ll be able to package. Unless you’re using Slate for your UI and want to use iTween with it, this won’t affect you. Nothing will change for UMG users or Slate users that don’t deploy to Android. I’m going to look into a deeper fix later on.

I’ll have this out tomorrow for sure! Just testing with it right now.

's the fix: Mediafire

Changelog:
-Removed support for Slate tweens from mobile.
-Fixed packaging issues for Android/iOS.
-Restored functionality for Ease In and Out Elastic on non-mobile platforms. Mobile platforms using the EaseType will see a very different behaviour from what is seen on other platforms for now. It’s best to stay away from it and run two tweens, one after another: Ease In Elastic then Ease Out Elastic when the first completes.

Thanks a lot for the fix! Works great so far.

Waiting for a 4.11 version :slight_smile:

What a nice surprise, 4.11 dropping today!

The great thing about 4.11 though is that it doesn’t remove any code iTween depends on, so you can just right-click on (a copy of) your uproject file and choose “Switch Engine version” and choose 4.11. It’ll fail to launch, but ask you if you want to rebuild binaries. Just do that and you’ll be golden.

But just in case 's an upload of the 4.11 recompile: Mediafire

just one word: thanks

You’re very very welcome!

1.the move event has a sweep check, aren’t the rotate and scale should have it too? just suggestion:)

  1. “move/rotate/scale by” node is not available now, do I need to implement it manually through “to” node? or is there anything that I missed?:confused:

Right now I’m trying to understand your workaround on how to slow down/speed up a tweening object… and one step troubles me: How can I GET and SET the current time of a tween? I tried to search for “time” on a reference of a tween, but can’t find anything related to time.

When I created iTween, Sweep was only available as an option for SetActorLocation, which is what iTween uses for Move events. I thing Sweep has been implemented for SetActorRotation by now, so I can add that. It’s just a matter of finding the time which I’m always very short on :stuck_out_tongue: SetActorScale3D doesn’t have a Sweep parameter as far as I know, but admittedly it’s been some time since I’ve checked all of the overloads. I’ll put it on the list and look into it!

It’s been a long time since “by” has been implemented and I don’t currently have plans to make it happen, so the best way to do it is to have the tween start at the current transform, then set “to” as the transform + what you want to transform by.

Sorry, I wasn’t clear enough with that explanation. “Time” is not an iTweenEvent variable but instead what you want is “tickTypeValue.” That encompasses Time and Speed.

Oh, got it. Thank you!