static void Postfix(HackingTool __instance, List <HologramGraphicsPart> ___m_holoParts, Transform ___m_holoSpaceTransform) { if (___m_holoSpaceTransform == null || ___m_holoParts.Count < 1 || VRGlobal.hackingToolRenderingOverriden) { return; } Matrix4x4 localToWorldMatrix = ___m_holoSpaceTransform.localToWorldMatrix; Matrix4x4 worldToLocalMatrix = ___m_holoSpaceTransform.worldToLocalMatrix; for (int index = 0; index < ___m_holoParts.Count; ++index) { Material material = ___m_holoParts[index].m_material; material.DisableKeyword("ENABLE_FPS_RENDERING"); material.DisableKeyword("FPS_RENDERING_ALLOWED"); } VRGlobal.hackingToolRenderingOverriden = true; }
private void DoDebugOnKeyDown() { if (UnityEngine.Input.GetKeyDown(KeyCode.F2)) { DebugHelper.LogScene(); } if (UnityEngine.Input.GetKeyDown(KeyCode.F5)) { HackingTool t = FindObjectOfType <HackingTool>(); if (t) { foreach (MeshRenderer m in t.GetComponentsInChildren <MeshRenderer>()) { foreach (Material mat in m.sharedMaterials) { Debug.Log("Mat : " + mat.name + " Shader" + mat.shader.name + "\n"); } } } } }
private static bool HackingTool__AbortHack__Prefix(HackingTool __instance) { if (!__instance.m_isHacking) { return(HarmonyControlFlow.Execute); } // Execute the rest of the hacking sequence if interrupted // prematurely. switch (__instance.m_state) { case HackingTool.HackSequenceState.UpdateMiniGame: var timingGrid = __instance.m_activeMinigame.TryCast <HackingMinigame_TimingGrid>(); // Skip the TimingGrid's GamePauseTimer as it only updates // its state every so often. if (timingGrid?.m_puzzleDone != true) { return(HarmonyControlFlow.Execute); } __instance.Sound.Post(EVENTS.HACKING_PUZZLE_SUCCESS); CompleteHack(1); return(HarmonyControlFlow.DontExecute); case HackingTool.HackSequenceState.DoneWait: CompleteHack(1); return(HarmonyControlFlow.DontExecute); case HackingTool.HackSequenceState.Done: CompleteHack(); return(HarmonyControlFlow.DontExecute); default: return(HarmonyControlFlow.Execute); } void CompleteHack(float?delay = null) { var hackable = __instance.m_currentHackable; var sound = __instance.Sound; var player = __instance.Owner; __instance.ClearScreen(); __instance.m_activeMinigame?.EndGame(); __instance.OnStopHacking(); __instance.m_state = HackingTool.HackSequenceState.Idle; __instance.m_stateTimer = 0; __instance.m_currentHackable = null; if (delay == null) { Impl(); return; } ActionScheduler.Schedule(Impl, (float)delay); void Impl() { sound.Post(EVENTS.BUTTONGENERICSEQUENCEFINISHED); if (hackable == null) { return; } LG_LevelInteractionManager.WantToSetHackableStatus(hackable, eHackableStatus.Success, player); } } }