CoreMessage and msg data



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

    On 01/03/2007 at 13:20, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:    
    Platform:      
    Language(s) :

    ---------
    Hi again,

    I'm trying to determine when a render to picture view start/end.

    I'm trying to receive MSG_MULTI_RENDERNOTIFICATION in a dialog
    plugin through CoreMessage(), but not receiving.

      
    Bool PluginDialog::CoreMessage(LONG id,const BaseContainer &msg;){  
         switch (id){  
              case MSG_MULTI_RENDERNOTIFICATION:  
                   GePrint("received MSG_MULTI_RENDERNOTIFICATION");  
              break;  
         }  
         return GeDialog::CoreMessage(id,msg);  
    }  
    

    also how do I tell if render starts or ends?

    thanks for all the help guys :)



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

    On 01/03/2007 at 15:38, xxxxxxxx wrote:

    Don't use CoreMessage() (wrong method). If you look at CoreMessage(), it doesn't receive these type of messages at all. Use Message() instead. Problem is that GeDialog::Message() doesn't receive this type of message either - it only receives GUI messages. This message is usually relayed to other plugin types (Object, Tag, etc.) - anything based on NodeData.

    The solution is to use another type of plugin, usually a SceneHook is suggested.

    Per your second question:

    case MSG_MULTI_RENDERNOTIFICATION:  
    {  
         if (!data)                                   return TRUE;  
         RenderNotificationData*     rnd =          (RenderNotificationData* )data;  
         if (!rnd)                                   return TRUE;  
         // Start Editor or External Render (set Render visibility)  
         if (rnd->start || (rnd->external && (rnd->doc != GetActiveDocument())))     ...  
         // End Editor or External Render (restore Editor visibility)  
         else ...  
         break;  
    }
    

    Check out RenderNotificationData in the SDK Docs.



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

    On 02/03/2007 at 10:13, xxxxxxxx wrote:

    I've tried to create the scene hook, but crash after register.
    am I missing somenthing?

      
      
    class MySceneHook : public NodeData {  
    public:  
         Bool Message(GeListNode* node, LONG type, void* data) {  
              GePrint("scene hook message");  
         };  
    };  
      
    static NodeData* SceceHookAllocator() {  
         NodeData *data = gNew MySceneHook;  
         return data;  
    }  
      
    Bool PluginStart(void) {  
      
    // scene hook  
    Bool r= RegisterSceneHookPlugin(     1007778,  
                                       "my plugin",  
                                       PLUGINFLAG_HIDE | PLUGINFLAG_HIDEPLUGINMENU,  
                                       SceceHookAllocator,  
                                       EXECUTION_INITIAL,  
                                       0,  
                                       NULL );  
    }  
      
    


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

    On 02/03/2007 at 12:24, xxxxxxxx wrote:

    1. class MySceneHook : public SceneHookData

    2. Do your allocator like this:

    class MySceneHook : public SceneHookData
    {
         Bool Message(GeListNode* node, LONG type, void* data) {
              GePrint("scene hook message");
         };
         static NodeData* Alloc() { return gNew MySceneHook; }
    };

    Bool PluginStart(void) {
         Bool r = RegisterSceneHookPlugin(     ...
              MySceneHook::Alloc(),
              ...
              );
    }



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

    On 02/03/2007 at 12:39, xxxxxxxx wrote:

    Thanks all working now!
    I was using the wrong base class :-(

    small correction

      
    Bool PluginStart(void) {  
         Bool r = RegisterSceneHookPlugin(     ...  
         MySceneHook::Alloc,  
              ...  
              );  
    }  
    


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

    On 02/03/2007 at 16:46, xxxxxxxx wrote:

    You are correct. ;)


Log in to reply