problem with arranging values of an array



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 09/03/2010 at 08:34, xxxxxxxx wrote:

    I don't have my Compiler handy right now, so I might be a bit off, but when saying

    tposarr[i]
    

    what you are dealing with is a the array i, and you should be able to deal with it as though it were a normal array.
    Thus,

    tposarr[i].Push(..)
    

    should work.

    Also, when working on a new particle, you might need to do something like a

    tposarr.push(new GeDynamicArray<Vector>)
    

    to append a new array to your array of arrays :-)

    But bear in mind the following: If a particle's life is only starting in frame 100, then the spline will (with your above code) have the value of frame 100 at position 0, frame 101 at position 1 etc., so whatever you want to do with the splines will not preserve the time. If you want for example to have an object follow the spline, you might need to keep book about each particle's lifespan.

    So, depending on what you want to do, it might be a more interesting alternative to look at animation tracks instead of splines. Depends on your mission :-)



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 09/03/2010 at 11:22, xxxxxxxx wrote:

    the mission is to create a trail (spline) for each particle.
    trying to push a new GeDynamicArray<Vector> gives me an error message:

    c4dplugin_test\plugins est\source\etracer.cpp(130) : error C2275: 'GeDynamicArray<TYPE>': Ungültige Verwendung dieses Typs als Ausdruck
            with
            [
                TYPE=Vector
            ]

    maybe this whole approach wrong? but how else would such stuff work?



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 09/03/2010 at 13:44, xxxxxxxx wrote:

    Well, if you just want the trail, without regards to thetimeline, then this should do it, even though it's probably not the most efficient algorithm, depending on how many particles you want to deal with.

    As I mentioned I don't have my compiler at hand at the moment, so perhaps someone could check this. I think it should be something like

    tposarr.push(new GeDynamicArray<Vector>())
    

    (I'd say the ()'s should do it)



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 09/03/2010 at 22:57, xxxxxxxx wrote:

    Hm, no sorry, the approach with

    new 
    

    was wrong since we're not talking pointers here. But I just saw the GeAutoDynamicArray. It will automatically create new entries on the fly as needed.
    Thus, you could use

    GeAutoDynamicArray<GeDynamicArray<Vector>> tposarr
    

    Then you don't need the

    tposarr.push(..)
    

    at all.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 10/03/2010 at 00:08, xxxxxxxx wrote:

    thank for pointing out GeAutoDynamicArray.. can you show me how to put a vector into it?

    using

    tposarr[i][j] = particle->off;
    

    results in a bunch of errors so i think this is the wrong method..

    thank you very much for your help



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 10/03/2010 at 01:04, xxxxxxxx wrote:

    You just do

    tposarr[i].Push(particle->off);
    

    Only the Array containing the Arrays needs to be GeAutoDynamicArray, the Arrays it carries are still of type GeDynamicArray, since there may be "holes" in it (for example if a particle doesn't start in frame 0, but only in frame 100.
    Example: Particle 100 starts it's lifetime at frame 200.
    If you'd use GeAutoDynamicArray, you would end up with
    tposarr[100][200] containing the first coordinate, but tposarr[100][0] up to tposarr[100][199] would all be zeroes, which you don't want.
     
    By using the above method, tposarr[100][0] would contain the first position of the particle (at frame 200), tposarr[100][1] the second position at frame 201, ...
    I suppose that's what you want.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 10/03/2010 at 01:56, xxxxxxxx wrote:

    hm, still the same error..

    1>c4d_plugin\resource\_api\ge_dynamicarray.h(470) : error C2440: '=': 'Vector *const *' kann nicht in 'GeDynamicArray<TYPE> *' konvertiert werden
    1>        with
    1>        [
    1>            TYPE=Vector
    1>        ]
    1>        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    1>        c4d_plugin\resource\_api\ge_dynamicarray.h(449) : Bei der Kompilierung der Klassen-template der Bool GeDynamicArray<TYPE>::ReScope(VLONG)-Memberfunktion
    1>        with
    1>        [
    1>            TYPE=GeDynamicArray<Vector>
    1>        ]
    1>        c4d_plugin\resource\_api\ge_dynamicarray.h(986) : Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "GeDynamicArray<TYPE>".
    1>        with
    1>        [
    1>            TYPE=GeDynamicArray<Vector>
    1>        ]
    1>        c4d_plugin\plugins est\source estobj.cpp(15) : Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "GeAutoDynamicArray<TYPE>".
    1>        with
    1>        [
    1>            TYPE=GeDynamicArray<Vector>
    1>        ]

    what does this mean??



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 10/03/2010 at 02:35, xxxxxxxx wrote:

    Please send the exact code from your testobj.cpp, line 15 (& neccessary declarations).
     Can it be that you did

    tposarr.push(..)
    

    instead of

    tposarr[i].push(..)
    

    ?
    Because he complains that he got a vector where he expects a GeDynamicArray...



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 10/03/2010 at 03:41, xxxxxxxx wrote:

    line15:

      
    GeAutoDynamicArray<GeDynamicArray<Vector>> tposarr;   
    

    error comes only when i try this:

      
    tposarr[frameNum].Push(source->GetParticleR(pt,i)->off);   
    


  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 16/03/2010 at 10:03, xxxxxxxx wrote:

    Ok, I get the same errors with 11.5 SDK.
    It comes grom GeAutoDynamicArray's ReScope.
    It also comes when I substitute GeAutoDynamicArray with GeDynamicArray and use a manual ReSize() before trying to access an element.
    Seems like a Ge(Auto)DynamicArray doesn't like to resize itself when it carries other Ge(Auto)DynamicArrays.
    @Matthias , do you see this as an error in the SDK?
    Or can you recommend an alternative?
    I myself would go STL or a manually administrated Array of pointers to GeDynamicArrays, but perhaps you can recommend ello something that requires less manual handling?

    Here's a minimal code snippet to reproduce the compiler errors:

        GeAutoDynamicArray<GeDynamicArray<Vector>> tposarr;  
      Vector vec;  
      tposarr[0].Push(vec);
    

    Thanks
    Mike


Log in to reply