using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using ULTRAKILL.Portal;
using ULTRAKILL.Portal.Geometry;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("ULTRAPortalCreator")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ULTRAPortalCreator")]
[assembly: AssemblyCopyright("Copyright © 2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("d7af370e-d4df-4c88-b3f6-0b11c1ebbd7e")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.1", FrameworkDisplayName = ".NET Framework 4.7.1")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace ULTRAPortalCreator;
public struct PortalTransform
{
public Vector3 position;
public Vector3 rotation;
public Vector2 scale;
public PortalTransform(Vector3 pos, Vector3 euler, Vector2 scale)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
position = pos;
rotation = euler;
this.scale = scale;
}
}
public struct PortalResult
{
public GameObject whole;
public GameObject portalA;
public GameObject portalB;
public Portal portal;
internal PortalResult(GameObject portalA, GameObject portalB, GameObject whole, Portal portal)
{
this.whole = whole;
this.portalA = portalA;
this.portalB = portalB;
this.portal = portal;
}
}
public struct PortalConstructorArgs
{
public PortalTransform entrance;
public PortalTransform exit;
public bool doubleSided;
public bool makeGroup;
public PortalConstructorArgs(PortalTransform entrance, PortalTransform exit, bool doubleSided = false, bool makeGroup = true)
{
this.entrance = entrance;
this.exit = exit;
this.doubleSided = doubleSided;
this.makeGroup = makeGroup;
}
}
public static class PortalConstructor
{
public static PortalResult MakePortal(PortalConstructorArgs args)
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
PortalTransform exit = args.exit;
Transform transform = new GameObject("Exit").transform;
transform.position = exit.position;
transform.eulerAngles = exit.rotation;
PortalResult result = MakePortal(args.entrance, transform, exit.scale, args.makeGroup);
if (args.doubleSided)
{
PortalConstructorArgs portalConstructorArgs = args;
Quaternion val = Quaternion.Euler(args.entrance.rotation);
val *= Quaternion.Euler(0f, 180f, 0f);
portalConstructorArgs.entrance.rotation = ((Quaternion)(ref val)).eulerAngles;
PortalResult portalResult = MakePortal(portalConstructorArgs.entrance, transform, exit.scale, mkeGroup: false);
portalResult.portalA.transform.parent = result.whole.transform;
((Object)portalResult.portalA.transform).name = "PortalDoubleside";
}
transform.parent = result.whole.transform;
return result;
}
public static PortalResult MakePortal(PortalTransform entrance, Transform exit, Vector2 scale = default(Vector2), bool mkeGroup = true)
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Expected O, but got Unknown
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Unknown result type (might be due to invalid IL or missing references)
//IL_0078: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_00db: Unknown result type (might be due to invalid IL or missing references)
//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
GameObject val = null;
if (mkeGroup)
{
val = new GameObject("Portal");
}
GameObject val2 = new GameObject("Entrance", new Type[1] { typeof(Portal) });
if (mkeGroup)
{
val2.transform.parent = val.transform;
}
val2.transform.position = entrance.position;
val2.transform.eulerAngles = entrance.rotation;
Portal component = val2.GetComponent<Portal>();
Vector2 val3 = scale;
if (entrance.scale != Vector2.zero)
{
val3 = entrance.scale;
}
component.shape = (IPortalShape)(object)new PlaneShape
{
width = val3.x,
height = val3.y
};
component.entry = val2.transform;
component.exit = exit;
component.entryTravelFlags = (PortalTravellerFlags)62;
component.exitTravelFlags = (PortalTravellerFlags)62;
component.renderSettings = (PortalSideFlags)2;
component.maxRecursions = 2;
component.canHearAudio = true;
return new PortalResult(val2, ((Component)exit).gameObject, val, component);
}
}