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 used
BaseObject* 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