Object likely to NullObject

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

On 12/04/2008 at 06:18, xxxxxxxx wrote:

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

---------
Hi,

I need to make a plugin object that's in fact a Null Object (including e.g. the ID_BASEOBJECT_COLOR and ID_BASEOBJECT_SHADEDWIRECOLORMODE working as in an Null Object), just with 2 extra attributes.

I tried with:

> `

class OPointOfInterest : public ObjectData  
\>  {  
\>       INSTANCEOF(OPointOfInterest,ObjectData)  
\>    
\>       private:  
\>    
\>       public:  
\>            virtual Bool Init(GeListNode *node);  
\>    
\>            virtual Bool Message                    (GeListNode *node, LONG type, void *data);  
\>            virtual Bool Draw                         (PluginObject *op, LONG type, BaseDraw *bd, BaseDrawHelp *bh);  
\>            virtual Bool GetDEnabling               (GeListNode *node, const DescID &id;,GeData &t;_data,LONG flags,const BaseContainer *itemdesc);  
\>            virtual void CheckDirty(PluginObject* op, BaseDocument* doc);  
\>    
\>            static NodeData *Alloc(void) { return gNew OPointOfInterest; }  
\>  };

`

All void functions just return TRUE.

I try to register it with:
> `

Bool RegisterPointOfInterest(void)  
\>  {  
\>       // decide by name if the plugin shall be registered - just for user convenience  
\>       String name=GeLoadString(IDS_POINTOFINTEREST); if (!name.Content()) return TRUE;  
\>       return RegisterObjectPlugin(ID_POINTOFINTEREST,name,0,OPointOfInterest::Alloc,"OPointOfInterest","PointOfInterest.tif",0);  
\>  }

`

Not sure about the "0" flag, have also tried OBJECT_GENERATOR.

In the .res file I include Onull and add some attributes.

Now the object looks like I want, and has all attributes that I want. But if I try to use the Null Object's functionality to draw e.g. a circle in a certain color, it does not work. Nothing is drawn.

What do I have to do to make an object that completely behaves like the null object?

Thanks in advance for hints and help :-)

Best regards,
Jack

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

On 12/04/2008 at 07:42, xxxxxxxx wrote:

Howdy,

Well, the drawing of a Null object is in the NULL object's ObjectData::Draw() function, which you'd have to mimic in your OPointOfInterest::Draw() function. ;o)

Adios,
Cactus Dan

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

On 12/04/2008 at 19:39, xxxxxxxx wrote:

Just return a Null object in GetVirtualObjects. Here an example (it's a modified sample from the SDK)

> \> class MorphMixerObject : public ObjectData \> { \>      INSTANCEOF(MorphMixerObject,ObjectData) \> \>      public: \>           virtual BaseObject\* GetVirtualObjects(PluginObject \*op, HierarchyHelp \*hh); \> \>           static NodeData \*Alloc(void) { return gNew MorphMixerObject; } \> }; \> \> // create morphed object \> BaseObject \*MorphMixerObject::GetVirtualObjects(PluginObject \*op, HierarchyHelp \*hh) \> { \>      BaseObject \*null = NULL; \>      null = BaseObject::Alloc(Onull); \>      if (!null) goto Error; \> \>      BaseContainer \*data = null->GetDataInstance(); \> \>      data->SetLong(NULLOBJECT_DISPLAY, NULLOBJECT_DISPLAY_PENTAGON); \> \>      return null; \> \> Error: \>      BaseObject::Free(null); \>      return NULL; \> } \> \> // be sure to use unique IDs obtained from www.plugincafe.com \> #define ID_MORPHMIXER_OBJECT     1001156 \> \> Bool RegisterMorphMixer(void) \> { \>      // decide by name if the plugin shall be registered - just for user convenience \>      String name=GeLoadString(IDS_MORPHMIXER); if (!name.Content()) return TRUE; \>      return RegisterObjectPlugin(ID_MORPHMIXER_OBJECT,name,OBJECT_GENERATOR,MorphMixerObject::Alloc,"Omorphmixer","morphmixer.tif",0); \> } \>

cheers,
Matthias

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

On 13/04/2008 at 09:00, xxxxxxxx wrote:

Right that's a good possibility, too. Thanks again, Matthias!

Anway, I already did the drawing stuff in the Draw(), that way I have the possibility to draw some more things and give the object a special look.

Greetings,
Jack