January 15, 2014 at 9:46 am #5127
First of all, I must join all the former praise – this peace of work is amazing!! Finally me and the designer I work with have a way to communicate (it is very “effective” 🙂
Things became more challenging for me when I tried to integrate the effects into my existing animation engine (built in C++-OpenGL). Is there any chance you can provide a C++ module? Alternatively, I will gladly code one if you can provide me with the mathematical interpretation of the editor’s output. (If you have a code written in a different language – I can serve as a translator 🙂
I would gladly share with the community the fruits of such work..
Thanks!!January 15, 2014 at 1:54 pm #5128
hi, glad you like it 🙂
There is no C++ module at present, and I don’t know C++ well enough at the moment to create one, but it was something I’d like to try at some point, maybe later this year.
I would recommend the Monkey module if you want to try translating the code, someone has managed to create a Java version from that, and Monkey in itself is a language that can be translated into a number of other languages so it’s structure should be easier to work with. You can download it from here: http://www.rigzsoft.co.uk/code-libraries/January 16, 2014 at 3:54 pm #5129
Thanks for the prompt reply!!!
I downloaded the code and started the translation process. I hope I’ll be able to pull it off… (finger crossed).
Will keep you updated!February 14, 2014 at 9:47 pm #5144
I’ve just completed a cpp conversion, and have it working in my custom engine.
This is not a stand alone port, as it still needs to be integrated into other engines. However, this should be simple as their are only a few methods related to graphics.
Because I intend to use this in games and need maximum performance, I removed the interpolation method of graphs, and only support look-up tables.
If anyone is interested in looking at this, as a starting point for your own conversion, please let me know
Ex: tlParticle looks like this:
class tlParticle : public tlEntity
void SetCurrentFrame( f32 frame );
tlEmitter * m_Emitter; // emitter it belongs to
f32 m_WeightVariation; // Particle weight variation
f32 m_GSizeX; // Particle global size x
f32 m_GSizeY; // Particle global size y
//f32 m_VelVariation; // velocity variation
//f32 m_VelSeed; // rnd seed
f32 m_CurrentFrame; // current frame of animation
FontChar * m_Avatar; // link to the glyph that represents the entity
f32 m_SpinVariation; // variation of spin speed
f32 m_DirectionVariation; // Direction variation at spawn time
f32 m_TimeTracker; // This is used to keep track of game ticks so that some things can be updated between specific time intervals
f32 m_RandomDirection; // current direction of the random motion that pulls the particle in different directions
f32 m_RandomSpeed; // random speed to apply to the particle movement
f32 m_EmissionAngle; // Direction variation at spawn time
int m_ReleaseSingleParticle; // set to true to release single particles and let them decay and die
int m_Layer; // layer the particle belongs to
bool m_GroupParticles; // whether the particle is added the PM pool or kept in the emitter’s pool
tlParticle * m_Prev; // for linked lists of active/inactive particle objects.
tlParticle * m_Next;
};February 15, 2014 at 1:04 am #5145
Hey that sounds great, well done 🙂
You’re right the interpolation is redundant in most cases, in the Monkey Module I ditched it too as the difference between it and lookups are not noticeable. It will be interesting to see what performance you get with c++.February 20, 2014 at 1:17 am #5147
Can you share C++ conversion?
Thanks in advance
SesillaFebruary 20, 2014 at 10:51 pm #5148
I’m just going through some final tests ( discovered animated frames was not working ).
Also trying to slim the classes down a bit…
I currently have it running on an iOS environment ( iPad ). Will run off some profile numbers for some specific effects. iOS is almost always pixel bound ( especially with a lot of alpha blending going on ). But besides that, I’ll find out how much CPU time is spend for particle updates.
Will post code soon.
March 5, 2014 at 9:51 pm #5156
- This reply was modified 5 years, 6 months ago by pward84020.
Things appear to be quite stable now.
Minimal work will still be required to integrate into the engine of your choice.
I’ve not tested all effects ( ex. particles which align themselves from their velocity ), but any bugs there should be easy to locate.
How would this source snippet best be delivered ?March 6, 2014 at 2:31 pm #5160
IMHO – ASAP 🙂
I intended to do just this very thing a while back but got delayed.
I’d be very keen to see your work pward84020! Rigz’s system is awesome, and I’m eager to try and do some 3D tweakage for my project. You could have saved me a lot of work here, so I’ll be mighty thankful to you, and a happy man if peterigz agrees to host your source…March 6, 2014 at 2:44 pm #5161
Sounds great pward84020 🙂
You could throw it up on github if you wanted to then people could fork it as necessary, but it’s your code at the end of the day so the choice is yours 🙂 I’d certainly be happy to contribute to it, although my c++ knowledge is limited!March 11, 2014 at 11:57 am #5164
have you news about source snippet? It would be nice to try it in C++! 😉
Thanks in advance
SesillaApril 2, 2014 at 6:14 pm #5170
any news? 🙂
SesillaApril 20, 2014 at 12:38 pm #5191
Peter Ward has very kindly made available his C++ code for TimelineFX, which you can find in this post here:
Perhaps I should GitHub it?April 21, 2014 at 7:57 am #5192
thanks for the share, but is the source incomplete?
The files “Matrix.h”, “Vector.inl.h”, “Time.h” there are not inside.
Is it right?
Thanks in advance
SesillaApril 21, 2014 at 10:45 am #5193
Excellent – thanks to both Peters 😉 The generosity is appreciated!
@sesilla – I’d assume that’s what Peter (Ward) meant by ‘It is missing some key components’ – this is a framework for getting at TFX’s data, the rest (math, rendering, etc.) is up to us.
- This reply was modified 5 years, 4 months ago by maksw.
You must be logged in to reply to this topic.