using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Net.Security;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Cryptography.X509Certificates;
using System.Security.Permissions;
using System.Threading.Tasks;
using AudioImportLib;
using BoneLib;
using BoneLib.BoneMenu;
using BoneLib.Notifications;
using HarmonyLib;
using Il2CppInterop.Runtime;
using Il2CppInterop.Runtime.InteropTypes;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using Il2CppMK.Glow.URP;
using Il2CppSLZ.Bonelab;
using Il2CppSLZ.Data;
using Il2CppSLZ.Marrow;
using Il2CppSLZ.Marrow.Audio;
using Il2CppSLZ.Marrow.Combat;
using Il2CppSLZ.Marrow.Data;
using Il2CppSLZ.Marrow.Interaction;
using Il2CppSLZ.Marrow.Pool;
using Il2CppSLZ.Marrow.Warehouse;
using Il2CppSLZ.VRMK;
using Il2CppSystem;
using Il2CppSystem.Collections.Generic;
using Il2CppTMPro;
using MelonLoader;
using MelonLoader.Utils;
using Microsoft.CodeAnalysis;
using NEP.MonoDirector;
using NEP.MonoDirector.Actors;
using NEP.MonoDirector.Audio;
using NEP.MonoDirector.Cameras;
using NEP.MonoDirector.Compatibility;
using NEP.MonoDirector.Core;
using NEP.MonoDirector.Data;
using NEP.MonoDirector.Downloading;
using NEP.MonoDirector.Patches;
using NEP.MonoDirector.Proxy;
using NEP.MonoDirector.State;
using NEP.MonoDirector.UI;
using Newtonsoft.Json;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.Events;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
using UnityEngine.UI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("MonoDirector")]
[assembly: AssemblyDescription("A movie/photo making utility for BONELAB!")]
[assembly: AssemblyCompany("Not Enough Photons")]
[assembly: AssemblyProduct("MonoDirector")]
[assembly: AssemblyCopyright("Developed by Not Enough Photons")]
[assembly: AssemblyTrademark("Not Enough Photons")]
[assembly: AssemblyFileVersion("1.2.9")]
[assembly: MelonInfo(typeof(Main), "MonoDirector", "1.2.9", "Not Enough Photons", "https://bonelab.thunderstore.io/c/bonelab/p/NotEnoughPhotons/MonoDirector")]
[assembly: MelonGame("Stress Level Zero", "BONELAB")]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.2.9.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
internal sealed class NullableAttribute : Attribute
{
public readonly byte[] NullableFlags;
public NullableAttribute(byte P_0)
{
NullableFlags = new byte[1] { P_0 };
}
public NullableAttribute(byte[] P_0)
{
NullableFlags = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
internal sealed class NullableContextAttribute : Attribute
{
public readonly byte Flag;
public NullableContextAttribute(byte P_0)
{
Flag = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
public static class SeatPatches
{
[HarmonyPatch(typeof(Seat))]
[HarmonyPatch("Register")]
public static class Register
{
public static void Postfix(Seat __instance, RigManager rM)
{
Logging.Msg("Register Rig");
Actor activeActor = Recorder.Instance.ActiveActor;
if (activeActor != null)
{
activeActor.RecordAction(delegate
{
activeActor.ParentToSeat(__instance);
});
}
}
}
[HarmonyPatch(typeof(Seat))]
[HarmonyPatch("DeRegister")]
public static class DeRegister
{
public static void Postfix()
{
Logging.Msg("Deregister Rig");
Actor activeActor = Recorder.Instance.ActiveActor;
if (activeActor != null)
{
activeActor.RecordAction(delegate
{
activeActor.UnparentSeat();
});
}
}
}
}
namespace NEP.MonoDirector
{
public static class BuildInfo
{
public const int Epoch = 1714117050;
public const string GitCommit = "ec2844ecb154a593f0ef77324339a262a2fbed2d";
public const string Name = "MonoDirector";
public const string Description = "A movie/photo making utility for BONELAB!";
public const string Author = "Not Enough Photons";
public const string Company = "Not Enough Photons";
public const string Version = "1.2.9";
public const string DownloadLink = "https://bonelab.thunderstore.io/c/bonelab/p/NotEnoughPhotons/MonoDirector";
}
public static class Constants
{
public static readonly string dirBase = Path.Combine(MelonEnvironment.UserDataDirectory, "Not Enough Photons");
public static readonly string dirMod = Path.Combine(dirBase, "MonoDirector");
public static readonly string dirImg = Path.Combine(dirMod, "Images/");
public static readonly string dirSFX = Path.Combine(dirMod, "SFX/");
public static RigManager RigManager => Player.RigManager;
}
public static class Events
{
public static Action<Actor> OnActorCasted;
public static Action<Actor> OnActorUncasted;
public static Action<Prop> OnPropCreated;
public static Action<Prop> OnPropRemoved;
public static Action OnSessionBegin;
public static Action OnSessionEnd;
public static Action OnPrePlayback;
public static Action OnPreRecord;
public static Action OnPlay;
public static Action OnPause;
public static Action OnStopPlayback;
public static Action OnStartRecording;
public static Action OnStopRecording;
public static Action OnPlaybackTick;
public static Action OnRecordTick;
public static Action OnPrePhotograph;
public static Action OnPhotograph;
public static Action OnPostPhotograph;
public static Action OnTimerCountdown;
public static Action<PlayState> OnPlayStateSet;
public static Action<CameraMode> OnCameraModeSet;
public static Action OnPreSnapshot;
public static void FlushActions()
{
OnActorCasted = null;
OnSessionBegin = null;
OnSessionEnd = null;
OnPrePlayback = null;
OnPreRecord = null;
OnPlay = null;
OnPause = null;
OnStopPlayback = null;
OnStartRecording = null;
OnStopRecording = null;
OnPlaybackTick = null;
OnRecordTick = null;
OnPreSnapshot = null;
OnPrePhotograph = null;
OnPostPhotograph = null;
OnPhotograph = null;
OnPlayStateSet = null;
OnCameraModeSet = null;
OnTimerCountdown = null;
}
}
public class Main : MelonMod
{
public override void OnInitializeMelon()
{
Bootstrap.Initialize();
}
public override void OnUpdate()
{
Bootstrap.Update();
}
public override void OnDeinitializeMelon()
{
Bootstrap.Shutdown();
}
}
public class Photographer
{
[CompilerGenerated]
private sealed class <PhotographRoutine>d__11 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
public Photographer <>4__this;
private int <i>5__2;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <PhotographRoutine>d__11(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_0064: Expected O, but got Unknown
int num = <>1__state;
Photographer photographer = <>4__this;
switch (num)
{
default:
return false;
case 0:
<>1__state = -1;
Events.OnPrePhotograph?.Invoke();
<i>5__2 = 0;
goto IL_0084;
case 1:
<>1__state = -1;
<i>5__2++;
goto IL_0084;
case 2:
{
<>1__state = -1;
return false;
}
IL_0084:
if (<i>5__2 < photographer.Delay)
{
Events.OnTimerCountdown?.Invoke();
<>2__current = (object)new WaitForSeconds((float)photographer.Delay);
<>1__state = 1;
return true;
}
Events.OnPhotograph?.Invoke();
Events.OnPostPhotograph?.Invoke();
<>2__current = null;
<>1__state = 2;
return true;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
private Actor m_activeActor;
private Actor m_lastActor;
public int Delay { get; set; }
public Photographer()
{
Events.OnPrePhotograph = (Action)Delegate.Combine(Events.OnPrePhotograph, new Action(OnPrePhotograph));
Events.OnPhotograph = (Action)Delegate.Combine(Events.OnPhotograph, new Action(OnPhotograph));
Events.OnPostPhotograph = (Action)Delegate.Combine(Events.OnPostPhotograph, new Action(OnPostPhotograph));
}
public void SetActor(Avatar avatar)
{
m_lastActor = m_activeActor;
m_activeActor = new Actor(avatar);
}
public void OnPrePhotograph()
{
}
public void OnPhotograph()
{
}
public void OnPostPhotograph()
{
}
[IteratorStateMachine(typeof(<PhotographRoutine>d__11))]
public IEnumerator PhotographRoutine()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <PhotographRoutine>d__11(0)
{
<>4__this = this
};
}
}
public static class Settings
{
public static class Camera
{
public static float cameraSpeedSlow;
public static float cameraSpeedFast;
public static float cameraSmoothRotationDelta;
public static bool useHeadCamera;
public static bool handheldLockXAxis;
public static bool handheldLockYAxis;
public static bool handheldLockZAxis;
public static bool handheldKinematicOnRelease;
}
public static class World
{
public static int delay = 2;
public static bool useMicrophone = false;
public static bool micPlayback = false;
public static float playbackRate = 1f;
public static float fps = 60f;
public static bool ignoreSlomo = false;
public static bool temporalScaling = false;
public static bool recordActors = true;
}
public static class Debug
{
public static bool debugEnabled = true;
public static bool useKeys = true;
}
}
}
namespace NEP.MonoDirector.UI
{
public static class ActorFrameManager
{
private static GameObject container;
private static Dictionary<ActorProxy, GameObject> frames;
private static List<GameObject> loadedFrameObjects;
private static List<GameObject> activeFrames;
public static void Initialize()
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: Expected O, but got Unknown
//IL_0077: Unknown result type (might be due to invalid IL or missing references)
frames = new Dictionary<ActorProxy, GameObject>();
loadedFrameObjects = new List<GameObject>();
activeFrames = new List<GameObject>();
container = new GameObject("[MonoDirector] - Actor Frame Container");
container.transform.SetParent(Bootstrap.MainContainerObject.transform);
for (int i = 0; i < 32; i++)
{
GameObject val = Object.Instantiate<GameObject>(BundleLoader.FrameObject);
val.SetActive(false);
val.transform.SetParent(container.transform);
val.transform.localPosition = Vector3.zero;
loadedFrameObjects.Add(val);
}
}
public static void CleanUp()
{
frames.Clear();
loadedFrameObjects.Clear();
activeFrames.Clear();
}
public static GameObject AddFrameToActor(ActorProxy proxy)
{
//IL_0061: 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)
if (frames.ContainsKey(proxy))
{
return null;
}
GameObject val = ((IEnumerable<GameObject>)loadedFrameObjects).FirstOrDefault((Func<GameObject, bool>)((GameObject frame) => !activeFrames.Contains(frame)));
val.gameObject.SetActive(true);
val.transform.SetParent(((Component)proxy.Collider).transform);
val.transform.localPosition = Vector3.zero;
val.transform.localScale = proxy.Collider.size;
frames.Add(proxy, val);
activeFrames.Add(val);
return val;
}
public static void RemoveFrameFromActor(ActorProxy proxy)
{
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
if (frames.ContainsKey(proxy))
{
Poolee component = frames[proxy].GetComponent<Poolee>();
component.Despawn();
((Component)component).gameObject.SetActive(false);
((Component)component).transform.parent = container.transform;
((Component)component).transform.localScale = Vector3.one;
frames.Remove(proxy);
activeFrames.Remove(((Component)component).gameObject);
}
}
internal static void OnFrameSpawned(GameObject frameObject)
{
frameObject.SetActive(false);
frameObject.transform.SetParent(container.transform);
loadedFrameObjects.Add(frameObject);
}
}
[RegisterTypeInIl2Cpp]
public class ActorPanel : MonoBehaviour
{
private Transform m_root;
private TextMeshProUGUI m_actorNameText;
private Button m_recastButton;
private Button m_deleteButton;
private Action m_onRecastClicked;
private Action m_onDeleteClicked;
private Vector3 m_targetPosition;
public ActorPanel(IntPtr ptr)
: base(ptr)
{
}
private void Awake()
{
m_root = ((Component)this).transform.GetChild(0);
m_actorNameText = ((Component)m_root.Find("ActorName")).GetComponent<TextMeshProUGUI>();
m_recastButton = ((Component)m_root.Find("Management/Recast")).GetComponent<Button>();
m_deleteButton = ((Component)m_root.Find("Management/Delete")).GetComponent<Button>();
m_onRecastClicked = OnRecastClicked;
m_onDeleteClicked = OnDeleteClicked;
((Component)m_root).gameObject.SetActive(false);
}
private void OnEnable()
{
Director.OnActorSelected += OnActorSelected;
Director.OnActorDeselected += OnActorDeselected;
((UnityEvent)m_recastButton.onClick).AddListener(UnityAction.op_Implicit(m_onRecastClicked));
((UnityEvent)m_deleteButton.onClick).AddListener(UnityAction.op_Implicit(m_onDeleteClicked));
}
private void OnDisable()
{
Director.OnActorSelected -= OnActorSelected;
Director.OnActorDeselected -= OnActorDeselected;
((UnityEvent)m_recastButton.onClick).RemoveListener(UnityAction.op_Implicit(m_onRecastClicked));
((UnityEvent)m_deleteButton.onClick).RemoveListener(UnityAction.op_Implicit(m_onDeleteClicked));
}
private void Update()
{
//IL_000f: 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_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
Quaternion val = Quaternion.LookRotation(((Rig)Constants.RigManager.physicsRig).m_head.position - ((Component)this).transform.position);
Vector3 eulerAngles = ((Quaternion)(ref val)).eulerAngles;
((Component)this).transform.position = Vector3.Lerp(((Component)this).transform.position, m_targetPosition, 8f * Time.deltaTime);
((Component)this).transform.rotation = Quaternion.Euler(0f, eulerAngles.y, 0f);
}
private void OnActorSelected(Actor actor)
{
//IL_0022: 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_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
((Component)m_root).gameObject.SetActive(true);
m_targetPosition = actor.ActorBody.Chest.transform.position + Vector3.right;
((TMP_Text)m_actorNameText).text = actor.ActorName;
}
private void OnActorDeselected(Actor actor)
{
((Component)m_root).gameObject.SetActive(false);
}
private void OnRecastClicked()
{
Director.Recast(Director.SelectedActor);
((Component)m_root).gameObject.SetActive(false);
}
private void OnDeleteClicked()
{
Director.RemoveActor(Director.SelectedActor);
((Component)m_root).gameObject.SetActive(false);
}
}
public static class InfoInterfaceManager
{
public static void Initialize()
{
WarehouseLoader.SpawnFromBarcode(WarehouseLoader.infoInterfaceBarcode);
}
}
[RegisterTypeInIl2Cpp]
public class InformationInterface : MonoBehaviour
{
private GameObject microIconsObject;
private GameObject timecodeObject;
private GameObject playmodeObject;
private GameObject countdownObject;
private GameObject micObject;
private GameObject micOffObject;
private TextMeshProUGUI timecodeText;
private TextMeshProUGUI playmodeText;
private TextMeshProUGUI countdownText;
private Animator countdownAnimator;
private PlayState playState;
private bool showUI;
private bool showIcons;
private bool showTimecode;
private bool showPlaymode;
public static InformationInterface Instance { get; private set; }
public bool ShowUI
{
get
{
return showUI;
}
set
{
showUI = value;
ShowIcons = showUI;
ShowTimecode = showUI;
ShowPlaymode = showUI;
}
}
public bool ShowIcons
{
get
{
return showIcons;
}
set
{
showIcons = value;
GameObject obj = microIconsObject;
if (obj != null)
{
obj.SetActive(showIcons);
}
}
}
public bool ShowTimecode
{
get
{
return showTimecode;
}
set
{
showTimecode = value;
GameObject obj = timecodeObject;
if (obj != null)
{
obj.SetActive(showTimecode);
}
}
}
public bool ShowPlaymode
{
get
{
return showPlaymode;
}
set
{
showPlaymode = value;
GameObject obj = playmodeObject;
if (obj != null)
{
obj.SetActive(showPlaymode);
}
}
}
public InformationInterface(IntPtr ptr)
: base(ptr)
{
}
private void Awake()
{
Instance = this;
microIconsObject = ((Component)((Component)this).transform.Find("MicroIcons")).gameObject;
timecodeObject = ((Component)((Component)this).transform.Find("Timecode")).gameObject;
playmodeObject = ((Component)((Component)this).transform.Find("Playmode")).gameObject;
countdownObject = ((Component)((Component)this).transform.Find("Countdown")).gameObject;
micObject = ((Component)microIconsObject.transform.Find("Microphone/Mic")).gameObject;
micOffObject = ((Component)microIconsObject.transform.Find("Microphone/Disabled")).gameObject;
timecodeText = ((Component)timecodeObject.transform.Find("Time")).GetComponent<TextMeshProUGUI>();
playmodeText = ((Component)playmodeObject.transform.Find("Mode")).GetComponent<TextMeshProUGUI>();
countdownText = ((Component)countdownObject.transform.Find("Counter")).GetComponent<TextMeshProUGUI>();
countdownAnimator = countdownObject.GetComponent<Animator>();
}
private void Start()
{
Events.OnPlayStateSet = (Action<PlayState>)Delegate.Combine(Events.OnPlayStateSet, new Action<PlayState>(OnPlayStateSet));
Events.OnPrePlayback = (Action)Delegate.Combine(Events.OnPrePlayback, new Action(OnSceneStart));
Events.OnPlaybackTick = (Action)Delegate.Combine(Events.OnPlaybackTick, new Action(OnSceneTick));
Events.OnStopPlayback = (Action)Delegate.Combine(Events.OnStopPlayback, new Action(OnSceneEnd));
Events.OnPreRecord = (Action)Delegate.Combine(Events.OnPreRecord, new Action(OnSceneStart));
Events.OnStartRecording = (Action)Delegate.Combine(Events.OnStartRecording, new Action(OnStartRecording));
Events.OnRecordTick = (Action)Delegate.Combine(Events.OnRecordTick, new Action(OnSceneTick));
Events.OnStopRecording = (Action)Delegate.Combine(Events.OnStopRecording, new Action(OnSceneEnd));
Events.OnTimerCountdown = (Action)Delegate.Combine(Events.OnTimerCountdown, new Action(OnTimerCountdown));
showIcons = false;
showTimecode = false;
showPlaymode = false;
microIconsObject.SetActive(false);
timecodeObject.SetActive(false);
playmodeObject.SetActive(false);
countdownObject.SetActive(false);
}
private void Update()
{
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: 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)
micOffObject.SetActive(!Settings.World.useMicrophone);
Transform head = Player.Head;
((Component)this).transform.position = Vector3.Lerp(((Component)this).transform.position, head.position + head.forward, 16f * Time.deltaTime);
((Component)this).transform.localScale = new Vector3(-1f, 1f, 1f);
((Component)this).transform.LookAt(head);
}
public void OnSceneStart()
{
if (Director.PlayState == PlayState.Prerecording)
{
((TMP_Text)timecodeText).text = "0s";
countdownObject.SetActive(true);
}
}
public void OnStartRecording()
{
countdownObject.SetActive(false);
}
public void OnSceneTick()
{
float num = 0f;
if (playState == PlayState.Playing)
{
num = Playback.Instance.PlaybackTime;
}
if (playState == PlayState.Recording)
{
num = Recorder.Instance.RecordingTime;
}
((TMP_Text)timecodeText).text = num.ToString("0.000") + "s";
}
public void OnSceneEnd()
{
}
public void OnTimerCountdown()
{
countdownObject.SetActive(false);
int num = ((Director.PlayState == PlayState.Prerecording) ? Recorder.Instance.Countdown : Playback.Instance.Countdown);
int num2 = Settings.World.delay - num;
((TMP_Text)countdownText).text = num2.ToString();
countdownObject.SetActive(true);
countdownAnimator.Play("Countdown");
}
private void OnPlayStateSet(PlayState playState)
{
this.playState = playState;
((TMP_Text)playmodeText).text = playState.ToString();
}
}
public class ActorDisplayPage
{
public List<Actor> actorEntries;
private ActorsPage pageInstance;
public int capacity { get; private set; } = 8;
public int count { get; private set; }
public ActorDisplayPage()
{
actorEntries = new List<Actor>();
}
public void AddActor(Actor actor)
{
if (count + 1 > capacity)
{
pageInstance.OnPageFilled(actor);
return;
}
actorEntries.Add(actor);
count++;
}
public void RemoveActor(Actor actor)
{
if (count == 0)
{
count = 0;
return;
}
actorEntries.Remove(actor);
count--;
}
public void LinkToView(ActorsPage instance)
{
pageInstance = instance;
}
}
[RegisterTypeInIl2Cpp]
public class ActorEntry : MonoBehaviour
{
public RawImage avatarImage;
public TextMeshProUGUI avatarNameText;
public Button avatarButton;
private Actor actor;
public ActorEntry(IntPtr ptr)
: base(ptr)
{
}
public void Show()
{
((Component)this).gameObject.SetActive(true);
}
public void Hide()
{
((Component)this).gameObject.SetActive(false);
}
public Actor GetActor()
{
return actor;
}
public void SetActor(Actor actor)
{
this.actor = actor;
}
}
[RegisterTypeInIl2Cpp]
public class ActorSettingsPage : MonoBehaviour
{
private MDMenu menu;
private RawImage actorPortrait;
private TextMeshProUGUI actorNameText;
private TextMeshProUGUI visiblityButtonText;
private Button visibilityButton;
private Button recastButton;
private Button deleteButton;
private Button deletePropsButton;
private Actor actor;
private bool initialized;
public ActorSettingsPage(IntPtr ptr)
: base(ptr)
{
}
public void Initialize(MDMenu menu)
{
if (!initialized)
{
this.menu = menu;
actorPortrait = ((Component)((Component)this).transform.GetChild(0)).GetComponent<RawImage>();
actorNameText = ((Component)((Component)this).transform.GetChild(1)).GetComponent<TextMeshProUGUI>();
Transform val = ((Component)this).transform.Find("OptionsGroup");
visibilityButton = ((Component)val.GetChild(0)).GetComponent<Button>();
visiblityButtonText = ((Component)((Component)visibilityButton).transform.GetChild(0)).GetComponent<TextMeshProUGUI>();
recastButton = ((Component)val.GetChild(1)).GetComponent<Button>();
deleteButton = ((Component)val.GetChild(2)).GetComponent<Button>();
deletePropsButton = ((Component)val.GetChild(3)).GetComponent<Button>();
((UnityEvent)visibilityButton.onClick).AddListener(UnityAction.op_Implicit((Action)delegate
{
OnShowButtonClicked();
}));
((UnityEvent)recastButton.onClick).AddListener(UnityAction.op_Implicit((Action)delegate
{
OnRecastButtonClicked();
}));
((UnityEvent)deleteButton.onClick).AddListener(UnityAction.op_Implicit((Action)delegate
{
OnDeleteButtonClicked();
}));
((UnityEvent)deletePropsButton.onClick).AddListener(UnityAction.op_Implicit((Action)delegate
{
OnDeletePropsButtonClicked();
}));
}
}
public void UpdateInformation(Actor actor)
{
this.actor = actor;
((TMP_Text)actorNameText).text = this.actor.ActorName;
}
public void OnDeleteButtonClicked()
{
actor.Delete();
MDMenu.Instance.PreviousPage();
}
public void OnDeletePropsButtonClicked()
{
Director.ClearLastProps();
}
public void OnRecastButtonClicked()
{
Director.Recast(actor);
}
public void OnShowButtonClicked()
{
bool activeInHierarchy = ((Component)actor.ClonedAvatar).gameObject.activeInHierarchy;
((TMP_Text)visiblityButtonText).text = (activeInHierarchy ? "Show" : "Hide");
((Component)actor.ClonedAvatar).gameObject.SetActive(!activeInHierarchy);
}
}
[RegisterTypeInIl2Cpp]
public class ActorsPage : MonoBehaviour
{
private List<ActorDisplayPage> displayPages;
private ActorDisplayPage currentDisplayPage;
private MDMenu menu;
private ActorSettingsPage settingsPage;
private ActorEntry[] actorEntries;
private Transform castListContainer;
private bool initialized;
private int pageIndex;
public int PageIndex => pageIndex + 1;
public int PageCount => displayPages.Count;
public ActorsPage(IntPtr ptr)
: base(ptr)
{
}
private void Start()
{
Events.OnActorCasted = (Action<Actor>)Delegate.Combine(Events.OnActorCasted, new Action<Actor>(OnActorCreated));
Events.OnActorUncasted = (Action<Actor>)Delegate.Combine(Events.OnActorUncasted, new Action<Actor>(OnActorRemoved));
}
public void Initialize(MDMenu menu)
{
if (initialized)
{
return;
}
this.menu = menu;
castListContainer = ((Component)this).transform.GetChild(0);
settingsPage = ((Component)((Component)this).transform.GetChild(1)).GetComponent<ActorSettingsPage>();
actorEntries = new ActorEntry[castListContainer.childCount];
for (int i = 0; i < actorEntries.Length; i++)
{
GameObject gameObject = ((Component)castListContainer.GetChild(i)).gameObject;
ActorEntry entry = gameObject.AddComponent<ActorEntry>();
entry.avatarImage = ((Component)gameObject.transform.GetChild(0)).GetComponent<RawImage>();
entry.avatarNameText = ((Component)gameObject.transform.GetChild(1)).GetComponent<TextMeshProUGUI>();
entry.avatarButton = gameObject.GetComponent<Button>();
((UnityEvent)entry.avatarButton.onClick).AddListener(UnityAction.op_Implicit((Action)delegate
{
OnActorSelected(entry);
}));
actorEntries[i] = entry;
gameObject.SetActive(false);
}
((Component)castListContainer).gameObject.SetActive(true);
((Component)settingsPage).gameObject.SetActive(false);
displayPages = new List<ActorDisplayPage>();
currentDisplayPage = new ActorDisplayPage();
currentDisplayPage.LinkToView(this);
displayPages.Add(currentDisplayPage);
}
public void OnActorCreated(Actor actor)
{
ActorEntry first = GetFirst();
UpdateEntry(actor, first);
displayPages?.Last().AddActor(actor);
}
public void OnActorRemoved(Actor actor)
{
ActorEntry actorEntry = null;
for (int i = 0; i < actorEntries.Length; i++)
{
if (((Component)actorEntries[i]).gameObject.activeSelf && actorEntries[i].GetActor() == actor)
{
actorEntry = actorEntries[i];
break;
}
}
if ((Object)(object)actorEntry == (Object)null)
{
Logging.Warn("Target actor entry not found! There might be a problem with the UI.");
}
else
{
actorEntry.Hide();
}
}
public void OnPageFilled(Actor actor)
{
ActorDisplayPage actorDisplayPage = new ActorDisplayPage();
actorDisplayPage.LinkToView(this);
actorDisplayPage.AddActor(actor);
displayPages.Add(actorDisplayPage);
}
public void PreviousPage()
{
if (pageIndex == 0)
{
pageIndex = 0;
return;
}
ClearEntries();
UpdatePage(displayPages[--pageIndex]);
}
public void NextPage()
{
if (pageIndex == displayPages.Count - 1)
{
pageIndex = displayPages.Count - 1;
return;
}
ClearEntries();
UpdatePage(displayPages[++pageIndex]);
}
public void GoBack()
{
((Component)settingsPage).gameObject.SetActive(false);
((Component)castListContainer).gameObject.SetActive(true);
}
private void UpdatePage(ActorDisplayPage page)
{
currentDisplayPage = page;
int count = currentDisplayPage.actorEntries.Count;
for (int i = 0; i < count; i++)
{
UpdateEntry(currentDisplayPage.actorEntries[i], actorEntries[i]);
}
}
private void OnActorSelected(ActorEntry entry)
{
((Component)castListContainer).gameObject.SetActive(false);
settingsPage.UpdateInformation(entry.GetActor());
menu.OpenPage("ActorSettings");
}
private void UpdateEntry(Actor actor, ActorEntry entry)
{
if (!((Object)(object)entry == (Object)null))
{
((TMP_Text)entry.avatarNameText).text = actor.ActorName;
entry.SetActor(actor);
((Component)entry).gameObject.SetActive(true);
}
}
private void ClearEntries()
{
for (int i = 0; i < actorEntries.Length; i++)
{
((Component)actorEntries[i]).gameObject.SetActive(false);
}
}
private ActorEntry GetFirst()
{
for (int i = 0; i < actorEntries.Length; i++)
{
if (!((Component)actorEntries[i]).gameObject.activeInHierarchy)
{
return actorEntries[i];
}
}
return null;
}
}
[RegisterTypeInIl2Cpp]
public class MDFooter : MonoBehaviour
{
private Button previousPageButton;
private Button nextPageButton;
private Button goBackButton;
private TextMeshProUGUI pageText;
private ActorsPage actorsPage;
public MDFooter(IntPtr ptr)
: base(ptr)
{
}
private void Awake()
{
previousPageButton = ((Component)((Component)this).transform.Find("PreviousPage")).GetComponent<Button>();
nextPageButton = ((Component)((Component)this).transform.Find("NextPage")).GetComponent<Button>();
goBackButton = ((Component)((Component)this).transform.Find("GoBack")).GetComponent<Button>();
pageText = ((Component)((Component)this).transform.Find("PageText")).GetComponent<TextMeshProUGUI>();
}
public void LinkToActorView(ActorsPage actorsPage)
{
this.actorsPage = actorsPage;
((UnityEvent)previousPageButton.onClick).AddListener(UnityAction.op_Implicit((Action)delegate
{
OnPreviousPageClicked();
}));
((UnityEvent)nextPageButton.onClick).AddListener(UnityAction.op_Implicit((Action)delegate
{
OnNextPageClicked();
}));
((UnityEvent)goBackButton.onClick).AddListener(UnityAction.op_Implicit((Action)delegate
{
OnGoBackClicked();
}));
}
public void UnlinkToActorView()
{
}
private void OnPreviousPageClicked()
{
actorsPage.PreviousPage();
((TMP_Text)pageText).text = $"Page {actorsPage.PageIndex}/{actorsPage.PageCount}";
}
private void OnNextPageClicked()
{
actorsPage.NextPage();
((TMP_Text)pageText).text = $"Page {actorsPage.PageIndex}/{actorsPage.PageCount}";
}
private void OnGoBackClicked()
{
actorsPage.GoBack();
}
}
[RegisterTypeInIl2Cpp]
public class MDMenu : MonoBehaviour
{
private GameObject page_Menu;
private GameObject page_Playhead;
private GameObject page_Actors;
private GameObject page_Settings;
private GameObject page_ActorPage;
private MDFooter footer;
private Transform contentContainer;
private Transform pageContainer;
private Grip grip;
private Rigidbody rb;
private string startingPage;
private string currentPage;
private string lastPage;
public static MDMenu Instance { get; private set; }
public MDMenu(IntPtr ptr)
: base(ptr)
{
}
private void Awake()
{
Instance = this;
rb = ((Component)this).GetComponent<Rigidbody>();
contentContainer = ((Component)this).transform.Find("Content");
pageContainer = contentContainer.GetChild(0);
Transform val = ((Component)this).transform.Find("Footer");
Transform val2 = pageContainer.Find("Menu");
Transform val3 = pageContainer.Find("Playhead");
Transform val4 = pageContainer.Find("Actors");
Transform val5 = pageContainer.Find("Settings");
Transform val6 = val4.Find("ActorSettings");
Transform val7 = ((Component)this).transform.Find("GripBall");
page_Menu = ((val2 != null) ? ((Component)val2).gameObject : null);
page_Playhead = ((val3 != null) ? ((Component)val3).gameObject : null);
page_Actors = ((val4 != null) ? ((Component)val4).gameObject : null);
page_Settings = ((val5 != null) ? ((Component)val5).gameObject : null);
page_ActorPage = ((val6 != null) ? ((Component)val6).gameObject : null);
GameObject obj = page_Menu;
if (obj != null)
{
obj.AddComponent<MenuPage>().Initialize(this);
}
GameObject obj2 = page_Playhead;
if (obj2 != null)
{
obj2.AddComponent<PlayheadPage>().Initialize();
}
GameObject obj3 = page_ActorPage;
if (obj3 != null)
{
obj3.AddComponent<ActorSettingsPage>().Initialize(this);
}
GameObject obj4 = page_Actors;
if (obj4 != null)
{
obj4.AddComponent<ActorsPage>().Initialize(this);
}
GameObject obj5 = page_Settings;
if (obj5 != null)
{
obj5.AddComponent<SettingsPage>().Initialize(this);
}
footer = ((Component)val).gameObject.AddComponent<MDFooter>();
startingPage = "Actors";
footer.LinkToActorView(page_Actors.GetComponent<ActorsPage>());
grip = ((Component)val7).GetComponent<Grip>();
Grip obj6 = grip;
obj6.attachedHandDelegate += HandDelegate.op_Implicit((Action<Hand>)delegate
{
rb.isKinematic = false;
});
Grip obj7 = grip;
obj7.detachedHandDelegate += HandDelegate.op_Implicit((Action<Hand>)delegate
{
rb.isKinematic = true;
});
}
private void OnEnable()
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: 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)
((Component)this).transform.position = ((Rig)Player.PhysicsRig).m_chest.position + Vector3.forward;
((Component)this).transform.LookAt(Player.Head);
if (lastPage == null)
{
OpenPage(startingPage);
}
else
{
OpenPage(lastPage);
}
}
public void OpenPage(string page)
{
lastPage = currentPage;
switch (page)
{
case "Menu":
{
GameObject obj21 = page_Menu;
if (obj21 != null)
{
obj21.SetActive(true);
}
GameObject obj22 = page_Playhead;
if (obj22 != null)
{
obj22.SetActive(false);
}
GameObject obj23 = page_Actors;
if (obj23 != null)
{
obj23.SetActive(false);
}
GameObject obj24 = page_ActorPage;
if (obj24 != null)
{
obj24.SetActive(false);
}
GameObject obj25 = page_Settings;
if (obj25 != null)
{
obj25.SetActive(false);
}
currentPage = page;
break;
}
case "Playhead":
{
GameObject obj16 = page_Menu;
if (obj16 != null)
{
obj16.SetActive(false);
}
GameObject obj17 = page_Playhead;
if (obj17 != null)
{
obj17.SetActive(true);
}
GameObject obj18 = page_Actors;
if (obj18 != null)
{
obj18.SetActive(false);
}
GameObject obj19 = page_ActorPage;
if (obj19 != null)
{
obj19.SetActive(false);
}
GameObject obj20 = page_Settings;
if (obj20 != null)
{
obj20.SetActive(false);
}
currentPage = page;
break;
}
case "Actors":
{
GameObject obj6 = page_Menu;
if (obj6 != null)
{
obj6.SetActive(false);
}
GameObject obj7 = page_Playhead;
if (obj7 != null)
{
obj7.SetActive(false);
}
GameObject obj8 = page_Actors;
if (obj8 != null)
{
obj8.SetActive(true);
}
GameObject obj9 = page_ActorPage;
if (obj9 != null)
{
obj9.SetActive(false);
}
GameObject obj10 = page_Settings;
if (obj10 != null)
{
obj10.SetActive(false);
}
currentPage = page;
break;
}
case "Settings":
{
GameObject obj11 = page_Menu;
if (obj11 != null)
{
obj11.SetActive(false);
}
GameObject obj12 = page_Playhead;
if (obj12 != null)
{
obj12.SetActive(false);
}
GameObject obj13 = page_Actors;
if (obj13 != null)
{
obj13.SetActive(false);
}
GameObject obj14 = page_ActorPage;
if (obj14 != null)
{
obj14.SetActive(false);
}
GameObject obj15 = page_Settings;
if (obj15 != null)
{
obj15.SetActive(true);
}
currentPage = page;
break;
}
case "ActorSettings":
{
GameObject obj = page_Menu;
if (obj != null)
{
obj.SetActive(false);
}
GameObject obj2 = page_Playhead;
if (obj2 != null)
{
obj2.SetActive(false);
}
GameObject obj3 = page_Actors;
if (obj3 != null)
{
obj3.SetActive(true);
}
GameObject obj4 = page_ActorPage;
if (obj4 != null)
{
obj4.SetActive(true);
}
GameObject obj5 = page_Settings;
if (obj5 != null)
{
obj5.SetActive(false);
}
break;
}
default:
throw new Exception("Invalid page!");
}
MonoBehaviour.print(Object.op_Implicit(lastPage));
}
public void PreviousPage()
{
OpenPage(lastPage);
}
public void Hide()
{
((Component)this).gameObject.SetActive(false);
}
public void Show()
{
((Component)this).gameObject.SetActive(true);
}
}
[RegisterTypeInIl2Cpp]
public class MenuPage : MonoBehaviour
{
private MDMenu menu;
private Button button_Playhead;
private Button button_Actors;
private Button button_Settings;
private Button button_Exit;
private bool initialized;
public MenuPage(IntPtr ptr)
: base(ptr)
{
}
public void Initialize(MDMenu menu)
{
if (!initialized)
{
button_Playhead = ((Component)((Component)this).transform.GetChild(0)).GetComponent<Button>();
button_Actors = ((Component)((Component)this).transform.GetChild(1)).GetComponent<Button>();
button_Settings = ((Component)((Component)this).transform.GetChild(2)).GetComponent<Button>();
button_Exit = ((Component)((Component)this).transform.GetChild(3)).GetComponent<Button>();
}
}
public void SetRoot(MDMenu menu)
{
this.menu = menu;
}
}
[RegisterTypeInIl2Cpp]
public class PlayheadPage : MonoBehaviour
{
private Button button_Record;
private Button button_Play;
private Button button_Stop;
private bool initialized;
public PlayheadPage(IntPtr ptr)
: base(ptr)
{
}
public void Initialize()
{
if (!initialized)
{
button_Record = ((Component)((Component)this).transform.Find("Record")).GetComponent<Button>();
button_Play = ((Component)((Component)this).transform.Find("Play")).GetComponent<Button>();
button_Stop = ((Component)((Component)this).transform.Find("Stop")).GetComponent<Button>();
}
}
public void DispatchRecord()
{
}
public void DispatchPlay()
{
}
public void DispatchStop()
{
}
}
[RegisterTypeInIl2Cpp]
public class SettingsPage : MonoBehaviour
{
private MDMenu menu;
private Button button_Audio;
private Button button_Camera;
private Button button_World;
private Button button_Debug;
private Button button_Credits;
private GameObject page_Audio;
private GameObject page_Camera;
private GameObject page_Credits;
private Transform optionsContainer;
private Transform pageContainer;
private bool initialized;
public SettingsPage(IntPtr ptr)
: base(ptr)
{
}
public void Initialize(MDMenu menu)
{
if (!initialized)
{
optionsContainer = ((Component)this).transform.GetChild(0);
pageContainer = ((Component)this).transform.GetChild(1);
button_Audio = ((Component)optionsContainer.GetChild(0)).GetComponent<Button>();
button_Camera = ((Component)optionsContainer.GetChild(1)).GetComponent<Button>();
button_World = ((Component)optionsContainer.GetChild(2)).GetComponent<Button>();
button_Debug = ((Component)optionsContainer.GetChild(3)).GetComponent<Button>();
button_Credits = ((Component)optionsContainer.GetChild(4)).GetComponent<Button>();
page_Audio = ((Component)pageContainer.GetChild(0)).gameObject;
page_Camera = ((Component)pageContainer.GetChild(1)).gameObject;
page_Credits = ((Component)pageContainer.GetChild(2)).gameObject;
((Component)optionsContainer).gameObject.SetActive(true);
((Component)pageContainer).gameObject.SetActive(false);
}
}
public void OpenPage(string page)
{
switch (page)
{
case "Audio":
page_Audio.SetActive(true);
page_Camera.SetActive(false);
page_Credits.SetActive(false);
break;
case "Camera":
page_Audio.SetActive(false);
page_Camera.SetActive(true);
page_Credits.SetActive(false);
break;
case "Credits":
page_Audio.SetActive(false);
page_Camera.SetActive(false);
page_Credits.SetActive(true);
break;
default:
throw new Exception("Invalid options page!");
}
((Component)optionsContainer).gameObject.SetActive(false);
((Component)pageContainer).gameObject.SetActive(true);
}
}
internal static class MDBoneMenu
{
internal static Page rootCategory;
internal static Page mdCategory;
internal static Page playbackCategory;
internal static Page actorCategory;
internal static Page settingsCategory;
internal static void Initialize()
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
rootCategory = Page.Root.CreatePage("Not Enough Photons", Color.white, 0, true);
mdCategory = rootCategory.CreatePage("Mono<color=red>Director</color>", Color.white, 0, true);
playbackCategory = mdCategory.CreatePage("Playback", Color.white, 0, true);
actorCategory = mdCategory.CreatePage("Actors", Color.white, 0, true);
settingsCategory = mdCategory.CreatePage("Settings", Color.white, 0, true);
BuildPlaybackMenu(playbackCategory);
BuildActorMenu(actorCategory);
BuildSettingsMenu(settingsCategory);
}
private static void BuildPlaybackMenu(Page category)
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
category.CreateFunction("Record", Color.red, (Action)delegate
{
Director.Record();
});
category.CreateFunction("Play", Color.green, (Action)delegate
{
Director.Play();
});
category.CreateFunction("Stop", Color.red, (Action)delegate
{
Director.Stop();
});
}
private static void BuildActorMenu(Page category)
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
category.CreateFunction("Remove All Actors", Color.red, (Action)delegate
{
//IL_0000: 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_000f: 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_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Expected O, but got Unknown
Color primary2 = Color.red * 0.5f;
Color secondary2 = Color.red * 0.1f;
Menu.DisplayDialog(new DialogData
{
Confirm = delegate
{
Director.RemoveAllActors();
},
Message = "Are you sure? This cannot be undone.",
Primary = primary2,
Secondary = secondary2
});
Director.RemoveAllActors();
});
category.CreateFunction("Clear Scene", Color.red, (Action)delegate
{
//IL_0000: 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_000f: 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_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Expected O, but got Unknown
Color primary = Color.red * 0.5f;
Color secondary = Color.red * 0.1f;
Menu.DisplayDialog(new DialogData
{
Confirm = delegate
{
Director.ClearScene();
},
Message = "Are you sure? This cannot be undone.",
Primary = primary,
Secondary = secondary
});
});
}
private static void BuildSettingsMenu(Page category)
{
//IL_0006: 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_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: 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)
Page val = category.CreatePage("Audio", Color.white, 0, true);
if (ModCompatibility.HasWideEye || !HelperMethods.IsAndroid())
{
BuildCameraCategory(category.CreatePage("Camera", Color.white, 0, true));
}
Page category2 = category.CreatePage("Tools", Color.white, 0, true);
Page category3 = category.CreatePage("UI", Color.white, 0, true);
val.CreateBool("Use Microphone", Color.white, false, (Action<bool>)delegate(bool value)
{
Settings.World.useMicrophone = value;
});
val.CreateBool("Mic Playback", Color.white, false, (Action<bool>)delegate(bool value)
{
Settings.World.micPlayback = value;
});
BuildToolCategory(category2);
BuildUIMenu(category3);
}
private static void BuildCameraCategory(Page category)
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: 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_009e: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
//IL_0109: Unknown result type (might be due to invalid IL or missing references)
//IL_0120: Unknown result type (might be due to invalid IL or missing references)
Page obj = category.CreatePage("Camera Modes", Color.white, 0, true);
Page headModeCategory = category.CreatePage("Head Mode Settings", Color.white, 0, true);
Page freeModeCategory = category.CreatePage("Free Camera Settings", Color.white, 0, true);
obj.CreateFunction("Mode: None", Color.white, (Action)delegate
{
CameraRigManager.Instance.CameraMode = CameraMode.None;
});
obj.CreateFunction("Mode: Handheld", Color.white, (Action)delegate
{
CameraRigManager.Instance.CameraMode = CameraMode.Handheld;
});
obj.CreateFunction("Mode: Free", Color.white, (Action)delegate
{
CameraRigManager.Instance.CameraMode = CameraMode.Free;
});
obj.CreateFunction("Mode: Head", Color.white, (Action)delegate
{
CameraRigManager.Instance.CameraMode = CameraMode.Head;
});
BuildHeadModeCategory(headModeCategory);
BuildFreeModeCategory(freeModeCategory);
BuildVFXCategory(category.CreatePage("VFX", Color.white, 0, true));
category.CreateBool("Kinematic On Release", Color.white, false, (Action<bool>)delegate(bool value)
{
Settings.Camera.handheldKinematicOnRelease = value;
});
}
private static void BuildToolCategory(Page category)
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: 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_00b8: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_011a: Unknown result type (might be due to invalid IL or missing references)
category.CreateFloat("Playback Speed", Color.white, 1f, 0.1f, float.NegativeInfinity, float.PositiveInfinity, (Action<float>)delegate(float value)
{
Playback.Instance.PlaybackRate = value;
});
category.CreateInt("Delay", Color.white, 5, 1, 0, 30, (Action<int>)delegate(int value)
{
Settings.World.delay = value;
});
category.CreateInt("FPS", Color.white, 60, 5, 5, 160, (Action<int>)delegate(int value)
{
Settings.World.fps = value;
});
category.CreateBool("Ignore Slomo", Color.white, false, (Action<bool>)delegate(bool value)
{
Settings.World.ignoreSlomo = value;
});
category.CreateBool("Temporal Scaling", Color.white, true, (Action<bool>)delegate(bool value)
{
Settings.World.temporalScaling = value;
});
category.CreateBool("Record Actors", Color.white, true, (Action<bool>)delegate(bool value)
{
Settings.World.recordActors = value;
});
}
private static void BuildUIMenu(Page category)
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0037: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: 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)
category.CreateBool("Show UI", Color.white, false, (Action<bool>)delegate(bool value)
{
InformationInterface.Instance.ShowUI = value;
});
category.CreateBool("Show Timecode", Color.white, false, (Action<bool>)delegate(bool value)
{
InformationInterface.Instance.ShowTimecode = value;
});
category.CreateBool("Show Play Mode", Color.white, false, (Action<bool>)delegate(bool value)
{
InformationInterface.Instance.ShowPlaymode = value;
});
category.CreateBool("Show Icons", Color.white, false, (Action<bool>)delegate(bool value)
{
InformationInterface.Instance.ShowIcons = value;
});
}
private static void BuildHeadModeCategory(Page headModeCategory)
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
headModeCategory.CreateFloat("Interpolation", Color.white, 4f, 1f, 0f, 64f, (Action<float>)delegate(float value)
{
CameraRigManager.Instance.CameraSmoothness = value;
});
headModeCategory.CreateEnum("Position", Color.white, (Enum)BodyPart.Head, (Action<Enum>)delegate(Enum bone)
{
CameraRigManager.Instance.FollowCamera.SetFollowBone((BodyPart)(object)bone);
});
}
private static void BuildFreeModeCategory(Page freeModeCategory)
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_0116: Unknown result type (might be due to invalid IL or missing references)
//IL_015a: Unknown result type (might be due to invalid IL or missing references)
freeModeCategory.CreateFloat("Mouse Sens.", Color.white, 1f, 0.5f, 0f, float.PositiveInfinity, (Action<float>)delegate(float value)
{
CameraRigManager.Instance.MouseSensitivity = value;
});
freeModeCategory.CreateFloat("Mouse Smoothing", Color.white, 1f, 0.5f, 0f, float.PositiveInfinity, (Action<float>)delegate(float value)
{
CameraRigManager.Instance.MouseSmoothness = value;
});
freeModeCategory.CreateFloat("Slow Speed", Color.white, 5f, 1f, 0f, float.PositiveInfinity, (Action<float>)delegate(float value)
{
CameraRigManager.Instance.SlowSpeed = value;
});
freeModeCategory.CreateFloat("Fast Speed", Color.white, 10f, 1f, 0f, float.PositiveInfinity, (Action<float>)delegate(float value)
{
CameraRigManager.Instance.FastSpeed = value;
});
freeModeCategory.CreateFloat("Max Speed", Color.white, 15f, 1f, 0f, float.PositiveInfinity, (Action<float>)delegate(float value)
{
CameraRigManager.Instance.MaxSpeed = value;
});
freeModeCategory.CreateFloat("Friction", Color.white, 5f, 1f, 0f, float.PositiveInfinity, (Action<float>)delegate(float value)
{
CameraRigManager.Instance.Friction = value;
});
}
private static void BuildVFXCategory(Page vfxCategory)
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0037: Unknown result type (might be due to invalid IL or missing references)
vfxCategory.CreateBool("Lens Distortion", Color.white, true, (Action<bool>)delegate(bool value)
{
CameraRigManager.Instance.EnableLensDistortion(value);
});
vfxCategory.CreateBool("Chromatic Abberation", Color.white, true, (Action<bool>)delegate(bool value)
{
CameraRigManager.Instance.EnableChromaticAbberation(value);
});
}
}
public sealed class PropMarker
{
private GameObject m_gameObject;
private Prop m_prop;
private Vector3 m_target;
private Vector3 m_offset;
private const float m_markerPadding = 0.25f;
public bool Active => m_gameObject.activeInHierarchy;
public bool HasProp => (Object)(object)m_prop != (Object)null;
public void SetTarget(Vector3 target)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
m_target = target;
}
public void SetOffset(Vector3 offset)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
m_offset = offset;
}
public void SetMarker(GameObject marker)
{
m_gameObject = marker;
}
public void SetProp(Prop prop)
{
//IL_002e: 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_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_0091: 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)
m_prop = prop;
if ((Object)(object)m_prop != (Object)null)
{
m_gameObject.transform.position = ((Component)m_prop).transform.position;
if (!Object.op_Implicit((Object)(object)m_prop.InteractableRigidbody))
{
Hide();
return;
}
MarrowBody val = default(MarrowBody);
if (!MarrowBody.Cache.TryGet(((Component)m_prop.InteractableRigidbody).gameObject, ref val))
{
Hide();
return;
}
Bounds bounds = val.Bounds;
SetOffset(new Vector3(0f, ((Bounds)(ref bounds)).center.y + ((Bounds)(ref bounds)).extents.y + 0.25f, 0f));
}
}
public void Update()
{
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
if (!((Object)(object)m_gameObject == (Object)null) && !((Object)(object)m_prop == (Object)null))
{
m_target = ((Component)m_prop).transform.position;
m_gameObject.transform.position = Vector3.Lerp(m_gameObject.transform.position, m_target + m_offset, 8f * Time.deltaTime);
}
}
public void Show()
{
m_gameObject.SetActive(true);
}
public void Hide()
{
m_gameObject.SetActive(false);
}
}
public static class PropMarkerManager
{
private static GameObject container;
private static Dictionary<Prop, PropMarker> markers = new Dictionary<Prop, PropMarker>();
private static List<PropMarker> loadedMarkerObjects = new List<PropMarker>();
public static void Initialize()
{
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: Expected O, but got Unknown
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
markers = new Dictionary<Prop, PropMarker>();
loadedMarkerObjects = new List<PropMarker>();
container = new GameObject("[MonoDirector] - Prop Marker Container");
container.transform.SetParent(Bootstrap.MainContainerObject.transform);
for (int i = 0; i < 32; i++)
{
GameObject val = Object.Instantiate<GameObject>(BundleLoader.PropMarkerObject);
val.transform.SetParent(container.transform);
val.transform.localPosition = Vector3.zero;
PropMarker propMarker = new PropMarker();
propMarker.SetMarker(val);
propMarker.SetProp(null);
propMarker.Hide();
loadedMarkerObjects.Add(propMarker);
}
Events.OnPropCreated = (Action<Prop>)Delegate.Combine(Events.OnPropCreated, new Action<Prop>(AddMarkerToProp));
Events.OnPropRemoved = (Action<Prop>)Delegate.Combine(Events.OnPropRemoved, new Action<Prop>(RemoveMarkerFromProp));
Events.OnPlayStateSet = (Action<PlayState>)Delegate.Combine(Events.OnPlayStateSet, new Action<PlayState>(ShowMarkers));
}
public static void CleanUp()
{
Events.OnPropCreated = (Action<Prop>)Delegate.Remove(Events.OnPropCreated, new Action<Prop>(AddMarkerToProp));
Events.OnPropRemoved = (Action<Prop>)Delegate.Remove(Events.OnPropRemoved, new Action<Prop>(RemoveMarkerFromProp));
Events.OnPlayStateSet = (Action<PlayState>)Delegate.Remove(Events.OnPlayStateSet, new Action<PlayState>(ShowMarkers));
markers.Clear();
loadedMarkerObjects.Clear();
}
public static void Update()
{
foreach (PropMarker loadedMarkerObject in loadedMarkerObjects)
{
loadedMarkerObject.Update();
}
}
public static void AddMarkerToProp(Prop prop)
{
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
if (!markers.ContainsKey(prop))
{
PropMarker propMarker = loadedMarkerObjects.FirstOrDefault((PropMarker marker) => !marker.Active);
if (Director.PlayState != PlayState.Recording)
{
propMarker.Show();
}
else
{
propMarker.Hide();
}
propMarker.SetOffset(Vector3.up * 0.125f);
propMarker.SetProp(prop);
markers.Add(prop, propMarker);
}
}
public static void RemoveMarkerFromProp(Prop prop)
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
if (markers.ContainsKey(prop))
{
PropMarker propMarker = markers[prop];
propMarker.SetOffset(Vector3.zero);
propMarker.SetProp(null);
propMarker.Hide();
markers.Remove(prop);
}
}
private static void ShowMarkers(PlayState playState)
{
if (playState == PlayState.Preplaying || playState == PlayState.Prerecording)
{
foreach (PropMarker loadedMarkerObject in loadedMarkerObjects)
{
loadedMarkerObject.Hide();
}
}
if (playState != PlayState.Stopped)
{
return;
}
foreach (PropMarker loadedMarkerObject2 in loadedMarkerObjects)
{
if (loadedMarkerObject2.HasProp)
{
loadedMarkerObject2.Show();
}
}
}
}
}
namespace NEP.MonoDirector.State
{
public enum BodyPart
{
Head,
Chest,
Pelvis,
LeftHand,
RightHand
}
public enum CameraMode
{
None,
Free,
Handheld,
Head
}
public enum CaptureState
{
CaptureCamera,
CaptureActor,
None
}
public enum PlayState
{
Preplaying,
Playing,
Prerecording,
Recording,
Paused,
Stopped
}
}
namespace NEP.MonoDirector.Proxy
{
[RegisterTypeInIl2Cpp]
public class ActorProxy : TrackableProxy
{
private Actor m_actor;
private BoxCollider m_triggerHull;
private GameObject m_frame;
public Actor Actor => m_actor;
public BoxCollider Collider => m_triggerHull;
public ActorProxy(IntPtr ptr)
: base(ptr)
{
}
private void Awake()
{
BuildHull();
}
private void BuildHull()
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Expected O, but got Unknown
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
GameObject val = new GameObject("Actor Trigger Hull");
m_triggerHull = val.AddComponent<BoxCollider>();
((Collider)m_triggerHull).isTrigger = true;
val.transform.SetParent(((Component)this).transform);
val.transform.localPosition = Vector3.up;
val.transform.localRotation = Quaternion.identity;
val.SetActive(false);
}
public void SetActor(Actor actor)
{
//IL_001c: 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)
m_actor = actor;
m_triggerHull.size = new Vector3(0.5f, 1f, 0.5f);
((Component)m_triggerHull).transform.SetParent(m_actor.ClonedAvatar.animator.GetBoneTransform((HumanBodyBones)0));
if ((Object)(object)m_frame == (Object)null)
{
m_frame = ActorFrameManager.AddFrameToActor(this);
}
else
{
m_frame.transform.localScale = m_triggerHull.size;
}
}
public void OnSelected()
{
FeedbackSFX.LinkAudio();
((Component)m_triggerHull).gameObject.SetActive(true);
Director.SelectActor(m_actor);
}
public void OnDeselected()
{
((Component)m_triggerHull).gameObject.SetActive(false);
Director.DeselectActor(m_actor);
}
}
[RegisterTypeInIl2Cpp]
public class TrackableProxy : MonoBehaviour
{
public TrackableProxy(IntPtr ptr)
: base(ptr)
{
}
}
}
namespace NEP.MonoDirector.Cameras
{
[RegisterTypeInIl2Cpp]
public class CameraDamp : MonoBehaviour
{
public float delta = 4f;
private Quaternion m_lastRotation;
public CameraDamp(IntPtr ptr)
: base(ptr)
{
}
private void LateUpdate()
{
}
}
[RegisterTypeInIl2Cpp]
public class CameraDisplay : MonoBehaviour
{
private SmoothFollower m_smoothFollower;
public FOVController FOVController { get; private set; }
public FollowCamera FollowCamera { get; private set; }
public CameraVolume CameraVolume { get; private set; }
public CameraDisplay(IntPtr ptr)
: base(ptr)
{
}
private void Awake()
{
m_smoothFollower = ((Component)this).GetComponent<SmoothFollower>();
((Behaviour)m_smoothFollower).enabled = false;
FOVController = ((Component)this).gameObject.AddComponent<FOVController>();
FollowCamera = ((Component)this).gameObject.AddComponent<FollowCamera>();
CameraVolume = ((Component)this).gameObject.AddComponent<CameraVolume>();
FOVController.SetCamera(((Component)this).GetComponent<Camera>());
}
private void Start()
{
FollowCamera.SetFollowTarget(m_smoothFollower.targetTransform);
}
}
public class CameraRigManager
{
private GameObject m_cameraObject;
private CameraMode m_cameraMode;
public static CameraRigManager Instance { get; private set; }
public RigScreenOptions RigScreenOptions { get; private set; }
public Camera Camera { get; private set; }
public Camera ClonedCamera { get; private set; }
public InputController InputController { get; private set; }
public FreeCamera FreeCamera { get; private set; }
public FollowCamera FollowCamera { get; private set; }
public FOVController FOVController { get; private set; }
public CameraDamp CameraDamp { get; private set; }
public CameraVolume[] CameraVolumes { get; private set; }
public CameraDisplay CameraDisplay { get; private set; }
public SmoothFollower SmoothFollower { get; private set; }
public RenderTexture CameraDisplayTexture { get; private set; }
public CameraMode CameraMode
{
get
{
return m_cameraMode;
}
set
{
m_cameraMode = value;
if (m_cameraMode == CameraMode.None)
{
((Behaviour)FreeCamera).enabled = false;
((Behaviour)CameraDamp).enabled = false;
((Behaviour)FollowCamera).enabled = false;
((Behaviour)SmoothFollower).enabled = true;
}
if (m_cameraMode == CameraMode.Free)
{
((Behaviour)SmoothFollower).enabled = false;
((Behaviour)FreeCamera).enabled = true;
((Behaviour)CameraDamp).enabled = false;
((Behaviour)FollowCamera).enabled = false;
}
if (m_cameraMode == CameraMode.Head)
{
((Behaviour)SmoothFollower).enabled = false;
((Behaviour)CameraDamp).enabled = false;
((Behaviour)FollowCamera).enabled = true;
((Behaviour)FreeCamera).enabled = false;
}
Events.OnCameraModeSet?.Invoke(m_cameraMode);
}
}
public float CameraSmoothness
{
get
{
return FollowCamera.delta;
}
set
{
FollowCamera.delta = value;
}
}
public float MouseSensitivity
{
get
{
return InputController.mouseSensitivity;
}
set
{
InputController.mouseSensitivity = value;
}
}
public float MouseSmoothness
{
get
{
return InputController.mouseSmoothness;
}
set
{
InputController.mouseSmoothness = value;
}
}
public float SlowSpeed
{
get
{
return FreeCamera.CameraSettings.slowSpeed;
}
set
{
FreeCamera.CameraSettings.slowSpeed = value;
}
}
public float FastSpeed
{
get
{
return FreeCamera.CameraSettings.fastSpeed;
}
set
{
FreeCamera.CameraSettings.fastSpeed = value;
}
}
public float MaxSpeed
{
get
{
return FreeCamera.CameraSettings.maxSpeed;
}
set
{
FreeCamera.CameraSettings.maxSpeed = value;
}
}
public float Friction
{
get
{
return FreeCamera.CameraSettings.friction;
}
set
{
FreeCamera.CameraSettings.friction = value;
}
}
public CameraRigManager(RigScreenOptions options)
{
if (!ModCompatibility.HasWideEye)
{
RigScreenOptions = options;
Start();
}
}
private void Start()
{
Instance = this;
InitializeCamera(RigScreenOptions);
}
private void InitializeCamera(RigScreenOptions screenOptions)
{
Camera = screenOptions.cam;
m_cameraObject = ((Component)Camera).gameObject;
ClonedCamera = Object.Instantiate<GameObject>(m_cameraObject).GetComponent<Camera>();
((Component)ClonedCamera).gameObject.SetActive(false);
m_cameraObject.transform.parent = null;
SmoothFollower = m_cameraObject.GetComponent<SmoothFollower>();
InputController = m_cameraObject.AddComponent<InputController>();
FreeCamera = m_cameraObject.AddComponent<FreeCamera>();
FOVController = m_cameraObject.AddComponent<FOVController>();
FollowCamera = m_cameraObject.AddComponent<FollowCamera>();
CameraDamp = m_cameraObject.AddComponent<CameraDamp>();
CameraVolumes = new CameraVolume[2]
{
m_cameraObject.AddComponent<CameraVolume>(),
((Component)ClonedCamera).gameObject.AddComponent<CameraVolume>()
};
FOVController.SetCamera(Camera);
CameraMode = CameraMode.None;
FollowCamera.SetFollowTarget(SmoothFollower.targetTransform);
CameraDisplay = ((Component)ClonedCamera).gameObject.AddComponent<CameraDisplay>();
}
public void EnableLensDistortion(bool enable)
{
CameraVolume[] cameraVolumes = CameraVolumes;
for (int i = 0; i < cameraVolumes.Length; i++)
{
((VolumeComponent)cameraVolumes[i].LensDistortion).active = enable;
}
}
public void EnableChromaticAbberation(bool enable)
{
CameraVolume[] cameraVolumes = CameraVolumes;
for (int i = 0; i < cameraVolumes.Length; i++)
{
((VolumeComponent)cameraVolumes[i].ChromaticAberration).active = enable;
}
}
}
[RegisterTypeInIl2Cpp]
public class CameraVolume : MonoBehaviour
{
public Volume RenderingVolume { get; private set; }
public LensDistortion LensDistortion { get; private set; }
public ChromaticAberration ChromaticAberration { get; private set; }
public MKGlow MkGlow { get; private set; }
public Vignette Vignette { get; private set; }
public Bloom Bloom { get; private set; }
public CameraVolume(IntPtr ptr)
: base(ptr)
{
}
private void Start()
{
RenderingVolume = ((Component)this).GetComponent<Volume>();
LensDistortion = ((Il2CppObjectBase)RenderingVolume.profile.components[0]).Cast<LensDistortion>();
ChromaticAberration = ((Il2CppObjectBase)RenderingVolume.profile.components[1]).Cast<ChromaticAberration>();
MkGlow = ((Il2CppObjectBase)RenderingVolume.profile.components[4]).Cast<MKGlow>();
}
public void EnableAll(bool enabled)
{
Enumerator<VolumeComponent> enumerator = RenderingVolume.profile.components.GetEnumerator();
while (enumerator.MoveNext())
{
enumerator.Current.SetAllOverridesTo(enabled);
}
}
public void SetValue(FloatParameter parameter, float value)
{
if (parameter != null)
{
((VolumeParameter<float>)(object)parameter).value = value;
}
}
}
[RegisterTypeInIl2Cpp]
public class FollowCamera : MonoBehaviour
{
public readonly Dictionary<BodyPart, BodyPartData> FollowPoints = new Dictionary<BodyPart, BodyPartData>();
public float delta = 4f;
private Vector3 m_positionOffset;
private Vector3 m_rotationEulerOffset;
private Transform m_followTarget;
public Transform FollowTarget => m_followTarget;
public FollowCamera(IntPtr ptr)
: base(ptr)
{
}
protected void Update()
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
if (!((Object)(object)m_followTarget == (Object)null))
{
((Component)this).transform.position = m_followTarget.position;
((Component)this).transform.rotation = Quaternion.Slerp(((Component)this).transform.rotation, m_followTarget.rotation, delta * Time.deltaTime);
}
}
public void SetDefaultTarget()
{
SetFollowTarget(FollowPoints[BodyPart.Head].transform);
}
public void SetFollowTarget(Transform target)
{
m_followTarget = target;
}
public void SetPositionOffset(Vector3 offset)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
m_positionOffset = offset;
}
public void SetRotationOffset(Vector3 offset)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
m_rotationEulerOffset = offset;
}
public void SetRotationOffset(Quaternion offset)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
m_rotationEulerOffset = ((Quaternion)(ref offset)).eulerAngles;
}
public void SetFollowBone(BodyPart part)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: 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)
//IL_0022: 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_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
m_positionOffset = Vector3.zero;
m_rotationEulerOffset = Vector3.zero;
Vector3 position = FollowPoints[part].position;
m_followTarget.position = position;
m_followTarget.localPosition = m_positionOffset;
m_followTarget.localRotation = Quaternion.Euler(m_rotationEulerOffset);
}
}
[RegisterTypeInIl2Cpp]
public class FOVController : MonoBehaviour
{
public float fovChangeSmoothing = 10f;
public float fovChangeRate = 4f;
private Camera m_camera;
private float m_fov = 90f;
private float m_lastFOV;
public FOVController(IntPtr ptr)
: base(ptr)
{
}
private void Update()
{
if (!ModCompatibility.HasFlatPlayer)
{
m_camera.fieldOfView = Mathf.Lerp(m_lastFOV, m_fov, fovChangeSmoothing * Time.deltaTime);
MouseFOV();
}
}
private void MouseFOV()
{
m_lastFOV = m_camera.fieldOfView;
SetFOV(Input.GetAxisRaw("Mouse ScrollWheel") * fovChangeRate);
}
public void SetCamera(Camera camera)
{
m_camera = camera;
}
public void SetFOV(float fov)
{
m_fov -= fov;
}
}
[RegisterTypeInIl2Cpp]
public class FreeCamera : MonoBehaviour
{
public class Settings
{
public float slowSpeed;
public float fastSpeed;
public float maxSpeed;
public float friction;
public float fovChangeRate;
public float fovChangeSmoothing;
public float xShake;
public float yShake;
public float zShake;
public float shakeMultiplier;
}
public Settings CameraSettings;
private Vector3 m_shakeVector;
private Vector3 m_wishDir = Vector3.zero;
private float m_currentSpeed;
private Rigidbody m_rigidbody;
private InputController m_inputControl = CameraRigManager.Instance.InputController;
private bool m_fastCamera => Input.GetKey((KeyCode)304);
public FreeCamera(IntPtr ptr)
: base(ptr)
{
}//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
protected void Awake()
{
m_rigidbody = ((Component)this).gameObject.AddComponent<Rigidbody>();
m_rigidbody.useGravity = false;
CameraSettings = new Settings
{
slowSpeed = 5f,
fastSpeed = 10f,
maxSpeed = 15f,
friction = 5f,
xShake = 0f,
yShake = 0f,
zShake = 0f,
shakeMultiplier = 0f
};
}
protected void Update()
{
if (!ModCompatibility.HasFlatPlayer)
{
MoveUpdate();
MouseUpdate();
}
}
private void MouseUpdate()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0092: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0101: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: Unknown result type (might be due to invalid IL or missing references)
//IL_0108: Unknown result type (might be due to invalid IL or missing references)
Vector3 val = m_inputControl.MouseMove();
float num = Mathf.Sin(Time.time) + Mathf.PerlinNoise(CameraSettings.xShake * Time.time, CameraSettings.yShake) * m_shakeVector.x;
float num2 = Mathf.Sin(Time.time) + Mathf.PerlinNoise(CameraSettings.xShake, 1f - CameraSettings.yShake * Time.time) * m_shakeVector.y;
float num3 = num2 * m_shakeVector.z;
Vector3 val2 = Vector3.right * (val.y + num * CameraSettings.shakeMultiplier);
Vector3 val3 = Vector3.up * (val.x + num2 * CameraSettings.shakeMultiplier);
Vector3 val4 = Vector3.forward * (val.z + num3 * CameraSettings.shakeMultiplier);
((Component)this).transform.rotation = Quaternion.Euler(val2 + val3 + val4);
}
private void MoveUpdate()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: 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_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0072: 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_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: 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_008e: 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_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
Vector3 val = m_inputControl.KeyboardMove();
Vector3.ClampMagnitude(m_wishDir, CameraSettings.maxSpeed);
Transform transform = ((Component)CameraRigManager.Instance.Camera).transform;
m_currentSpeed = (m_fastCamera ? CameraSettings.fastSpeed : CameraSettings.slowSpeed);
val = Vector3.ClampMagnitude(val, CameraSettings.maxSpeed);
m_wishDir = transform.right * val.x + transform.up * val.y + transform.forward * val.z;
m_rigidbody.AddForce(m_wishDir * m_currentSpeed);
m_rigidbody.drag = CameraSettings.friction;
}
}
[RegisterTypeInIl2Cpp]
public class HandheldCamera : MonoBehaviour
{
private CylinderGrip m_leftHandle;
private CylinderGrip m_rightHandle;
private Transform m_leftHandleTransform;
private Transform m_rightHandleTransform;
private Transform m_cameraPoint;
private Camera m_camera;
private Camera m_screenCamera;
private GameObject m_frontScreen;
private GameObject m_displayScreen;
private Rigidbody m_rigidbody;
private Quaternion m_lastFrameRotation;
private Quaternion m_desiredRotation;
private RenderTexture m_displayTexture => m_screenCamera.targetTexture;
public HandheldCamera(IntPtr ptr)
: base(ptr)
{
}
private void Awake()
{
//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
m_leftHandleTransform = ((Component)this).transform.Find("Grips/Left Handle");
m_rightHandleTransform = ((Component)this).transform.Find("Grips/Right Handle");
m_camera = ((Component)((Component)this).transform.Find("Camera")).GetComponent<Camera>();
m_screenCamera = ((Component)((Component)m_camera).transform.GetChild(0)).GetComponent<Camera>();
m_frontScreen = ((Component)((Component)this).transform.Find("ExternalScreen")).gameObject;
m_displayScreen = ((Component)((Component)this).transform.Find("Screen")).gameObject;
m_cameraPoint = ((Component)this).transform.Find("CamPoint");
m_leftHandle = ((Component)m_leftHandleTransform).GetComponent<CylinderGrip>();
m_rightHandle = ((Component)m_rightHandleTransform).GetComponent<CylinderGrip>();
m_rigidbody = ((Component)this).GetComponent<Rigidbody>();
m_camera.backgroundColor = Color.black;
m_screenCamera.backgroundColor = Color.black;
m_camera.clearFlags = (CameraClearFlags)2;
m_screenCamera.clearFlags = (CameraClearFlags)2;
}
private void OnEnable()
{
OnCameraModeChanged(CameraMode.Handheld);
CylinderGrip leftHandle = m_leftHandle;
((Grip)leftHandle).attachedUpdateDelegate = ((Grip)leftHandle).attachedUpdateDelegate + HandDelegate.op_Implicit((Action<Hand>)LeftHandUpdate);
CylinderGrip rightHandle = m_rightHandle;
((Grip)rightHandle).attachedUpdateDelegate = ((Grip)rightHandle).attachedUpdateDelegate + HandDelegate.op_Implicit((Action<Hand>)RightHandUpdate);
CylinderGrip leftHandle2 = m_leftHandle;
((Grip)leftHandle2).detachedHandDelegate = ((Grip)leftHandle2).detachedHandDelegate + HandDelegate.op_Implicit((Action<Hand>)LeftHandDetached);
CylinderGrip leftHandle3 = m_leftHandle;
((Grip)leftHandle3).detachedHandDelegate = ((Grip)leftHandle3).detachedHandDelegate + HandDelegate.op_Implicit((Action<Hand>)RightHandDetached);
((Component)m_camera).transform.SetParent((Transform)null);
}
private void OnDisable()
{
//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
OnCameraModeChanged(CameraMode.Head);
CylinderGrip leftHandle = m_leftHandle;
((Grip)leftHandle).attachedUpdateDelegate = ((Grip)leftHandle).attachedUpdateDelegate - HandDelegate.op_Implicit((Action<Hand>)LeftHandUpdate);
CylinderGrip rightHandle = m_rightHandle;
((Grip)rightHandle).attachedUpdateDelegate = ((Grip)rightHandle).attachedUpdateDelegate - HandDelegate.op_Implicit((Action<Hand>)RightHandUpdate);
CylinderGrip leftHandle2 = m_leftHandle;
((Grip)leftHandle2).detachedHandDelegate = ((Grip)leftHandle2).detachedHandDelegate - HandDelegate.op_Implicit((Action<Hand>)LeftHandDetached);
CylinderGrip leftHandle3 = m_leftHandle;
((Grip)leftHandle3).detachedHandDelegate = ((Grip)leftHandle3).detachedHandDelegate - HandDelegate.op_Implicit((Action<Hand>)RightHandDetached);
((Component)m_camera).transform.SetParent(((Component)this).transform);
((Component)m_camera).transform.localPosition = m_cameraPoint.localPosition;
((Component)m_camera).transform.localRotation = m_cameraPoint.localRotation;
}
private void Update()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
m_desiredRotation = m_cameraPoint.rotation;
}
private void LateUpdate()
{
//IL_0011: 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_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
((Component)m_camera).transform.position = m_cameraPoint.position;
((Component)m_camera).transform.rotation = Quaternion.Slerp(m_lastFrameRotation, m_desiredRotation, 4f * Time.deltaTime);
m_lastFrameRotation = ((Component)m_camera).transform.rotation;
}
private void OnCameraModeChanged(CameraMode mode)
{
if (mode == CameraMode.Handheld)
{
m_displayScreen.active = true;
m_frontScreen.active = true;
((Component)m_camera).gameObject.SetActive(true);
}
else
{
m_displayScreen.active = false;
m_frontScreen.active = false;
((Component)m_camera).gameObject.SetActive(false);
}
}
private void LeftHandUpdate(Hand hand)
{
m_rigidbody.isKinematic = false;
if (hand.GetIndexTriggerAxis() > 0.25f)
{
float num = 4f;
Camera camera = m_camera;
camera.fieldOfView += 0f - hand.GetIndexTriggerAxis() * num / 10f;
Camera screenCamera = m_screenCamera;
screenCamera.fieldOfView += 0f - hand.GetIndexTriggerAxis() * num / 10f;
}
}
private void RightHandUpdate(Hand hand)
{
m_rigidbody.isKinematic = false;
if (hand.GetIndexTriggerAxis() > 0.25f)
{
float num = 4f;
Camera camera = m_camera;
camera.fieldOfView += hand.GetIndexTriggerAxis() * num / 10f;
Camera screenCamera = m_screenCamera;
screenCamera.fieldOfView += hand.GetIndexTriggerAxis() * num / 10f;
}
}
private void LeftHandDetached(Hand hand)
{
if (Settings.Camera.handheldKinematicOnRelease)
{
m_rigidbody.isKinematic = true;
}
}
private void RightHandDetached(Hand hand)
{
if (Settings.Camera.handheldKinematicOnRelease)
{
m_rigidbody.isKinematic = true;
}
}
}
[RegisterTypeInIl2Cpp]
public class InputController : MonoBehaviour
{
public float mouseSensitivity = 1f;
public float mouseSmoothness = 4f;
private Vector3 m_keyInput;
private Vector3 m_mouseInput;
private float m_xMouseMove;
private float m_yMouseMove;
private bool m_enableKeyboard = true;
private bool m_enableMouse = true;
private bool m_lockCursor;
public InputController(IntPtr ptr)
: base(ptr)
{
}
private void Update()
{
if (!ModCompatibility.HasFlatPlayer)
{
m_lockCursor = Input.GetMouseButton(1);
Cursor.lockState = (CursorLockMode)(m_lockCursor ? 1 : 0);
Cursor.visible = !m_lockCursor;
}
}
public Vector3 KeyboardMove()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0107: Unknown result type (might be due to invalid IL or missing references)
if (!m_enableKeyboard)
{
return Vector3.zero;
}
int num = (Input.GetKey((KeyCode)113) ? (-1) : 0);
int num2 = (Input.GetKey((KeyCode)101) ? 1 : 0);
if (Input.GetKey((KeyCode)97))
{
m_keyInput.x = -1f;
}
else if (Input.GetKeyUp((KeyCode)97))
{
m_keyInput.x = 0f;
}
if (Input.GetKey((KeyCode)100))
{
m_keyInput.x = 1f;
}
else if (Input.GetKeyUp((KeyCode)100))
{
m_keyInput.x = 0f;
}
if (Input.GetKey((KeyCode)119))
{
m_keyInput.z = 1f;
}
else if (Input.GetKeyUp((KeyCode)119))
{
m_keyInput.z = 0f;
}
if (Input.GetKey((KeyCode)115))
{
m_keyInput.z = -1f;
}
else if (Input.GetKeyUp((KeyCode)115))
{
m_keyInput.z = 0f;
}
m_keyInput.y = num + num2;
return m_keyInput;
}
public Vector3 MouseMove()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_008f: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Unknown result type (might be due to invalid IL or missing references)
if (!m_enableMouse)
{
return Vector3.zero;
}
if (m_xMouseMove > 0f || m_xMouseMove < 0f)
{
m_xMouseMove = Mathf.Lerp(m_xMouseMove, 0f, mouseSmoothness * Time.deltaTime);
}
if (m_yMouseMove > 0f || m_yMouseMove < 0f)
{
m_yMouseMove = Mathf.Lerp(m_yMouseMove, 0f, mouseSmoothness * Time.deltaTime);
}
if (!m_lockCursor)
{
return m_mouseInput;
}
float axisRaw = Input.GetAxisRaw("Mouse X");
float axisRaw2 = Input.GetAxisRaw("Mouse Y");
if (Input.GetKey((KeyCode)306) && Input.GetMouseButton(1))
{
m_mouseInput.z -= axisRaw;
}
m_xMouseMove += axisRaw * Time.deltaTime;
m_yMouseMove += axisRaw2 * Time.deltaTime;
m_mouseInput.x += m_xMouseMove * mouseSensitivity;
m_mouseInput.y -= m_yMouseMove * mouseSensitivity;
return m_mouseInput;
}
}
}
namespace NEP.MonoDirector.Tools
{
[RegisterTypeInIl2Cpp]
public class ActorPen : ToolEntity
{
private Transform m_rayPoint;
private GameObject m_laserPointer;
private ActorProxy m_selectedProxy;
public ActorPen(IntPtr ptr)
: base(ptr)
{
}
protected override void Awake()
{
base.Awake();
m_rayPoint = ((Component)this).transform.Find("RayPoint");
m_laserPointer = ((Component)m_rayPoint.GetChild(0)).gameObject;
}
protected override void OnHandAttached(Hand hand)
{
m_laserPointer.SetActive(true);
}
protected override void OnHandDetached(Hand hand)
{
m_laserPointer.SetActive(false);
}
protected override void OnPrimaryButtonDown()
{
//IL_0006: 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)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
RaycastHit val = default(RaycastHit);
if (Physics.Raycast(new Ray(m_rayPoint.position, m_rayPoint.forward), ref val, float.PositiveInfinity, 1, (QueryTriggerInteraction)2))
{
if (!((Object)(object)((RaycastHit)(ref val)).collider.attachedRigidbody == (Object)null))
{
ActorProxy component = ((Component)((Component)((RaycastHit)(ref val)).collider.attachedRigidbody).GetComponent<MarrowBody>().Entity).GetComponent<ActorProxy>();
if (!((Object)(object)component == (Object)null))
{
m_selectedProxy = component;
m_selectedProxy.OnSelected();
}
}
}
else if ((Object)(object)m_selectedProxy != (Object)null)
{
m_selectedProxy.OnDeselected();
m_selectedProxy = null;
}
}
}
[RegisterTypeInIl2Cpp]
public class DirectedComponent : MonoBehaviour
{
public DirectedComponent(IntPtr ptr)
: base(ptr)
{
}
protected virtual void OnEnable()
{
Events.OnPlay = (Action)Delegate.Combine(Events.OnPlay, new Action(OnStartPlayback));
Events.OnStopPlayback = (Action)Delegate.Combine(Events.OnStopPlayback, new Action(OnStopPlayback));
Events.OnStartRecording = (Action)Delegate.Combine(Events.OnStartRecording, new Action(OnStartRecording));
Events.OnStopRecording = (Action)Delegate.Combine(Events.OnStopRecording, new Action(OnStopRecording));
Events.OnPlayStateSet = (Action<PlayState>)Delegate.Combine(Events.OnPlayStateSet, new Action<PlayState>(OnPlayStateSet));
}
protected virtual void OnDisable()
{
Events.OnPlay = (Action)Delegate.Remove(Events.OnPlay, new Action(OnStartPlayback));
Events.OnStopPlayback = (Action)Delegate.Remove(Events.OnStopPlayback, new Action(OnStopPlayback));
Events.OnStartRecording = (Action)Delegate.Remove(Events.OnStartRecording, new Action(OnStartRecording));
Events.OnStopRecording = (Action)Delegate.Remove(Events.OnStopRecording, new Action(OnStopRecording));
Events.OnPlayStateSet = (Action<PlayState>)Delegate.Remove(Events.OnPlayStateSet, new Action<PlayState>(OnPlayStateSet));
}
protected virtual void OnStartPlayback()
{
}
protected virtual void OnStopPlayback()
{
}
protected virtual void OnStartRecording()
{
}
protected virtual void OnStopRecording()
{
}
protected virtual void OnPlayStateSet(PlayState playState)
{
}
}
[RegisterTypeInIl2Cpp]
public class LightAngleGizmo : ToolGizmo
{
private float m_angle = 90f;
private TextMeshPro m_angleText;
public float Angle => m_angle;
public LightAngleGizmo(IntPtr ptr)
: base(ptr)
{
}
protected override void Awake()
{
base.Awake();
m_angleText = ((Component)((Component)this).transform.Find("Text")).GetComponent<TextMeshPro>();
}
protected override void OnHandAttached(Hand hand)
{
m_body.isKinematic = false;
m_joint.xMotion = (ConfigurableJointMotion)2;
}
protected override void OnHandDetached(Hand hand)
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
((Joint)m_joint).connectedAnchor = ((Component)this).transform.localPosition;
m_joint.targetPosition = ((Component)this).transform.localPosition;
m_body.isKinematic = true;
m_joint.xMotion = (ConfigurableJointMotion)1;
}
private void Update()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
m_angle = Vector3.Angle(((Component)this).transform.localPosition, Vector3.forward) * 2f;
((TMP_Text)m_angleText).text = m_angle.ToString("0.00") + " deg";
}
public override void Hide()
{
base.Hide();
((Component)m_angleText).gameObject.SetActive(false);
}
public override void Show()
{
base.Show();
((Component)m_angleText).gameObject.SetActive(true);
}
}
[RegisterTypeInIl2Cpp]
public class LightColorGizmo : ToolGizmo
{
private Color m_color;
private float m_sliderValue;
private MeshRenderer m_meshRenderer;
private Vector3 m_startPosition;
private Vector3 m_maxPosition;
private float m_sliderMax;
private bool m_reset;
public Color Color => m_color;
public LightColorGizmo(IntPtr ptr)
: base(ptr)
{
}
protected override void Awake()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
base.Awake();
m_sliderValue = 0f;
m_meshRenderer = ((Component)this).GetComponentInChildren<MeshRenderer>();
m_startPosition = ((Component)this).transform.localPosition;
m_maxPosition = new Vector3(-0.158f, 0f, 0f);
float x = m_startPosition.x;
float x2 = m_maxPosition.x;
m_sliderMax = Mathf.Sqrt(Mathf.Pow(x - x2, 2f));
m_color = Color.white;
}
protected override void OnHandAttached(Hand hand)
{
m_body.isKinematic = false;
}
protected override void OnHandDetached(Hand hand)
{
m_body.isKinematic = true;
m_reset = false;
}
protected override void OnHandAttachedUpdate(Hand hand)
{
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: 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_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
base.OnHandAttachedUpdate(hand);
if (!m_reset)
{
float x = ((Component)this).transform.localPosition.x;
float x2 = m_maxPosition.x;
float sliderValue = Mathf.Sqrt(Mathf.Pow(x - x2, 2f)) / m_sliderMax;
m_sliderValue = sliderValue;
m_sliderValue = Mathf.Max(0f, m_sliderValue);
m_color = Color.HSVToRGB(m_sliderValue, 1f, 1f);
((Renderer)m_meshRenderer).material.SetColor("_Emission", m_color);
m_joint.targetPosition = ((Component)this).transform.localPosition;
}
}
protected override void OnBButtonDown()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
m_color = Color.white;
((Renderer)m_meshRenderer).material.SetColor("_Emission", m_color);
m_joint.targetPosition = m_startPosition;
m_reset = true;
}
}
[RegisterTypeInIl2Cpp]
public class LightIntensityGizmo : ToolGizmo
{
private float m_intensity = 1f;
private Vector3 m