예제 #1
0
파일: slave.cpp 프로젝트: artemeliy/inf4715
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;
   }
예제 #2
0
파일: slave.cpp 프로젝트: artemeliy/inf4715
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;
   }
예제 #3
0
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;
}