It is possible, but very tedious to do data-only. You basically would need to set the animation to an earlier percentage of completion at every frame, and since data events don't really support loops or anything of the sort, you would need to add a new actor event for every single time frame.
I suggest, you use a triggered loop to send these messages.
I know you can use Time Scale to slow things down.
Perhaps negative values would reverse a unit. But messing with time scale is not usually the best option.
Edit: yeah there shouldn't be a problem with doing that, but the issue is that there's no way to base the AnimSetCompletion's percentage off a reference (so you could decrement the value each loop). :( I mean, one could do it with a looong list of events that do a TimerSet (0.0625, MyAnimationReverseLoopX) then TimerExpired(TimerName MyAnimationReverseLoopX) to fire the AnimSetCompletion at the appropriate state,but uh no thank you.
I'm starting to wonder why they didn't just make a really simple scripting language for actor events and call it a day. What they have now is very similar but stuck behind an obtuse and hard to work with UI (even by my standards).
Edit: yeah there shouldn't be a problem with doing that, but the issue is that there's no way to base the AnimSetCompletion's percentage off a reference (so you could decrement the value each loop). :( I mean, one could do it with a looong list of events that do a TimerSet (0.0625, MyAnimationReverseLoopX) then TimerExpired(TimerName MyAnimationReverseLoopX) to fire the AnimSetCompletion at the appropriate state,but uh no thank you.
Exactly, you can do some sort of a loop, but you cannot do anyting advanced with it, besides repeating the same action. You cannot dynamically use or increment variables (well, you can increment a status, but you cannot really use it for anything).
Quote:
I'm starting to wonder why they didn't just make a really simple scripting language for actor events and call it a day. What they have now is very similar but stuck behind an obtuse and hard to work with UI (even by my standards).
@RCIX: Go
Its obviously the data side of the game is supposed to compile and run faster while the scripting side is slower because it's interpreted.
I think some of the engine is designed around a data oriented paradigm. Under that paradigm a program is seen as something that does a series of transforms on data in order to turn it into a desirable output. Data oriented design is a little harder to grasp than object oriented design but it also lends itself to being more efficient with respect to ram usage and easier to maintain as the variables and properties are serialized by how they are modified and manipulated rather than how they are understood intuitively.
Is it possible via actor messages to get an actor to play an animation in reverse?
It is possible, but very tedious to do data-only. You basically would need to set the animation to an earlier percentage of completion at every frame, and since data events don't really support loops or anything of the sort, you would need to add a new actor event for every single time frame.
I suggest, you use a triggered loop to send these messages.
I know you can use Time Scale to slow things down. Perhaps negative values would reverse a unit. But messing with time scale is not usually the best option.
Unfortunately not
Why is that?
Is it possible to create a timer and when it expires create it again? That would be a loop wouldn't it?
@adovid: Go
Pretty sure it is. Lemme go check...
Edit: yeah there shouldn't be a problem with doing that, but the issue is that there's no way to base the AnimSetCompletion's percentage off a reference (so you could decrement the value each loop). :( I mean, one could do it with a looong list of events that do a TimerSet (0.0625, MyAnimationReverseLoopX) then TimerExpired(TimerName MyAnimationReverseLoopX) to fire the AnimSetCompletion at the appropriate state,but uh no thank you.
I'm starting to wonder why they didn't just make a really simple scripting language for actor events and call it a day. What they have now is very similar but stuck behind an obtuse and hard to work with UI (even by my standards).
Exactly, you can do some sort of a loop, but you cannot do anyting advanced with it, besides repeating the same action. You cannot dynamically use or increment variables (well, you can increment a status, but you cannot really use it for anything).
#
@RCIX: Go Its obviously the data side of the game is supposed to compile and run faster while the scripting side is slower because it's interpreted.
I think some of the engine is designed around a data oriented paradigm. Under that paradigm a program is seen as something that does a series of transforms on data in order to turn it into a desirable output. Data oriented design is a little harder to grasp than object oriented design but it also lends itself to being more efficient with respect to ram usage and easier to maintain as the variables and properties are serialized by how they are modified and manipulated rather than how they are understood intuitively.
Just speculation.
Yeah, but even if they only had it compile to the same thing they could have given us an SC2 editor event script so the UI wouldn't be as obtuse...