Beispiel #1
0
    public bool belowRoof = false; // true if changed walls transparency

    public void ChangeState(bool in_, string component_)
    {
        if (!camMoving)
        {
            if (in_)
            {
                freeMouse = false;
            }
            switch (state)
            {
            case CameraState.Focused:
                if (!in_)
                {
                    state = CameraState.SingleComponent;
                    MoveCamera(preFocusPosition, preFocusRotation, preFocusLookAt, true, true);
                }
                break;

            case CameraState.SingleComponent:
                if (!in_)
                {
                    if (pm.selectingProducts)
                    {
                        pm.StopSelectingProducts(true);

                        /*if (pm.hoveringOver != null)
                         * {
                         *  pm.hoveringOver.HighlightOff();
                         *  pm.hoveringOver = null;
                         * }*/
                    }
                    state = CameraState.Dispensary;
                    dm.dispensary.ResetSelectedComponents();
                    component = string.Empty;
                    MoveCamera(preZoomPosition, preZoomRotation, dm.dispensary.grid.transform.position, true, false);
                }
                else
                {
                    /*if (hoveringOver != null)
                     * {
                     *  if (hoveringOver.cameraPosition != null)
                     *  {
                     *      FocusCameraOnObject(hoveringOver.cameraPosition);
                     *      MoveCamera(preZoomPosition, dm.dispensary.grid.transform.position, false, true, false);
                     *  }
                     * }*/
                }
                break;

            case CameraState.Dispensary:
                if (in_)
                {
                    if (component_ != string.Empty)
                    {
                        state     = CameraState.SingleComponent;
                        component = component_;
                        Dispensary dispensary = dm.dispensary;
                        dispensary.SelectComponent(component);
                        List <Vector3> possibleCameraPositions = dm.dispensary.GetPossibleCameraPositions(component);
                        float          dist         = 1000;
                        Vector3        targetCamPos = Vector3.zero;
                        foreach (Vector3 pos in possibleCameraPositions)
                        {
                            float newDist = Vector3.Distance(Camera.main.transform.position, pos);
                            if (newDist < dist)
                            {
                                dist         = newDist;
                                targetCamPos = pos;
                            }
                        }
                        preZoomPosition     = Camera.main.transform.position;
                        preZoomRotation     = Camera.main.transform.eulerAngles;
                        preZoomRotateAround = rotateAround;
                        Vector3 toSend_     = new Vector3(targetCamPos.x, targetCamPos.y, targetCamPos.z);
                        Vector3 eulerToSend = Camera.main.transform.eulerAngles;
                        yaw   = Camera.main.transform.eulerAngles.y;
                        pitch = Camera.main.transform.eulerAngles.x;
                        GameObject compGO = dispensary.GetComponentGO(component);
                        MoveCamera(toSend_, eulerToSend, compGO.transform.position, false, false);
                    }
                }
                else
                {
                    state     = CameraState.Exterior;
                    component = string.Empty;
                }
                break;

            case CameraState.Exterior:
                if (in_)
                {
                    state     = CameraState.Dispensary;
                    component = string.Empty;
                }
                break;
            }
        }
    }