Exemple #1
0
        public void HandleClick()
        {
            Vector3 worldPos;
            // RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTrans, Input.mousePosition, uicam, out var localPoint);
            Ray ray = GameCamera.main.ScreenPointToRay(Input.mousePosition);

            if (!VFInput.onGUI && Input.GetMouseButtonDown(0))
            {
                // Debug.Log("Clicking screen pos: " + Input.mousePosition.ToString() + " Ray: " + ray.ToString());

                _veinGardenerState.localPlanet = GameMain.localPlanet;
                if (_veinGardenerState.localPlanet == null)
                {
                    return;
                }

                if (Physics.Raycast(ray, out var hitInfo, 1000f, 15873, QueryTriggerInteraction.Ignore))
                {
                    worldPos = hitInfo.point;
                    // Debug.Log("Clicked on world pos: " + worldPos.ToString());

                    Gardener.VeinGroup.GetClosestIndex(ray, _veinGardenerState.localPlanet, out int closestVeinGroupIndex, out int closestVeinIndex, out float closestVeinDistance, out float closestVeinDistance2D);

                    switch (_veinGardenerState.modMode)
                    {
                    case eVeinModificationMode.AddVeinGroup:
                        //if (closestVeinGroupIndex < 0)
                    {
                        var veinGroup = Gardener.VeinGroup.New(_veinGardenerState.newVeinGroupType, worldPos.normalized);
                        closestVeinGroupIndex             = _veinGardenerState.localPlanet.AddVeinGroupData(veinGroup);
                        _veinGardenerState.veinGroupIndex = closestVeinGroupIndex;
                        Debug.Log("Adding new veinGroup: " + veinGroup.type.ToString() + " index: " + closestVeinGroupIndex + " Pos: " + veinGroup.pos * _veinGardenerState.localPlanet.radius);
                    }
                        Gardener.Vein.Add(_veinGardenerState.localPlanet, worldPos, closestVeinGroupIndex);
                        break;

                    case eVeinModificationMode.ExtendVein:
                        if (closestVeinDistance2D > 40)
                        {
                            Debug.Log("Not Extending veinGroup.index: " + _veinGardenerState.veinGroupIndex + ". Distance from vein group too large: " + closestVeinDistance2D);
                        }
                        Gardener.Vein.Add(_veinGardenerState.localPlanet, worldPos, _veinGardenerState.veinGroupIndex);
                        break;

                    case eVeinModificationMode.ModifyVeinGroup:
                        if (closestVeinGroupIndex >= 0)
                        {
                            PlanetData.VeinGroup veinGroup = _veinGardenerState.localPlanet.veinGroups[closestVeinGroupIndex];
                            Debug.Log("Clicked on veinGroup: " + veinGroup.ToString() + " index: " + closestVeinGroupIndex + " Type: " + veinGroup.type);
                            Debug.Log("VeinGroup: " + veinGroup.pos.ToString() + " index: " + (veinGroup.pos * (_veinGardenerState.localPlanet.realRadius + 2.5f)));

                            dialog = new UIVeinGroupDialog()
                            {
                                localPlanet    = _veinGardenerState.localPlanet,
                                veinGroupIndex = closestVeinGroupIndex,
                                Show           = true
                            };
                            _veinGardenerState.veinGroupIndex = closestVeinGroupIndex;
                            VeinPlanter.instance.veinGroupModifyPresenter.Show();
                        }
                        else
                        {
                            VeinPlanter.instance.veinGroupModifyPresenter.Hide();
                        }
                        break;

                    case eVeinModificationMode.RemoveVein:
                        if (closestVeinGroupIndex >= 0 && closestVeinIndex >= 0 && closestVeinDistance2D < 1)
                        {
                            Debug.Log("Removing vein: " + closestVeinIndex + " in group: " + closestVeinGroupIndex);
                            Gardener.Vein.Remove(_veinGardenerState.localPlanet, closestVeinIndex, closestVeinGroupIndex);
                            Gardener.VeinGroup.UpdatePosFromChildren(closestVeinGroupIndex);
                        }
                        break;


                    case eVeinModificationMode.TerrainLower:
                        //TerrainLower(worldPos);
                        break;

                    case eVeinModificationMode.Deactivated:
                    default:
                        break;
                    }
                }
            }
        }
Exemple #2
0
        private void HandleClick()
        {
            Vector3 worldPos;
            // RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTrans, Input.mousePosition, uicam, out var localPoint);
            Ray ray = GameCamera.main.ScreenPointToRay(Input.mousePosition);

            if (Input.GetMouseButtonDown(0))
            {
                // Debug.Log("Clicking screen pos: " + Input.mousePosition.ToString() + " Ray: " + ray.ToString());

                PlanetData localPlanet = GameMain.localPlanet;
                if (localPlanet == null)
                {
                    return;
                }

                if (Physics.Raycast(ray, out var hitInfo, 1000f, 15873, QueryTriggerInteraction.Ignore))
                {
                    worldPos = hitInfo.point;
                    // Debug.Log("Clicked on world pos: " + worldPos.ToString());

                    Gardener.VeinGroup.GetClosestIndex(ray, localPlanet, out int closestVeinGroupIndex, out int closestVeinIndex, out float closestVeinDistance, out float closestVeinDistance2D);

                    switch (modMode)
                    {
                    case eVeinModificationMode.AddVein:
                        if (closestVeinGroupIndex < 0)
                        {
                            var veinGroup = Gardener.VeinGroup.New(EVeinType.Iron, worldPos.normalized);
                            closestVeinGroupIndex = localPlanet.AddVeinGroupData(veinGroup);
                            Debug.Log("Adding new veinGroup: " + veinGroup.type.ToString() + " index: " + closestVeinGroupIndex + " Pos: " + veinGroup.pos * localPlanet.radius);
                        }
                        Gardener.Vein.Add(localPlanet, worldPos, closestVeinGroupIndex);
                        break;

                    case eVeinModificationMode.ModifyVeinGroup:
                        if (closestVeinGroupIndex >= 0)
                        {
                            PlanetData.VeinGroup veinGroup = localPlanet.veinGroups[closestVeinGroupIndex];
                            Debug.Log("Clicked on veinGroup: " + veinGroup.ToString() + " index: " + closestVeinGroupIndex + " Type: " + veinGroup.type);
                            Debug.Log("VeinGroup: " + veinGroup.pos.ToString() + " index: " + (veinGroup.pos * (localPlanet.realRadius + 2.5f)));

                            dialog = new UIVeinGroupDialog()
                            {
                                localPlanet    = localPlanet,
                                veinGroupIndex = closestVeinGroupIndex,
                                Show           = true
                            };
                        }
                        else
                        {
                            dialog = null;
                        }
                        break;

                    case eVeinModificationMode.RemoveVein:
                        if (closestVeinGroupIndex >= 0 && closestVeinIndex >= 0 && closestVeinDistance2D < 1)
                        {
                            Debug.Log("Removing vein: " + closestVeinIndex + " in group: " + closestVeinGroupIndex);
                            Gardener.Vein.Remove(localPlanet, closestVeinIndex, closestVeinGroupIndex);
                            Gardener.VeinGroup.UpdatePosFromChildren(closestVeinGroupIndex);
                        }
                        break;

                    case eVeinModificationMode.Deactivated:
                    default:
                        break;
                    }
                }
            }
        }