[SOLVED]Generator GetSettingsInstance
-
On 06/12/2017 at 14:54, xxxxxxxx wrote:
User Information:
Cinema 4D Version:
Platform:
Language(s) :---------
I'm currently doing a generator. In GetVirtualObjects I create another document in memory, and I would like to get/set data from this tempo doc.
So I usedBaseObject* MainObjectData::GetVirtualObjects(BaseObject* op, HierarchyHelp* hh) { BaseObject* objDown = op->GetDown(); if (!objDown) return nullptr; objDown = static_cast<BaseObject*>(objDown->GetClone(COPYFLAGS_0, nullptr)); BaseDocument* copyDoc = BaseDocument::Alloc(); if (!copyDoc) return nullptr; BaseObject* nullMaster = BaseObject::Alloc(Onull); if (!nullMaster) return nullptr; copyDoc->InsertObject(nullMaster, nullptr, nullptr); objDown->InsertUnder(nullMaster); // I know doc point to the same object of nullmaster // But in my plugin I get informations from another function and use GetDocument, So I do it in my example. BaseDocument* doc = objDown->GetDocument(); if (!doc) return nullptr; // Always return me nullptr why? BaseContainer* bc = doc->GetSettingsInstance(DOCUMENTSETTINGS_GENERAL); if (!bc) return nullptr; BaseObject::Free(nullMaster); BaseDocument::Free(copyDoc); BaseObject* cube = BaseObject::Alloc(Ocube); return cube; }
it's return a nullptr.
This also fails
BaseContainer* bc = doc->GetDataInstance(); if (!bc) return nullptr; bc = bc->GetContainerInstance(DOCUMENTSETTINGS_GENERAL); if (!bc) return nullptr;
While for different type it's work fine
doc->GetSettingsInstance(DOCUMENTSETTINGS_DOCUMENT);
Thanks in advance
-
On 07/12/2017 at 02:13, xxxxxxxx wrote:
Hi,
this actually has nothing to do with the use inside of a ObjectData plugin.
DOCUMENTSETTINGS_GENERAL simply can not be retrieved via GetSettingsInstance(), but only via BaseDocument::GetData().
In the BaseDocument manual this gets mentioned. We'll add this information to the API references, too (by the way, the BaseDocument::GetData() link in the manual currently links to BaseList2D::GetData(), this will be fixed as well). -
On 07/12/2017 at 03:13, xxxxxxxx wrote:
Not sure to understand the pattern decision made behind of this (a function that could fail if a specific parameter is given, while parameter are from the same enum)
But it's work !Thanks.