コード例 #1
0
    private void Awake()
    {
        m_Transform = GetComponent <Transform>();

        // what even is dependency injection lmao
        m_Camera                 = Camera.main;
        m_UpgradeController      = FindObjectOfType <UpgradeMenuController>(true);
        m_ConstructionController = FindObjectOfType <BuildingListFlyoutController>();
        m_Map  = FindObjectOfType <Map>();
        m_Ctrl = FindObjectOfType <GameController>();

        // Create new instance so we don't touch the one maintained by the editor
        m_SpectralBuildingMaterial = Instantiate(m_SpectralBuildingMaterial);

        m_CursorSelected = Instantiate(m_CursorSelectedPrefab, Vector3.zero, Quaternion.identity).GetComponent <Transform>();
        m_CursorSelected.gameObject.SetActive(false);
    }
    private void OnSceneGUI()
    {
        UpgradeMenuController upgradeMenuController =
            target as UpgradeMenuController;

        Vector3 menuCenter = upgradeMenuController.transform.position;

        float crossScreenSize =
            HandleUtility.GetHandleSize(menuCenter) * 0.1f;

        Handles.DrawLine(
            menuCenter
            + new Vector3(-crossScreenSize, crossScreenSize),
            menuCenter
            + new Vector3(crossScreenSize, -crossScreenSize));
        Handles.DrawLine(
            menuCenter
            + new Vector3(-crossScreenSize, -crossScreenSize),
            menuCenter
            + new Vector3(crossScreenSize, crossScreenSize));

        Vector3 oldMenuRadiusHandleWorldPoint =
            upgradeMenuController.GetMenuRadiusHandleWorldPoint();

        Handles.DrawDottedLine(
            menuCenter,
            oldMenuRadiusHandleWorldPoint,
            -4.0f);

        float handleScreenSize =
            HandleUtility.GetHandleSize(oldMenuRadiusHandleWorldPoint) * 0.1f;

        Vector3 newMenuRadiusHandleWorldPoint = Handles.FreeMoveHandle(
            oldMenuRadiusHandleWorldPoint, Quaternion.identity,
            handleScreenSize,
            pointSnap,
            Handles.DotHandleCap);

        if (oldMenuRadiusHandleWorldPoint != newMenuRadiusHandleWorldPoint)
        {
            Undo.RecordObject(upgradeMenuController, "Update Upgrade Position");
            upgradeMenuController.SetMenuRadiusHandleWorldPoint(
                newMenuRadiusHandleWorldPoint);

            GameObject[] upgrades = upgradeMenuController.upgrades;

            for (
                int upgradeIndex = 0;
                upgradeIndex < upgrades.Length;
                ++upgradeIndex)
            {
                GameObject upgrade = upgrades[upgradeIndex];

                if (upgrade == null)
                {
                    continue;
                }

                RectTransform upgradeRectTransform =
                    upgrades[upgradeIndex].GetComponent <RectTransform>();

                Undo.RecordObject(upgradeRectTransform, "Update Upgrade Position");
            }

            upgradeMenuController.UpdateUpgradePositions();
        }
    }