// COPY STACK // // public void CopyStack(BaseStack originalStack) { modules.Clear(); foreach (var item in originalStack.modules) { BaseModule m = ScriptableObject.CreateInstance(item.GetType()) as BaseModule; m.Initialize(this, ownerBlueprint); m.CopyProperties(item, ownerBlueprint); modules.Add(m); } }
// DUPLICATE SELECTED MODULE // // // Called from a GenericMenu in ShowModules(). public void DuplicateSelectedModule() { int selectedIndex = modules.FindIndex(delegate(BaseModule bm) { return(bm == selectedModule); }); if (ownerBlueprint.ownerEmitter.selectedStack.stackFunction == AmpsHelpers.eStackFunction.MultiFunction) { BaseMultiFunctionModule duplicateModule = ScriptableObject.CreateInstance(selectedModule.GetType()) as BaseMultiFunctionModule; duplicateModule.Initialize(this, ownerBlueprint); duplicateModule.CopyProperties(selectedModule); modules.Insert(selectedIndex + 1, duplicateModule); } else { BaseModule duplicateModule = ScriptableObject.CreateInstance(selectedModule.GetType()) as BaseGenericModule; duplicateModule.Initialize(this, ownerBlueprint); duplicateModule.CopyProperties(selectedModule); modules.Insert(selectedIndex + 1, duplicateModule); } selectedModule = modules[selectedIndex + 1]; ownerBlueprint.ownerEmitter.SoftReset(); }