RefTargetHandle SlaveScaleControl::Clone(RemapDir& remap) { SlaveScaleControl *cont = new SlaveScaleControl; // *cont = *this; cont->sub = NULL; cont->master = NULL; cont->scratchControl = NULL; cont->ReplaceReference(0,sub); cont->ReplaceReference(1,master); cont->blockID = blockID; cont->subID = subID; cont->masterPresent = masterPresent; if (master) { for (int i = 0; i < blockID.Count(); i++) { SlaveControl *c = (SlaveControl *)cont; master->Blocks[blockID[i]]->externalBackPointers.Append(1,&c,1); } } CloneControl(cont,remap); cont->UpdateSlave(); BaseClone(this, cont, remap); return cont; }
RefTargetHandle SlaveControl::Clone(RemapDir& remap) { SlaveControl *cont = new SlaveControl; cont->sub = NULL; cont->master = NULL; cont->scratchControl = NULL; cont->ReplaceReference(0,sub); cont->ReplaceReference(1,master); cont->blockID = blockID; cont->subID = subID; cont->masterPresent = masterPresent; CloneControl(cont,remap); cont->UpdateSlave(); BaseClone(this, cont, remap); return cont; }
RefTargetHandle FloatLimitCtrl::Clone(RemapDir& remap) { // Make a new float limit controller and give it our param values. FloatLimitCtrl *newCtrl = new FloatLimitCtrl; if (newCtrl) { // Clone limited controller newCtrl->ReplaceReference(BASELIMIT_LIMITEDCTRL_REF, remap.CloneRef(GetLimitedControl())); // Clone parameter blocks newCtrl->ReplaceReference(BASELIMIT_PBLOCK_REF, remap.CloneRef(m_pblock)); newCtrl->ReplaceReference(FLOATLIMIT_PBLOCK_REF, remap.CloneRef(m_pfloatBlock)); newCtrl->mLocked = mLocked; CloneControl(newCtrl, remap); BaseClone(this, newCtrl, remap); } return newCtrl; }