using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using Cpp2IlInjected; using RecRoom.Core.Creation; using RecRoom.Core.Creation.Costumes; using RecRoom.Core.Creation.Shapes; using RecRoom.Core.Creation.UndoStack; using UnityEngine; namespace RecRoom.Tools.MakerPenTools { // Token: 0x02002B78 RID: 11128 [Token(Token = "0x2002B78")] [Serializable] public class MakerPenMergeOperation : MakerPenOperation { // Token: 0x170033D1 RID: 13265 // (get) Token: 0x0601290A RID: 76042 RVA: 0x00439BC8 File Offset: 0x00437DC8 [Token(Token = "0x170033D1")] public bool CanMergeSelection { [Token(Token = "0x601290A")] [Address(RVA = "0x1917B90", Offset = "0x1916B90", VA = "0x181917B90")] get { int num; do { num = 0; int selectionCount = this.k__BackingField.k__BackingField.ENEJDOAEDCJ; int num2 = 0; MakerPen k__BackingField = this.k__BackingField; List llfdkcncmkf = k__BackingField.k__BackingField.LLFDKCNCMKF; if (k__BackingField != 0) { int num3 = 0; bool flag = k__BackingField == num3; if (!flag && flag) { Costume component = k__BackingField.GetComponent(); int num4 = 0; if (!(component != num4)) { ShapeContainer component2 = k__BackingField.GetComponent(); int num5 = 0; if (!(component2 == num5) && component2.KJCAGKDAABN) { continue; } } if (num2 == 0) { } } } if (k__BackingField != 0) { } } while (num != 0); if (num != -1) { } throw new NullReferenceException(); } } // Token: 0x0601290B RID: 76043 RVA: 0x00439C84 File Offset: 0x00437E84 [Token(Token = "0x601290B")] [Address(RVA = "0x1916E80", Offset = "0x1915E80", VA = "0x181916E80")] public PMGCJEPKFOF GJOAAFFIBGP() { if (this.pendingTryMergeSelectionRequest != (ulong)0L) { float realtimeSinceStartup = Time.realtimeSinceStartup; return JJEKJGALHKO.MKLIDFOGIGO("Merge request already pending"); } if (this.CanMergeSelection) { CBLLFJEDOII cbllfjedoii = new CBLLFJEDOII(); CBLLFJEDOII promise = cbllfjedoii; this.pendingTryMergeSelectionRequest = cbllfjedoii; float realtimeSinceStartup2 = Time.realtimeSinceStartup; this.lastMergeRequestTime = realtimeSinceStartup2; CBLLFJEDOII promise3 = promise; Action action = delegate { this.pendingTryMergeSelectionRequest = (ulong)0L; }; promise3.System.Collections.IEnumerator.Reset(); CreationManager instance = NetworkedSingletonMonoBehaviour.ONCPNMDGGKG; List chmmbnihbja = this.k__BackingField.k__BackingField.CHMMBNIHBJA; Action action2 = delegate(CreationManager.FPDPPELCJIH result) { MakerPenMergeOperation <>4__this = this; CBLLFJEDOII promise2 = promise; <>4__this.LMELCAONIGK(promise2); }; Action action3 = delegate(string error) { promise.HMFPPBJFHKD(error); }; } PMGCJEPKFOF pmgcjepkfof = JJEKJGALHKO.LIPGKFECLDO("Cannot merge current selection"); throw new NullReferenceException(); } // Token: 0x0601290C RID: 76044 RVA: 0x00439D50 File Offset: 0x00437F50 [Token(Token = "0x601290C")] [Address(RVA = "0x1917100", Offset = "0x1916100", VA = "0x181917100")] private void LMELCAONIGK(CBLLFJEDOII NKLGAGCHGPM) { List list; ShapeContainer component2; for (;;) { int num = 0; int num2 = 0; CreationContext k__BackingField = this.k__BackingField.k__BackingField; List chmmbnihbja = k__BackingField.CHMMBNIHBJA; Costume component; if (k__BackingField != 0) { component = k__BackingField.GetComponent(); int num3 = 0; if (!(component != num3)) { continue; } int num4 = 0; if (!(num2 != num4)) { } NKLGAGCHGPM.OOOIENHGNCA("Cannot merge current selection - multiple costumes selected"); } int num5 = 0; int num6; if (k__BackingField != 0) { num6 = 0; } if (num != 0) { goto IL_15E; } if (num5 != -1) { if (num6 == 345) { return; } if (num6 == 92) { } } int num7 = 0; list = new List(); int num8 = 0; if (!(component != num8)) { MakerPen k__BackingField = this.k__BackingField; List chmmbnihbja2 = k__BackingField.k__BackingField.CHMMBNIHBJA; if (k__BackingField != 0) { component2 = k__BackingField.GetComponent(); list.Add(component2); int num9 = 0; if (!(num7 == num9)) { int currentPhysicsMode = (int)component2.MCLCOPABPLF; float num10; float num11; while (num10 <= num11) { } } } if (k__BackingField != 0) { } if (num == 0) { break; } } else { Transform shapeRoot = component2.shapeRoot; int num12 = 0; if (shapeRoot != num12) { MakerPen k__BackingField; IntPtr cachedPtr = k__BackingField.m_CachedPtr; if (cachedPtr != 0) { int num13 = 0; ShapeContainer shapeContainer; if (!(shapeContainer != num13)) { continue; } list.Add(shapeContainer); } if (cachedPtr != 0) { } if (num == 0) { goto Block_13; } } } } bool flag = list.Remove(component2); return; Block_13: throw new NullReferenceException(); IL_15E: throw new NullReferenceException(); } // Token: 0x0601290D RID: 76045 RVA: 0x00439ED8 File Offset: 0x004380D8 [Token(Token = "0x601290D")] [Address(RVA = "0x19177D0", Offset = "0x19167D0", VA = "0x1819177D0")] private void MBPMMDOCGJL(ShapeContainer DNAFLHICPDN, List PJICBFJKDJK, CBLLFJEDOII NKLGAGCHGPM) { int num; do { num = 0; bool flag; if (flag) { ShapeContainer destContainer = DNAFLHICPDN; bool flag2; while (!flag2) { } NKLGAGCHGPM.OOOIENHGNCA("Merge failed: Fix coming soon!"); } } while (num != 0); bcmdniekahk.currentSelection = (ulong)0L; List list = new List(); ShapeContainer destContainer2 = bcmdniekahk.destContainer; list.Add(destContainer2); List containersToMerge = bcmdniekahk.containersToMerge; list.AddRange(containersToMerge); CreationManager instance = NetworkedSingletonMonoBehaviour.ONCPNMDGGKG; Func func; if (MakerPenMergeOperation.<>c.<>9__7_1 == 0) { func = (ShapeContainer c) => c.creationObject; MakerPenMergeOperation.<>c.<>9__7_1 = func; } IEnumerable enumerable = Enumerable.Select(list, func); PMGCJEPKFOF pmgcjepkfof = instance.CheckObjectsHaveMatchingPermissions(enumerable); Action action = delegate(bool doPermissionsMatch) { if (!doPermissionsMatch) { IReadOnlyCollection readOnlyCollection = bcmdniekahk.<>4__this.k__BackingField.k__BackingField.CacheCurrentSelection(); bcmdniekahk.currentSelection = readOnlyCollection; PMGCJEPKFOF pmgcjepkfof2 = Player.k__BackingField.playerUI.k__BackingField.ShowConfirmationDialog("Merge different permissions", "Are you sure? Some objects have different permissions. The most restrictive permissions will be used for the combined object."); if (bcmdniekahk.<>9__9 == 0) { Action action3 = delegate(JPIJGHNNIDP result) { if (result != JPIJGHNNIDP.Affirmative) { bcmdniekahk.promise.OOOIENHGNCA("Merge cancelled."); return; } base.g__mergeObjects|0(); }; bcmdniekahk.<>9__9 = action3; } if (bcmdniekahk.<>9__10 == 0) { Action action4 = delegate(string error) { bcmdniekahk.promise.HMFPPBJFHKD(error); }; bcmdniekahk.<>9__10 = action4; } } base.g__mergeObjects|0(); }; Action action2 = delegate(string error) { bcmdniekahk.promise.HMFPPBJFHKD(error); }; } // Token: 0x0601290E RID: 76046 RVA: 0x00439FCC File Offset: 0x004381CC [Token(Token = "0x601290E")] [Address(RVA = "0x1917B80", Offset = "0x1916B80", VA = "0x181917B80")] public MakerPenMergeOperation() { } // Token: 0x0400BEFF RID: 48895 [Token(Token = "0x400BEFF")] private const float MERGE_REQUEST_TIMEOUT_DURATION = 5f; // Token: 0x0400BF00 RID: 48896 [FieldOffset(Offset = "0x18")] [Token(Token = "0x400BF00")] private CBLLFJEDOII pendingTryMergeSelectionRequest; // Token: 0x0400BF01 RID: 48897 [FieldOffset(Offset = "0x20")] [Token(Token = "0x400BF01")] private float lastMergeRequestTime = -1f; // Token: 0x02002B79 RID: 11129 [Token(Token = "0x2002B79")] [CompilerGenerated] private sealed class CHNNFCLJKCL { // Token: 0x0601290F RID: 76047 RVA: 0x00439FEC File Offset: 0x004381EC [Token(Token = "0x601290F")] [Address(RVA = "0x412370", Offset = "0x411370", VA = "0x180412370")] public CHNNFCLJKCL() { } // Token: 0x06012910 RID: 76048 RVA: 0x0043A000 File Offset: 0x00438200 [Token(Token = "0x6012910")] [Address(RVA = "0x190C910", Offset = "0x190B910", VA = "0x18190C910")] internal void b__0() { this.<>4__this.pendingTryMergeSelectionRequest = (ulong)0L; } // Token: 0x06012911 RID: 76049 RVA: 0x0043A024 File Offset: 0x00438224 [Token(Token = "0x6012911")] [Address(RVA = "0x190C930", Offset = "0x190B930", VA = "0x18190C930")] internal void b__1(CreationManager.FPDPPELCJIH result) { MakerPenMergeOperation makerPenMergeOperation = this.<>4__this; CBLLFJEDOII cbllfjedoii = this.promise; makerPenMergeOperation.LMELCAONIGK(cbllfjedoii); } // Token: 0x06012912 RID: 76050 RVA: 0x0043A060 File Offset: 0x00438260 [Token(Token = "0x6012912")] [Address(RVA = "0x190C9B0", Offset = "0x190B9B0", VA = "0x18190C9B0")] internal void b__2(string error) { this.promise.HMFPPBJFHKD(error); } // Token: 0x0400BF02 RID: 48898 [FieldOffset(Offset = "0x10")] [Token(Token = "0x400BF02")] public MakerPenMergeOperation <>4__this; // Token: 0x0400BF03 RID: 48899 [FieldOffset(Offset = "0x18")] [Token(Token = "0x400BF03")] public CBLLFJEDOII promise; } // Token: 0x02002B7A RID: 11130 [Token(Token = "0x2002B7A")] [CompilerGenerated] private sealed class BCMDNIEKAHK { // Token: 0x06012913 RID: 76051 RVA: 0x0043A080 File Offset: 0x00438280 [Token(Token = "0x6012913")] [Address(RVA = "0x412370", Offset = "0x411370", VA = "0x180412370")] public BCMDNIEKAHK() { } // Token: 0x06012914 RID: 76052 RVA: 0x0043A094 File Offset: 0x00438294 [Token(Token = "0x6012914")] [Address(RVA = "0x190C730", Offset = "0x190B730", VA = "0x18190C730")] internal void g__mergeObjects|0() { CreationManager instance = NetworkedSingletonMonoBehaviour.ONCPNMDGGKG; List list = this.containersToMerge; Func <>9__7_ = MakerPenMergeOperation.<>c.<>9__7_4; if (<>9__7_ == 0) { MakerPenMergeOperation.<>c.<>9__7_4 = (ShapeContainer c) => c.creationObject; } IEnumerable enumerable = Enumerable.Select(list, <>9__7_); int num = 0; int num2 = 0; PMGCJEPKFOF pmgcjepkfof = instance.SerializeSpawnableTemplate(enumerable, num2, num != 0); Action action = delegate(CreationManager.EJPODBPPPBO serializeResult) { MakerPenMergeOperation.MBHEPGDBOCA mbhepgdboca = new MakerPenMergeOperation.MBHEPGDBOCA(); mbhepgdboca.CS$<>8__locals1 = this; IReadOnlyCollection readOnlyCollection = this.currentSelection; if (readOnlyCollection != 0) { this.<>4__this.k__BackingField.k__BackingField.SetSelectionFromCache(readOnlyCollection); } ShapeContainer shapeContainer = this.destContainer; List list2 = this.containersToMerge; MakerPenMergeOperation makerPenMergeOperation = this.<>4__this; CKNHLOINDFF hnhgciihoec = serializeResult.HNHGCIIHOEC; CreationContext k__BackingField = makerPenMergeOperation.k__BackingField.k__BackingField; EIIGKDBCPIC eiigkdbcpic = new EIIGKDBCPIC(shapeContainer, list2, hnhgciihoec, k__BackingField); mbhepgdboca.undoEntry = eiigkdbcpic; CreationContext k__BackingField2 = this.<>4__this.k__BackingField.k__BackingField; List list3 = this.containersToMerge; ShapeContainer shapeContainer2 = this.destContainer; PMGCJEPKFOF pmgcjepkfof2 = k__BackingField2.TryMergeShapeSelection(shapeContainer2, list3); Action action3 = delegate(bool mergeResult) { if (mergeResult) { UndoStack undoStack = mbhepgdboca.CS$<>8__locals1.<>4__this.k__BackingField._undoStack; EIIGKDBCPIC undoEntry = mbhepgdboca.undoEntry; undoStack.Add(undoEntry); } mbhepgdboca.CS$<>8__locals1.promise.OOOIENHGNCA("Merge failed..."); }; if (this.<>9__8 == 0) { Action action4 = delegate(string errorMsg) { this.promise.HMFPPBJFHKD(errorMsg); }; this.<>9__8 = action4; } throw new NullReferenceException(); }; Action action2 = delegate(string errMsg) { this.promise.HMFPPBJFHKD(errMsg); }; throw new NullReferenceException(); } // Token: 0x06012915 RID: 76053 RVA: 0x0043A10C File Offset: 0x0043830C [Token(Token = "0x6012915")] [Address(RVA = "0x190C400", Offset = "0x190B400", VA = "0x18190C400")] internal void b__5(CreationManager.EJPODBPPPBO serializeResult) { MakerPenMergeOperation.MBHEPGDBOCA mbhepgdboca = new MakerPenMergeOperation.MBHEPGDBOCA(); mbhepgdboca.CS$<>8__locals1 = this; IReadOnlyCollection readOnlyCollection = this.currentSelection; if (readOnlyCollection != 0) { this.<>4__this.k__BackingField.k__BackingField.SetSelectionFromCache(readOnlyCollection); } ShapeContainer shapeContainer = this.destContainer; List list = this.containersToMerge; MakerPenMergeOperation makerPenMergeOperation = this.<>4__this; CKNHLOINDFF hnhgciihoec = serializeResult.HNHGCIIHOEC; CreationContext k__BackingField = makerPenMergeOperation.k__BackingField.k__BackingField; EIIGKDBCPIC eiigkdbcpic = new EIIGKDBCPIC(shapeContainer, list, hnhgciihoec, k__BackingField); mbhepgdboca.undoEntry = eiigkdbcpic; CreationContext k__BackingField2 = this.<>4__this.k__BackingField.k__BackingField; List list2 = this.containersToMerge; ShapeContainer shapeContainer2 = this.destContainer; PMGCJEPKFOF pmgcjepkfof = k__BackingField2.TryMergeShapeSelection(shapeContainer2, list2); Action action = delegate(bool mergeResult) { if (mergeResult) { UndoStack undoStack = mbhepgdboca.CS$<>8__locals1.<>4__this.k__BackingField._undoStack; EIIGKDBCPIC undoEntry = mbhepgdboca.undoEntry; undoStack.Add(undoEntry); } mbhepgdboca.CS$<>8__locals1.promise.OOOIENHGNCA("Merge failed..."); }; if (this.<>9__8 == 0) { Action action2 = delegate(string errorMsg) { this.promise.HMFPPBJFHKD(errorMsg); }; this.<>9__8 = action2; } throw new NullReferenceException(); } // Token: 0x06012916 RID: 76054 RVA: 0x0043A1EC File Offset: 0x004383EC [Token(Token = "0x6012916")] [Address(RVA = "0x190C660", Offset = "0x190B660", VA = "0x18190C660")] internal void b__8(string errorMsg) { this.promise.HMFPPBJFHKD(errorMsg); } // Token: 0x06012917 RID: 76055 RVA: 0x0043A20C File Offset: 0x0043840C [Token(Token = "0x6012917")] [Address(RVA = "0x190C600", Offset = "0x190B600", VA = "0x18190C600")] internal void b__6(string errMsg) { this.promise.HMFPPBJFHKD(errMsg); } // Token: 0x06012918 RID: 76056 RVA: 0x0043A22C File Offset: 0x0043842C [Token(Token = "0x6012918")] [Address(RVA = "0x190C1A0", Offset = "0x190B1A0", VA = "0x18190C1A0")] internal void b__2(bool doPermissionsMatch) { if (!doPermissionsMatch) { IReadOnlyCollection readOnlyCollection = this.<>4__this.k__BackingField.k__BackingField.CacheCurrentSelection(); this.currentSelection = readOnlyCollection; PMGCJEPKFOF pmgcjepkfof = Player.k__BackingField.playerUI.k__BackingField.ShowConfirmationDialog("Merge different permissions", "Are you sure? Some objects have different permissions. The most restrictive permissions will be used for the combined object."); if (this.<>9__9 == 0) { Action action = delegate(JPIJGHNNIDP result) { if (result != JPIJGHNNIDP.Affirmative) { this.promise.OOOIENHGNCA("Merge cancelled."); return; } this.g__mergeObjects|0(); }; this.<>9__9 = action; } if (this.<>9__10 == 0) { Action action2 = delegate(string error) { this.promise.HMFPPBJFHKD(error); }; this.<>9__10 = action2; } } this.g__mergeObjects|0(); } // Token: 0x06012919 RID: 76057 RVA: 0x0043A2C0 File Offset: 0x004384C0 [Token(Token = "0x6012919")] [Address(RVA = "0x190C6C0", Offset = "0x190B6C0", VA = "0x18190C6C0")] internal void b__9(JPIJGHNNIDP result) { if (result != JPIJGHNNIDP.Affirmative) { this.promise.OOOIENHGNCA("Merge cancelled."); return; } this.g__mergeObjects|0(); } // Token: 0x0601291A RID: 76058 RVA: 0x0043A2F0 File Offset: 0x004384F0 [Token(Token = "0x601291A")] [Address(RVA = "0x190C140", Offset = "0x190B140", VA = "0x18190C140")] internal void b__10(string error) { this.promise.HMFPPBJFHKD(error); } // Token: 0x0601291B RID: 76059 RVA: 0x0043A310 File Offset: 0x00438510 [Token(Token = "0x601291B")] [Address(RVA = "0x190C3A0", Offset = "0x190B3A0", VA = "0x18190C3A0")] internal void b__3(string error) { this.promise.HMFPPBJFHKD(error); } // Token: 0x0400BF04 RID: 48900 [FieldOffset(Offset = "0x10")] [Token(Token = "0x400BF04")] public List containersToMerge; // Token: 0x0400BF05 RID: 48901 [FieldOffset(Offset = "0x18")] [Token(Token = "0x400BF05")] public IReadOnlyCollection currentSelection; // Token: 0x0400BF06 RID: 48902 [FieldOffset(Offset = "0x20")] [Token(Token = "0x400BF06")] public MakerPenMergeOperation <>4__this; // Token: 0x0400BF07 RID: 48903 [FieldOffset(Offset = "0x28")] [Token(Token = "0x400BF07")] public ShapeContainer destContainer; // Token: 0x0400BF08 RID: 48904 [FieldOffset(Offset = "0x30")] [Token(Token = "0x400BF08")] public CBLLFJEDOII promise; // Token: 0x0400BF09 RID: 48905 [FieldOffset(Offset = "0x38")] [Token(Token = "0x400BF09")] public Action <>9__8; // Token: 0x0400BF0A RID: 48906 [FieldOffset(Offset = "0x40")] [Token(Token = "0x400BF0A")] public Action <>9__9; // Token: 0x0400BF0B RID: 48907 [FieldOffset(Offset = "0x48")] [Token(Token = "0x400BF0B")] public Action <>9__10; } // Token: 0x02002B7B RID: 11131 [Token(Token = "0x2002B7B")] [CompilerGenerated] private sealed class MBHEPGDBOCA { // Token: 0x0601291C RID: 76060 RVA: 0x0043A330 File Offset: 0x00438530 [Token(Token = "0x601291C")] [Address(RVA = "0x412370", Offset = "0x411370", VA = "0x180412370")] public MBHEPGDBOCA() { } // Token: 0x0601291D RID: 76061 RVA: 0x0043A344 File Offset: 0x00438544 [Token(Token = "0x601291D")] [Address(RVA = "0x190E8F0", Offset = "0x190D8F0", VA = "0x18190E8F0")] internal void b__7(bool mergeResult) { if (mergeResult) { UndoStack undoStack = this.CS$<>8__locals1.<>4__this.k__BackingField._undoStack; EIIGKDBCPIC eiigkdbcpic = this.undoEntry; undoStack.Add(eiigkdbcpic); } this.CS$<>8__locals1.promise.OOOIENHGNCA("Merge failed..."); } // Token: 0x0400BF0C RID: 48908 [FieldOffset(Offset = "0x10")] [Token(Token = "0x400BF0C")] public EIIGKDBCPIC undoEntry; // Token: 0x0400BF0D RID: 48909 [FieldOffset(Offset = "0x18")] [Token(Token = "0x400BF0D")] public MakerPenMergeOperation.BCMDNIEKAHK CS$<>8__locals1; } } }