public ArrayMesh generate(ArrayMesh oldMesh, Skin skin, UMAReciepe reciepe, List <string> boneNames) { //reset changes value changes = 0; //clean up slots oldMesh = cleanOldSlots(oldMesh, reciepe); //clean up overlay oldMesh = cleanOldOverlays(oldMesh, reciepe); //create new slots oldMesh = createNewSlots(oldMesh, reciepe); //create new overlay oldMesh = createOverlays(oldMesh, reciepe); //assign binds if (changes > 0) { var binds = getBinds(reciepe); binds = binds.DistinctBy(dt => dt.getSelector()).ToList(); skin.ClearBinds(); int i = 0; foreach (var bind in binds) { if (!boneNames.Contains(bind.boneName)) { continue; } skin.AddBind(0, bind.transform); skin.SetBindName(i, bind.boneName); i++; } } //set main color return(oldMesh); }