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 classsmall 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.