Problem getting Material of PluginShader



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

    On 27/02/2005 at 15:21, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   8.012 
    Platform:   Windows  ; Mac  ;  Mac OSX  ; 
    Language(s) :     C++  ;

    ---------
    Trying to get the Material for a PluginShader from within ShaderData.Init() (my own shader plugin). The code below always returns h == NULL and returns FALSE. The PluginShader GeListNode has no GeListHead? If I'm trying too early, where else, praytell, would I be able to do this?

      
         PluginShader *ps = (PluginShader* )node;  
         // Get Shader's Material (hack)  
         GeListHead* h;  
         if (!(h = ps->GetListHead())) { GePrint("iShader.Init.h"); return FALSE; }  
         material = static_cast<Material*>(h->GetParent());  
         if (!material || (material->GetType() != Mmaterial)) { GePrint("iShader.Init.material"); return FALSE; }  
    


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

    On 27/02/2005 at 16:59, xxxxxxxx wrote:

    Well, I found a hack of my own.

    There is only one message sent to the ShaderPlugin (into ShaderData) that isn't repeated twenty times - gad, you guys need to fix this (if you haven't in later SDK versions) - MSG_DESCTIPTION_INITUNDO. This allows me to grab the material (as above - yes, it works there, but not in ShaderData.Init()) and do my thing.


Log in to reply