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: 0x02002A8F RID: 10895 [Token(Token = "0x2002A8F")] [Serializable] public class MakerPenMergeOperation : MakerPenOperation { // Token: 0x1700331D RID: 13085 // (get) Token: 0x060124CD RID: 74957 RVA: 0x0042FED4 File Offset: 0x0042E0D4 [Token(Token = "0x1700331D")] public bool CanMergeSelection { [Token(Token = "0x60124CD")] [Address(RVA = "0x1309CD0", Offset = "0x1308AD0", VA = "0x181309CD0")] 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: 0x060124CE RID: 74958 RVA: 0x0042FF90 File Offset: 0x0042E190 [Token(Token = "0x60124CE")] [Address(RVA = "0x1308FC0", Offset = "0x1307DC0", VA = "0x181308FC0")] 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: 0x060124CF RID: 74959 RVA: 0x0043005C File Offset: 0x0042E25C [Token(Token = "0x60124CF")] [Address(RVA = "0x1309240", Offset = "0x1308040", VA = "0x181309240")] 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: 0x060124D0 RID: 74960 RVA: 0x004301E4 File Offset: 0x0042E3E4 [Token(Token = "0x60124D0")] [Address(RVA = "0x1309910", Offset = "0x1308710", VA = "0x181309910")] 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: 0x060124D1 RID: 74961 RVA: 0x004302D8 File Offset: 0x0042E4D8 [Token(Token = "0x60124D1")] [Address(RVA = "0x1309CC0", Offset = "0x1308AC0", VA = "0x181309CC0")] public MakerPenMergeOperation() { } // Token: 0x0400BCEE RID: 48366 [Token(Token = "0x400BCEE")] private const float MERGE_REQUEST_TIMEOUT_DURATION = 5f; // Token: 0x0400BCEF RID: 48367 [FieldOffset(Offset = "0x18")] [Token(Token = "0x400BCEF")] private CBLLFJEDOII pendingTryMergeSelectionRequest; // Token: 0x0400BCF0 RID: 48368 [FieldOffset(Offset = "0x20")] [Token(Token = "0x400BCF0")] private float lastMergeRequestTime = -1f; // Token: 0x02002A90 RID: 10896 [Token(Token = "0x2002A90")] [CompilerGenerated] private sealed class CHNNFCLJKCL { // Token: 0x060124D2 RID: 74962 RVA: 0x004302F8 File Offset: 0x0042E4F8 [Token(Token = "0x60124D2")] [Address(RVA = "0x3F5100", Offset = "0x3F3F00", VA = "0x1803F5100")] public CHNNFCLJKCL() { } // Token: 0x060124D3 RID: 74963 RVA: 0x0043030C File Offset: 0x0042E50C [Token(Token = "0x60124D3")] [Address(RVA = "0x12FF3F0", Offset = "0x12FE1F0", VA = "0x1812FF3F0")] internal void b__0() { this.<>4__this.pendingTryMergeSelectionRequest = (ulong)0L; } // Token: 0x060124D4 RID: 74964 RVA: 0x00430330 File Offset: 0x0042E530 [Token(Token = "0x60124D4")] [Address(RVA = "0x12FF410", Offset = "0x12FE210", VA = "0x1812FF410")] internal void b__1(CreationManager.FPDPPELCJIH result) { MakerPenMergeOperation makerPenMergeOperation = this.<>4__this; CBLLFJEDOII cbllfjedoii = this.promise; makerPenMergeOperation.LMELCAONIGK(cbllfjedoii); } // Token: 0x060124D5 RID: 74965 RVA: 0x0043036C File Offset: 0x0042E56C [Token(Token = "0x60124D5")] [Address(RVA = "0x12FF490", Offset = "0x12FE290", VA = "0x1812FF490")] internal void b__2(string error) { this.promise.HMFPPBJFHKD(error); } // Token: 0x0400BCF1 RID: 48369 [FieldOffset(Offset = "0x10")] [Token(Token = "0x400BCF1")] public MakerPenMergeOperation <>4__this; // Token: 0x0400BCF2 RID: 48370 [FieldOffset(Offset = "0x18")] [Token(Token = "0x400BCF2")] public CBLLFJEDOII promise; } // Token: 0x02002A91 RID: 10897 [Token(Token = "0x2002A91")] [CompilerGenerated] private sealed class BCMDNIEKAHK { // Token: 0x060124D6 RID: 74966 RVA: 0x0043038C File Offset: 0x0042E58C [Token(Token = "0x60124D6")] [Address(RVA = "0x3F5100", Offset = "0x3F3F00", VA = "0x1803F5100")] public BCMDNIEKAHK() { } // Token: 0x060124D7 RID: 74967 RVA: 0x004303A0 File Offset: 0x0042E5A0 [Token(Token = "0x60124D7")] [Address(RVA = "0x12FF210", Offset = "0x12FE010", VA = "0x1812FF210")] 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: 0x060124D8 RID: 74968 RVA: 0x00430418 File Offset: 0x0042E618 [Token(Token = "0x60124D8")] [Address(RVA = "0x12FEEE0", Offset = "0x12FDCE0", VA = "0x1812FEEE0")] 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: 0x060124D9 RID: 74969 RVA: 0x004304F8 File Offset: 0x0042E6F8 [Token(Token = "0x60124D9")] [Address(RVA = "0x12FF140", Offset = "0x12FDF40", VA = "0x1812FF140")] internal void b__8(string errorMsg) { this.promise.HMFPPBJFHKD(errorMsg); } // Token: 0x060124DA RID: 74970 RVA: 0x00430518 File Offset: 0x0042E718 [Token(Token = "0x60124DA")] [Address(RVA = "0x12FF0E0", Offset = "0x12FDEE0", VA = "0x1812FF0E0")] internal void b__6(string errMsg) { this.promise.HMFPPBJFHKD(errMsg); } // Token: 0x060124DB RID: 74971 RVA: 0x00430538 File Offset: 0x0042E738 [Token(Token = "0x60124DB")] [Address(RVA = "0x12FEC80", Offset = "0x12FDA80", VA = "0x1812FEC80")] 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: 0x060124DC RID: 74972 RVA: 0x004305CC File Offset: 0x0042E7CC [Token(Token = "0x60124DC")] [Address(RVA = "0x12FF1A0", Offset = "0x12FDFA0", VA = "0x1812FF1A0")] internal void b__9(JPIJGHNNIDP result) { if (result != JPIJGHNNIDP.Affirmative) { this.promise.OOOIENHGNCA("Merge cancelled."); return; } this.g__mergeObjects|0(); } // Token: 0x060124DD RID: 74973 RVA: 0x004305FC File Offset: 0x0042E7FC [Token(Token = "0x60124DD")] [Address(RVA = "0x12FEC20", Offset = "0x12FDA20", VA = "0x1812FEC20")] internal void b__10(string error) { this.promise.HMFPPBJFHKD(error); } // Token: 0x060124DE RID: 74974 RVA: 0x0043061C File Offset: 0x0042E81C [Token(Token = "0x60124DE")] [Address(RVA = "0x12FEE80", Offset = "0x12FDC80", VA = "0x1812FEE80")] internal void b__3(string error) { this.promise.HMFPPBJFHKD(error); } // Token: 0x0400BCF3 RID: 48371 [FieldOffset(Offset = "0x10")] [Token(Token = "0x400BCF3")] public List containersToMerge; // Token: 0x0400BCF4 RID: 48372 [FieldOffset(Offset = "0x18")] [Token(Token = "0x400BCF4")] public IReadOnlyCollection currentSelection; // Token: 0x0400BCF5 RID: 48373 [FieldOffset(Offset = "0x20")] [Token(Token = "0x400BCF5")] public MakerPenMergeOperation <>4__this; // Token: 0x0400BCF6 RID: 48374 [FieldOffset(Offset = "0x28")] [Token(Token = "0x400BCF6")] public ShapeContainer destContainer; // Token: 0x0400BCF7 RID: 48375 [FieldOffset(Offset = "0x30")] [Token(Token = "0x400BCF7")] public CBLLFJEDOII promise; // Token: 0x0400BCF8 RID: 48376 [FieldOffset(Offset = "0x38")] [Token(Token = "0x400BCF8")] public Action <>9__8; // Token: 0x0400BCF9 RID: 48377 [FieldOffset(Offset = "0x40")] [Token(Token = "0x400BCF9")] public Action <>9__9; // Token: 0x0400BCFA RID: 48378 [FieldOffset(Offset = "0x48")] [Token(Token = "0x400BCFA")] public Action <>9__10; } // Token: 0x02002A92 RID: 10898 [Token(Token = "0x2002A92")] [CompilerGenerated] private sealed class MBHEPGDBOCA { // Token: 0x060124DF RID: 74975 RVA: 0x0043063C File Offset: 0x0042E83C [Token(Token = "0x60124DF")] [Address(RVA = "0x3F5100", Offset = "0x3F3F00", VA = "0x1803F5100")] public MBHEPGDBOCA() { } // Token: 0x060124E0 RID: 74976 RVA: 0x00430650 File Offset: 0x0042E850 [Token(Token = "0x60124E0")] [Address(RVA = "0x13051C0", Offset = "0x1303FC0", VA = "0x1813051C0")] 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: 0x0400BCFB RID: 48379 [FieldOffset(Offset = "0x10")] [Token(Token = "0x400BCFB")] public EIIGKDBCPIC undoEntry; // Token: 0x0400BCFC RID: 48380 [FieldOffset(Offset = "0x18")] [Token(Token = "0x400BCFC")] public MakerPenMergeOperation.BCMDNIEKAHK CS$<>8__locals1; } } }