protected override bool OnPerform() { CASLogic logic = CASLogic.GetSingleton(); if (logic == null) { return(false); } CASClothingCategory category = CASClothingCategory.gSingleton; if (category == null) { return(true); } if (category.mClothingTypesGrid == null) { return(true); } if ((category.mClothingTypesGrid.Count > 0) || (!sPopulating)) { OnPopulate(); } else { category.mClothingTypesGrid.ItemRowsChanged -= OnPopulate; category.mClothingTypesGrid.ItemRowsChanged += OnPopulate; } return(false); }
public static void OnDesignButtonClick(WindowBase sender, UIButtonClickEventArgs eventArgs) { try { CASClothingCategory ths = CASClothingCategory.gSingleton; if (ths == null) { return; } if (ths.mCurrentPart == BodyTypes.Accessories) { if (ths.mCurrentPreset != null) { if (ths.mCurrentPreset.mPart.Key != ths.mInvalidCASPart.Key) { CASCompositorController.Instance.SetTargetObject(ths.mCurrentPreset.mPart); return; } } } ths.OnDesignButtonClick(sender, eventArgs); } catch (Exception e) { Common.Exception("OnDesignButtonClick", e); } }
public override void RequestAddCASPart(CASPart part, bool randomizeDesign) { if (MasterController.Settings.mAllowMultipleAccessories) { CASClothingCategory clothingCategory = CASClothingCategory.gSingleton; if (clothingCategory != null) { if (clothingCategory.IsAccessoryType(part.BodyType)) { CASLogic.GetSingleton().mRequestModelDirty = true; CASLogic.CASOperationStack.Instance.Push(new AddCASPartOperationEx(part, randomizeDesign)); return; } } } if (MasterController.Settings.mAllowMultipleMakeup) { CASMakeup makeup = CASMakeup.gSingleton; if (makeup != null) { if (CASParts.IsMakeup(part.BodyType)) { CASLogic.GetSingleton().mRequestModelDirty = true; CASLogic.CASOperationStack.Instance.Push(new AddCASPartOperationEx(part, randomizeDesign)); return; } } } base.RequestAddCASPart(part, randomizeDesign); }
private static bool OnPerform(StackTrace trace, StackFrame frame) { if (sSemaphore) { return(true); } try { sSemaphore = true; //if (CASDresserSheet.gSingleton != null) return true; CASDresserClothing dresser = CASDresserClothing.gSingleton; if (dresser != null) { dresser.mDefaultText.Visible = false; } CASClothingCategory ths = CASClothingCategory.gSingleton; if (ths == null) { return(true); } if (ths.mCategoryText.Caption.Equals(ths.GetClothingStateName(CASClothingState.Career)) && (Responder.Instance.CASModel.OutfitIndex == 0x0)) { ths.mCurrentPreset = null; ths.mCurrentFocusedRow = null; ths.mTempFocusedRow = null; ths.mSelectedType = CASClothingRow.SelectedTypes.None; ths.mShareButton.Enabled = false; ths.mTrashButton.Enabled = false; ths.mSaveButton.Enabled = false; ths.mSortButton.Enabled = false; ths.mSortButton.Tag = false; ResourceKey layoutKey = ResourceKey.CreateUILayoutKey("CASClothingRow", 0x0); ths.mClothingTypesGrid.BeginPopulating(ths.AddGridItem, ths.mPartsList, 0x3, layoutKey, null); } return(true); } finally { sSemaphore = false; } }
protected void OnPopulate() { if (sPopulating) { return; } try { sPopulating = true; CASLogic logic = CASLogic.GetSingleton(); if (logic == null) { return; } CASClothingCategory category = CASClothingCategory.gSingleton; if (category == null) { return; } if (category.mClothingTypesGrid == null) { return; } category.mClothingTypesGrid.ItemRowsChanged -= OnPopulate; // Must be rerun now to load the parts without interference from CASModelProxy category.LoadParts(); PopulateGrid(); } finally { sPopulating = false; } }
public static void OnUndoRedo() { try { CASClothingCategory ths = CASClothingCategory.gSingleton; if (ths == null) { return; } if (ths.mClothingTypesGrid == null) { return; } ths.mClothingTypesGrid.SelectedItem = -1; List <ItemGridCellItem> items = ths.mClothingTypesGrid.Items; int num = 0x0; if (ths.mCurrentFocusedRow != null) { ths.mCurrentFocusedRow.SetArrowGlow(false); } ths.mCurrentFocusedRow = null; int sAccessoriesSelection = CASClothingCategory.sAccessoriesSelection; foreach (ItemGridCellItem item in items) { CASClothingRow mWin = item.mWin as CASClothingRow; if (mWin != null) { if (mWin.SelectedItem != -1) { // Custom bool compactCAS = false; if (ths.mCurrentPart == BodyTypes.Accessories) { compactCAS = MasterController.Settings.mCompactAccessoryCAS; } else { compactCAS = MasterController.Settings.mCompactClothingCAS; } if (!compactCAS) { mWin.CreateGridItems(true); mWin.PopulateGrid(true); } if ((ths.mCurrentFocusedRow == null) || (((BodyTypes)sAccessoriesSelection) == mWin.CASPart.BodyType)) { if (ths.mCurrentFocusedRow != null) { ths.mCurrentFocusedRow.SetArrowGlow(false); } ths.mClothingTypesGrid.SelectedItem = num; ths.mCurrentFocusedRow = mWin; ths.mCurrentFocusedRow.SetArrowGlow(true); ths.UpdateButtons(mWin.SelectedType); if (ths.IsAccessoryType(mWin.CASPart.BodyType)) { CASClothingCategory.sAccessoriesSelection = (int)mWin.CASPart.BodyType; } ths.mCurrentPreset = mWin.Selection as CASPartPreset; } } num++; } } } catch (Exception e) { Common.Exception("OnUndoRedo", e); } }
public static bool AddGridItem(ItemGrid grid, object current, ResourceKey layoutKey, object context) { try { CASClothingCategory ths = CASClothingCategory.gSingleton; if (ths == null) { return(false); } bool flag = false; if (current != null) { if (current is List <CASParts.PartPreset> ) { List <CASParts.PartPreset> parts = current as List <CASParts.PartPreset>; if (parts.Count > 0) { CASClothingRow row = UIManager.LoadLayout(layoutKey).GetWindowByExportID(0x1) as CASClothingRow; if (row == null) { return(false); } row.UseEp5AsBaseContent = ths.mIsEp5Base; row.CASPart = parts[0].mPart; row.RowController = ths; ArrayList list = CASClothingRowEx.CreateGridItems(row, parts, true); ths.mSortButton.Tag = ((bool)ths.mSortButton.Tag) | row.HasFilterableContent; if (list.Count > 0x0) { sRows.Add(row); grid.AddItem(new ItemGridCellItem(row, null)); flag = true; if (row.SelectedItem == -1) { return(flag); } if (ths.IsAccessoryType(row.CASPart.BodyType)) { if (CASClothingRowEx.IsWorn(row.CASPart)) { if (row.CASPart.BodyType == ((BodyTypes)CASClothingCategory.sAccessoriesSelection)) { grid.SelectedItem = grid.Count - 0x1; ths.mSelectedType = row.SelectedType; CASClothingCategory.sAccessoriesSelection = (int)row.CASPart.BodyType; ths.mCurrentPreset = row.Selection as CASPartPreset; } } else { grid.SelectedItem = grid.Count - 0x1; ths.mSelectedType = row.SelectedType; CASClothingCategory.sAccessoriesSelection = (int)row.CASPart.BodyType; ths.mCurrentPreset = row.Selection as CASPartPreset; } return(flag); } grid.SelectedItem = grid.Count - 0x1; ths.mSelectedType = row.SelectedType; ths.mCurrentPreset = row.Selection as CASPartPreset; } } return(flag); } else { List <object> featured = current as List <object>; if (featured == null) { return(flag); } CASClothingRow row = UIManager.LoadLayout(layoutKey).GetWindowByExportID(1) as CASClothingRow; row.ObjectOfInterest = featured; row.RowController = ths; ArrayList items = row.CreateGridItems(true); ths.mSortButton.Tag = ((bool)ths.mSortButton.Tag) | row.HasFilterableContent; if (items.Count > 0) { grid.AddItem(new ItemGridCellItem(row, null)); } return(true); } } ths.mContentTypeFilter.UpdateFilterButtonState(); ths.UpdateButtons(ths.mSelectedType); if (CASClothingCategory.OnClothingGridFinishedPopulating != null) { CASClothingCategory.OnClothingGridFinishedPopulating(); } return(flag); } catch (Exception e) { Common.Exception("AddGridItem", e); return(false); } }
public static void RemoveItem(CASClothingCategory ths, CASPart part) { ths.mModel.RequestRemoveCASPart(part); Audio.StartSound("ui_tertiary_button"); }
public static void SelectItem(CASClothingCategory ths, CASPart part, CASPartPreset preset, bool allowMultiple) { ICASModel cASModel = Responder.Instance.CASModel; List <CASPart> wornParts = cASModel.GetWornParts(part.BodyType); bool flag = false; if (ths.IsAccessoryType(ths.mCurrentPart)) { if ((part.Key == ths.mInvalidCASPart.Key) && (!allowMultiple)) { ths.RemoveAllPartsOfType(ths.mCurrentPart); CASClothingCategory.sAccessoriesSelection = (int)ths.mCurrentPart; } else { flag = true; CASClothingCategory.sAccessoriesSelection = (int)part.BodyType; CASController.Singleton.SetAccessoryCam(part.BodyType, true); if (!allowMultiple) { if (part.BodyType == BodyTypes.Earrings) { ths.RemoveAllPartsOfType(BodyTypes.LeftEarring); ths.RemoveAllPartsOfType(BodyTypes.RightEarring); } else if ((part.BodyType == BodyTypes.LeftEarring) || (part.BodyType == BodyTypes.RightEarring)) { ths.RemoveAllPartsOfType(BodyTypes.Earrings); } } } } else if (!wornParts.Contains(part)) { flag = true; } if (preset != null) { ths.mCurrentPreset = preset; if (preset.mPresetString != null) { if (flag) { ths.mModel.RequestAddCASPart(part, preset.mPresetString); } else { ths.mModel.RequestCommitPresetToPart(part, preset.mPresetString); } } } else if (flag) { ths.mModel.RequestAddCASPart(part, false); CASSelectionGrid.SetSelectionIndex((uint)part.BodyType); } Audio.StartSound("ui_tertiary_button"); }
protected static bool PopulateGrid() { CASClothingCategory ths = CASClothingCategory.gSingleton; if (ths == null) { return(false); } ths.mClothingTypesGrid.Clear(); ths.mCurrentPreset = null; ths.mCurrentFocusedRow = null; ths.mTempFocusedRow = null; ths.mSelectedType = CASClothingRow.SelectedTypes.None; ths.mShareButton.Enabled = false; ths.mTrashButton.Enabled = false; ths.mSaveButton.Enabled = false; ths.mSortButton.Enabled = false; ths.mSortButton.Tag = false; bool hasFilterableContent = false; List <object> parts = new List <object>(); bool compactCAS = false; if (ths.mCurrentPart == BodyTypes.Accessories) { compactCAS = MasterController.Settings.mCompactAccessoryCAS; } else { compactCAS = MasterController.Settings.mCompactClothingCAS; } if (compactCAS) { List <CASParts.PartPreset> triPart = new List <CASParts.PartPreset>(); parts.Add(triPart); foreach (object uncastPart in ths.mPartsList) { if (uncastPart is CASPart) { CASPart part = (CASPart)uncastPart; CASParts.PartPreset preset = new CASParts.PartPreset(part); if (!preset.Valid) { uint num2 = CASUtils.PartDataNumPresets(part.Key); if (num2 > 0) { preset = new CASParts.PartPreset(part, 0); if (!preset.Valid) { preset = null; } } } if (preset == null) { continue; } if (!ths.mContentTypeFilter.ObjectMatchesFilter(preset, ref hasFilterableContent)) { continue; } triPart.Add(preset); if (triPart.Count == 3) { triPart = new List <CASParts.PartPreset>(); parts.Add(triPart); } } } } else { foreach (object part in ths.mPartsList) { if (part is CASPart) { List <CASParts.PartPreset> uniPart = new List <CASParts.PartPreset>(); uniPart.Add(new CASParts.PartPreset((CASPart)part)); parts.Add(uniPart); } else { parts.Add(part); } } } if (ths.PartPresetsList != null) { ths.PartPresetsList.Clear(); } sCompleted.Clear(); sRows.Clear(); ths.mClothingTypesGrid.ItemRowsChanged -= OnItemRowsChanged; ths.mClothingTypesGrid.ItemRowsChanged += OnItemRowsChanged; if (parts.Count == 0) { return(false); } ResourceKey layoutKey = ResourceKey.CreateUILayoutKey("CASClothingRow", 0x0); ths.mClothingTypesGrid.BeginPopulating(AddGridItem, parts, 0x3, layoutKey, null); return(true); }
public static void OnButtonMouseDown(WindowBase sender, UIMouseEventArgs eventArgs) { try { CASClothingCategory ths = CASClothingCategory.gSingleton; if (ths == null) { return; } BodyTypes bodyType = BodyTypes.None; CASClothingCategory.Category category = CASClothingCategory.Category.Count; switch (sender.ID) { case 0x5dbcf11: bodyType = BodyTypes.UpperBody; category = CASClothingCategory.Category.Tops; break; case 0x5dbcf12: bodyType = BodyTypes.LowerBody; category = CASClothingCategory.Category.Bottoms; break; case 0x5dbcf13: bodyType = BodyTypes.Shoes; category = CASClothingCategory.Category.Shoes; break; case 0x5dbcf14: bodyType = BodyTypes.FullBody; category = CASClothingCategory.Category.Outfits; break; case 0x5dbcf90: category = CASClothingCategory.Category.Accessories; break; case 0x5dbcf1b: category = CASClothingCategory.Category.CollarBridle; break; case 0x5dbcf1c: category = CASClothingCategory.Category.Saddles; break; default: return; } if (eventArgs.MouseKey == MouseKeys.kMouseLeft) { if (CASClothingCategory.CurrentTypeCategory != category) { ths.SetTypeCategory(category); eventArgs.mHandled = true; } } else if (eventArgs.MouseKey == MouseKeys.kMouseRight) { if (category != CASClothingCategory.Category.Accessories) { ArrayList list = ths.mModel.GetVisibleCASParts(bodyType, (uint)ths.mCurrentStyleCategory); int count = list.Count; if (count > 0) { CASPart part = (CASPart)list[(int)(count * RandomGen.NextDouble())]; ths.mModel.RequestAddCASPart(part, false); } } eventArgs.mHandled = true; } } catch (Exception e) { Common.Exception("OnButtonMouseDown", e); } }
public override ArrayList GetVisibleCASParts(BodyTypes bodyType, uint categories) { try { List <CASParts.Wrapper> list = SubGetVisibleCASParts(bodyType, categories); //ArrayList list = base.GetVisibleCASParts(bodyType, categories); StackTrace trace = new StackTrace(false); int blackListCount = 0; CASClothingCategory clothingCategory = CASClothingCategory.gSingleton; if (clothingCategory != null) { // Fix for an issue where this listing is never cleared by the Core if (clothingCategory.PartPresetsList != null) { clothingCategory.PartPresetsList.Clear(); } } bool truncate = false; if (list.Count > 0) { bool found = false; foreach (StackFrame frame in trace.GetFrames()) { if (frame.GetMethod().DeclaringType == sDelayedCategoryUpdate) { found = true; break; } } if (!found) { foreach (StackFrame frame in trace.GetFrames()) { if ((frame.GetMethod().DeclaringType == sCASClothingCategory) && (frame.GetMethod().ToString() == "Void HideUnusedIcons()")) { truncate = true; break; } else if ((frame.GetMethod().DeclaringType == sCASClothingCategory) && (frame.GetMethod().ToString() == "Void LoadParts()")) { truncate = true; if ((clothingCategory != null) && (clothingCategory.mClothingTypesGrid != null)) { clothingCategory.mClothingTypesGrid.Clear(); } CASClothingCategoryEx.DelayedCategoryUpdate.Perform(); break; } } if (truncate) { List <CASParts.Wrapper> newList = new List <CASParts.Wrapper>(); newList.Add(list[0]); list = newList; } } } if ((!truncate) && (InvalidPartBooter.HasInvalidParts)) { SimBuilder builder = CASLogic.Instance.mBuilder; CASAgeGenderFlags age = builder.Age; CASAgeGenderFlags gender = builder.Gender; CASAgeGenderFlags species = builder.Species; List <CASParts.Wrapper> newList = new List <CASParts.Wrapper>(); foreach (CASParts.Wrapper part in list) { InvalidPartBase.Reason reason = InvalidPartBooter.Allow(part, age, gender, species, false, (OutfitCategories)categories); if (reason == InvalidPartBase.Reason.None) { newList.Add(part); } else { blackListCount++; } } list.Clear(); list = newList; } ArrayList results = new ArrayList(); foreach (CASParts.Wrapper part in list) { results.Add(part.mPart); } return(results); } catch (Exception e) { Common.Exception("GetVisibleCASParts", e); return(new ArrayList()); } }
protected override bool OnPerform() { Common.StringBuilder msg = new Common.StringBuilder("EditTownCASTask" + Common.NewLine); try { { EditTownLibraryPanel panel = EditTownLibraryPanel.Instance; if ((panel != null) && (panel.mCASButton != null)) { panel.mCASButton.Click -= panel.OnCASClick; panel.mCASButton.Click -= EditTownLibraryPanelEx.OnCASClick; panel.mCASButton.Click += EditTownLibraryPanelEx.OnCASClick; } } msg += "A"; { PlayFlowMenuPanel playFlow = PlayFlowMenuPanel.gSingleton; if ((playFlow != null) && (playFlow.mCASButton != null)) { playFlow.mCASButton.Click -= playFlow.OnMenuButtonClick; playFlow.mCASButton.Click -= PlayFlowMenuPanelEx.OnMenuButtonClick; playFlow.mCASButton.Click += PlayFlowMenuPanelEx.OnMenuButtonClick; } } msg += "C"; { CASClothingCategory category = CASClothingCategory.gSingleton; if (category != null) { category.mTopsButton.Click -= category.OnCategoryButtonClick; category.mBottomsButton.Click -= category.OnCategoryButtonClick; category.mShoesButton.Click -= category.OnCategoryButtonClick; category.mOutfitsButton.Click -= category.OnCategoryButtonClick; category.mAccessoriesButton.Click -= category.OnCategoryButtonClick; category.mHorseBridlesButton.Click -= category.OnCategoryButtonClick; category.mHorseSaddleButton.Click -= category.OnCategoryButtonClick; category.mTopsButton.MouseDown -= CASClothingCategoryEx.OnButtonMouseDown; category.mTopsButton.MouseDown += CASClothingCategoryEx.OnButtonMouseDown; category.mBottomsButton.MouseDown -= CASClothingCategoryEx.OnButtonMouseDown; category.mBottomsButton.MouseDown += CASClothingCategoryEx.OnButtonMouseDown; category.mShoesButton.MouseDown -= CASClothingCategoryEx.OnButtonMouseDown; category.mShoesButton.MouseDown += CASClothingCategoryEx.OnButtonMouseDown; category.mOutfitsButton.MouseDown -= CASClothingCategoryEx.OnButtonMouseDown; category.mOutfitsButton.MouseDown += CASClothingCategoryEx.OnButtonMouseDown; category.mAccessoriesButton.MouseDown -= CASClothingCategoryEx.OnButtonMouseDown; category.mAccessoriesButton.MouseDown += CASClothingCategoryEx.OnButtonMouseDown; category.mHorseBridlesButton.MouseDown -= CASClothingCategoryEx.OnButtonMouseDown; category.mHorseBridlesButton.MouseDown += CASClothingCategoryEx.OnButtonMouseDown; category.mHorseSaddleButton.MouseDown -= CASClothingCategoryEx.OnButtonMouseDown; category.mHorseSaddleButton.MouseDown += CASClothingCategoryEx.OnButtonMouseDown; } } msg += "D"; CASPuck puck = CASPuck.gSingleton; if (puck != null) { CASFamilyScreen familyScreen = CASFamilyScreen.gSingleton; if (familyScreen != null) { Window topLevel = familyScreen.mFamilyTopLevelWin; uint index = 0; WindowBase child = topLevel.GetChildByIndex(index); while (child != null) { CAFThumb thumb = child as CAFThumb; if (thumb != null) { thumb.DragDrop -= familyScreen.OnCAFThumbDragDrop; thumb.DragDrop -= CASFamilyScreenEx.OnCAFThumbDragDrop; thumb.DragDrop += CASFamilyScreenEx.OnCAFThumbDragDrop; } index++; child = topLevel.GetChildByIndex(index); } } if (puck.mGeneticsButton != null) { puck.mGeneticsButton.Enabled = CASPuckEx.CanCreateChild(); } ICASModel cASModel = Responder.Instance.CASModel; if (cASModel != null) { if ((MasterController.Settings.mAllowOverStuffed) && (cASModel.NumInHousehold < CASPuck.kMaxPerHousehold)) { if (puck.mCreateHorseButton != null) { puck.mCreateHorseButton.Enabled = true; puck.mCreateHorseButton.Click -= puck.OnCreateSimClick; puck.mCreateHorseButton.Click -= CASPuckEx.OnCreateSimClick; puck.mCreateHorseButton.Click += CASPuckEx.OnCreateSimClick; } if (puck.mCreateDogButton != null) { puck.mCreateDogButton.Enabled = true; puck.mCreateDogButton.Click -= puck.OnCreateSimClick; puck.mCreateDogButton.Click -= CASPuckEx.OnCreateSimClick; puck.mCreateDogButton.Click += CASPuckEx.OnCreateSimClick; } if (puck.mCreateCatButton != null) { puck.mCreateCatButton.Enabled = true; puck.mCreateCatButton.Click -= puck.OnCreateSimClick; puck.mCreateCatButton.Click -= CASPuckEx.OnCreateSimClick; puck.mCreateCatButton.Click += CASPuckEx.OnCreateSimClick; } if (puck.mCreateSimButton != null) { puck.mCreateSimButton.Enabled = true; puck.mCreateSimButton.Click -= puck.OnCreateSimClick; puck.mCreateSimButton.Click -= CASPuckEx.OnCreateSimClick; puck.mCreateSimButton.Click += CASPuckEx.OnCreateSimClick; } } cASModel.OnSimUpdated -= puck.OnSimUpdated; cASModel.OnSimUpdated -= CASPuckEx.OnSimUpdated; cASModel.OnSimUpdated += CASPuckEx.OnSimUpdated; cASModel.OnSimPreviewChange -= puck.OnSimPreviewChange; cASModel.OnSimPreviewChange -= CASPuckEx.OnSimPreviewChange; cASModel.OnSimPreviewChange += CASPuckEx.OnSimPreviewChange; } } msg += "E"; CASCompositorController controller = CASCompositorController.sController; if (controller != null) { if (controller.mColorsDragButton != null) { controller.mColorsDragButton.MouseDown -= controller.OnMaterialsColorDragMouseDown; controller.mColorsDragButton.MouseDown -= CASCompositorControllerEx.OnMaterialsColorDragMouseDown; controller.mColorsDragButton.MouseDown += CASCompositorControllerEx.OnMaterialsColorDragMouseDown; controller.mColorsDragButton.MouseUp -= controller.OnMaterialsColorDragMouseUp; controller.mColorsDragButton.MouseUp -= CASCompositorControllerEx.OnMaterialsColorDragMouseUp; controller.mColorsDragButton.MouseUp += CASCompositorControllerEx.OnMaterialsColorDragMouseUp; for (uint j = 0x0; j < 0x4; j++) { controller.mColorsPopupButton[j].MouseDown -= controller.OnMaterialsColorGridMouseDown; controller.mColorsPopupButton[j].MouseDown -= CASCompositorControllerEx.OnMaterialsColorGridMouseDown; controller.mColorsPopupButton[j].MouseDown += CASCompositorControllerEx.OnMaterialsColorGridMouseDown; controller.mColorsPopupButton[j].MouseUp -= controller.OnMaterialsColorGridMouseUp; controller.mColorsPopupButton[j].MouseUp -= CASCompositorControllerEx.OnMaterialsColorGridMouseUp; controller.mColorsPopupButton[j].MouseUp += CASCompositorControllerEx.OnMaterialsColorGridMouseUp; } } if (controller.mMaterialsSkewerPatternButton.Length == 4) { for (int i = 0; i < 4; i++) { if (controller.mMaterialsSkewerPatternButton[i] == null) { continue; } controller.mMaterialsSkewerPatternButton[i].MouseDown -= controller.OnMaterialsSkewerGridMouseDown; controller.mMaterialsSkewerPatternButton[i].MouseDown -= CASCompositorControllerEx.OnMaterialsSkewerGridMouseDown; controller.mMaterialsSkewerPatternButton[i].MouseDown += CASCompositorControllerEx.OnMaterialsSkewerGridMouseDown; controller.mMaterialsSkewerPatternButton[i].MouseUp -= controller.OnMaterialsSkewerGridMouseUp; controller.mMaterialsSkewerPatternButton[i].MouseUp -= CASCompositorControllerEx.OnMaterialsSkewerGridMouseUp; controller.mMaterialsSkewerPatternButton[i].MouseUp += CASCompositorControllerEx.OnMaterialsSkewerGridMouseUp; } } } } catch (Exception e) { Common.Exception(msg, e); } return(true); }