예제 #1
0
        private void Awake()
        {
            GameObject resourceTracker = uGUI.main.gameObject.transform.Find("ScreenCanvas/ResourceTracker").gameObject;

            uGUI_ResourceTracker uGUI_ResourceTracker = resourceTracker.GetComponent <uGUI_ResourceTracker>();

            blip = UWE.Utils.InstantiateDeactivated(resourceTracker.transform.Find("blip").gameObject);
            blip.transform.SetParent(transform, false);
            blip.name = "blip";

            GameObject distanceText = Instantiate(blip.transform.Find("text").gameObject, blip.transform);

            distanceText.name = "distanceText";
            distanceText.SetActive(false);

            Color color = new Color(1, 0, 0, 1);

            TextMeshProUGUI tmproDist = distanceText.GetComponent <TextMeshProUGUI>();

            tmproDist.color = color;

            TextMeshProUGUI tmproText = blip.transform.Find("text").GetComponent <TextMeshProUGUI>();

            tmproText.color = color;

            RectTransformExtensions.CenterRect(distanceText.transform as RectTransform, Vector2.zero);

            Image image = blip.GetComponent <Image>();

            image.color = color;

            mainCanvas = UWE.Utils.InstantiateDeactivated(resourceTracker.transform.Find("mainCanvas").gameObject);
            mainCanvas.transform.SetParent(transform, false);
            mainCanvas.name = "mainCanvas";
        }
예제 #2
0
        private static void Postfix(uGUI_ResourceTracker __instance)
        {
            if (Blip_gameObject == null)
            {
                Type BlipT = typeof(uGUI_ResourceTracker).GetNestedType("Blip", BindingFlags.NonPublic);
                Blip_gameObject = BlipT.GetField("gameObject", BindingFlags.Public | BindingFlags.Instance);
            }

            if (Input.GetKeyDown(Mod.config.ToggleKey))
            {
                hide = !hide;
                ErrorMessage.AddDebug(string.Format("Scanner Blips Toggled: {0}", hide ? $"OFF (Press {Mod.config.ToggleKey} to show)" : "ON"));
            }

#if SN1
            HashSet <ResourceTracker.ResourceInfo> nodes = (HashSet <ResourceTracker.ResourceInfo>)uGUI_ResourceTracker_nodes.GetValue(__instance);
#elif BELOWZERO
            HashSet <ResourceTrackerDatabase.ResourceInfo> nodes = (HashSet <ResourceTrackerDatabase.ResourceInfo>)uGUI_ResourceTracker_nodes.GetValue(__instance);
#endif
            IList blips = (IList)uGUI_ResourceTracker_blips.GetValue(__instance);

            Camera  camera   = MainCamera.camera;
            Vector3 position = camera.transform.position;
            Vector3 forward  = camera.transform.forward;
            int     i        = 0;
#if SN1
            foreach (ResourceTracker.ResourceInfo resourceInfo in nodes)
#elif BELOWZERO
            foreach (ResourceTrackerDatabase.ResourceInfo resourceInfo in nodes)
#endif
            {
                Vector3 lhs = resourceInfo.position - position;
                if (Vector3.Dot(lhs, forward) > 0f)
                {
                    var blipObject = (GameObject)Blip_gameObject.GetValue(blips[i]);
                    var customBlip = blipObject.GetComponent <CustomBlip>();

                    customBlip.Refresh(resourceInfo);

                    i++;
                }
            }

            for (var j = 0; j < blips.Count; ++j)
            {
                var blipObject = (GameObject)Blip_gameObject.GetValue(blips[j]);
                if (hide)
                {
                    blipObject.SetActive(false);
                }
            }
        }
예제 #3
0
        private static bool Prefix(uGUI_ResourceTracker __instance)
        {
            if (__instance != null && __instance.blip != null)
            {
                if (__instance.blip.GetComponent <CustomBlip>() == null)
                {
                    Logger.Log("Adding CustomBlip to blip prefab");
                    __instance.blip.AddComponent <CustomBlip>();
                }
            }

            return(true);
        }
예제 #4
0
        static void Postfix(uGUI_ResourceTracker __instance)
        {
            Debugger.Log("Hello");

            var v = Player.main.GetComponent <PersonalScanBehaviour>();

            if (v)
            {
                var a = Traverse.Create(__instance).Field("nodes").GetValue() as HashSet <ResourceTracker.ResourceInfo>;

                v.GetDiscoveredNodes(a);

                Traverse.Create(__instance).Field("nodes").SetValue(a);
            }
        }
예제 #5
0
        private static void Postfix(uGUI_ResourceTracker __instance)
        {
            if (Blip_gameObject == null)
            {
                Type BlipT = typeof(uGUI_ResourceTracker).GetNestedType("Blip", BindingFlags.NonPublic);
                Blip_gameObject = BlipT.GetField("gameObject", BindingFlags.Public | BindingFlags.Instance);
            }

            if (Input.GetKeyDown(Mod.config.ToggleKey))
            {
                hide = !hide;
                Logger.Log("Toggle " + (hide ? "Hide" : "Show"));
            }

            HashSet <ResourceTracker.ResourceInfo> nodes = (HashSet <ResourceTracker.ResourceInfo>)uGUI_ResourceTracker_nodes.GetValue(__instance);
            IList blips = (IList)uGUI_ResourceTracker_blips.GetValue(__instance);

            Camera  camera   = MainCamera.camera;
            Vector3 position = camera.transform.position;
            Vector3 forward  = camera.transform.forward;
            int     i        = 0;

            foreach (ResourceTracker.ResourceInfo resourceInfo in nodes)
            {
                Vector3 lhs = resourceInfo.position - position;
                if (Vector3.Dot(lhs, forward) > 0f)
                {
                    var blipObject = (GameObject)Blip_gameObject.GetValue(blips[i]);
                    var customBlip = blipObject.GetComponent <CustomBlip>();

                    customBlip.Refresh(resourceInfo);

                    i++;
                }
            }

            for (var j = 0; j < blips.Count; ++j)
            {
                var blipObject = (GameObject)Blip_gameObject.GetValue(blips[j]);
                if (hide)
                {
                    blipObject.SetActive(false);
                }
            }
        }