Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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");
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        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);
                }
            }
        }