On 04/08/2013 at 02:23, xxxxxxxx wrote:
User Information:
Cinema 4D Version: R14/R15
Platform:
Language(s) : C++ ;
---------
I'm trying to write a BaseLink to a HyperFile
struct ProxyItem {
Matrix mg;
Vector size;
AutoAlloc<BaseLink> link;
ProxyItem() { }
ProxyItem(const ProxyItem& item) {
mg = item.mg;
size = item.size;
link->SetLink(item.link->ForceGetLink());
}
Bool Write(HyperFile* hf) {
if (!hf->WriteMatrix(mg)) return FALSE;
if (!hf->WriteVector(size)) return FALSE;
if (!link->Write(hf)) return FALSE;
return TRUE;
}
Bool Read(HyperFile* hf, LONG level) {
if (!hf->ReadMatrix(&mg)) return FALSE;
if (!hf->ReadVector(&size)) return FALSE;
if (!link->Read(hf)) return FALSE;
return TRUE;
}
BaseObject* GetLink(BaseDocument* doc) const {
return (BaseObject* ) link.GetLink(doc, Obase);
}
void SetLink(BaseObject* op) {
link.SetLink(op);
}
};
But the resulting link always looses its connection (so I always get NULL). I now use a
BaseContainer as a workaround which works fine. I'd rather use the BaseLink directly, though!
struct ProxyItem {
Matrix mg;
Vector size;
BaseContainer linkbc;
ProxyItem() { }
ProxyItem(const ProxyItem& item) {
mg = item.mg;
size = item.size;
linkbc = item.linkbc;
}
Bool Write(HyperFile* hf) {
if (!hf->WriteMatrix(mg)) return FALSE;
if (!hf->WriteVector(size)) return FALSE;
if (!hf->WriteContainer(linkbc)) return FALSE;
return TRUE;
}
Bool Read(HyperFile* hf, LONG level) {
if (!hf->ReadMatrix(&mg)) return FALSE;
if (!hf->ReadVector(&size)) return FALSE;
if (!hf->ReadContainer(&linkbc, TRUE)) return FALSE;
return TRUE;
}
BaseObject* GetLink(BaseDocument* doc) const {
return (BaseObject* ) linkbc.GetLink(1000, doc, Obase);
}
void SetLink(BaseObject* op) {
linkbc.SetLink(1000, op);
}
};
Any ideas?
Thanks