Decompiled source of ULTRAPORTAL v1.0.0

BepInEx/plugins/ULTRAPORTALS.dll

Decompiled 2 months ago
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);
	}
}