private MultiWayCameraModificationSetting CloneAndTranslaceCameraModificationSetting(MultiWayCameraModificationSetting source, CameraController cameraController)
    {
        MultiWayCameraModificationSetting clone = source.Clone();
        Vector3 transformPoint = parentPositionObject.transform.TransformPoint(Vector3.zero);

        if (clone.verticalLockSettings.enabled)
        {
            if (clone.verticalLockSettings.enableTopVerticalLock)
            {
                clone.verticalLockSettings.topBoundary = transformPoint.y + clone.verticalLockSettings.topVerticalLockPosition - cameraController.targetScreenSize.y * .5f / clone.zoomSettings.zoomPercentage;
            }
            if (clone.verticalLockSettings.enableBottomVerticalLock)
            {
                clone.verticalLockSettings.bottomBoundary = transformPoint.y + clone.verticalLockSettings.bottomVerticalLockPosition + cameraController.targetScreenSize.y * .5f / clone.zoomSettings.zoomPercentage;
            }
        }

        if (clone.horizontalLockSettings.enabled)
        {
            if (clone.horizontalLockSettings.enableLeftHorizontalLock)
            {
                clone.horizontalLockSettings.leftBoundary = transformPoint.x + clone.horizontalLockSettings.leftHorizontalLockPosition + cameraController.targetScreenSize.x * .5f / clone.zoomSettings.zoomPercentage;
            }
            if (clone.horizontalLockSettings.enableRightHorizontalLock)
            {
                clone.horizontalLockSettings.rightBoundary = transformPoint.x + clone.horizontalLockSettings.rightHorizontalLockPosition - cameraController.targetScreenSize.x * .5f / clone.zoomSettings.zoomPercentage;
            }
        }

        clone.verticalLockSettings.translatedVerticalLockPosition = transformPoint.y + clone.verticalLockSettings.defaultVerticalLockPosition;

        return(clone);
    }
    private void SetCameraModificationSettings(MultiWayCameraModificationSetting source)
    {
        if (source.zoomSettings.zoomPercentage == 0f)
        {
            throw new ArgumentOutOfRangeException("Zoom Percentage must not be 0.");
        }

        MultiWayCameraModificationSetting clone = CloneAndTranslaceCameraModificationSetting(source, _cameraController);

        CameraMovementSettings cameraMovementSettings = new CameraMovementSettings(
            clone.verticalLockSettings
            , clone.horizontalLockSettings
            , clone.zoomSettings
            , clone.smoothDampMoveSettings
            , clone.offset
            , clone.verticalCameraFollowMode
            , clone.horizontalOffsetDeltaMovementFactor
            );

        var cameraController = Camera.main.GetComponent <CameraController>();

        cameraController.SetCameraMovementSettings(cameraMovementSettings);

        _lastMultiWayCameraModificationSetting = source;
        Logger.Info("Applied " + (source == redCameraModificationSettings ? "red" : "green") + " camera setting for camera modifier " + this.name);
    }
Exemplo n.º 3
0
    public MultiWayCameraModificationSetting Clone()
    {
        var multiWayCameraModificationSetting = new MultiWayCameraModificationSetting();

        multiWayCameraModificationSetting.VerticalLockSettings   = VerticalLockSettings.Clone();
        multiWayCameraModificationSetting.HorizontalLockSettings = HorizontalLockSettings.Clone();
        multiWayCameraModificationSetting.ZoomSettings           = ZoomSettings.Clone();
        multiWayCameraModificationSetting.SmoothDampMoveSettings = SmoothDampMoveSettings.Clone();
        multiWayCameraModificationSetting.Offset = Offset;
        multiWayCameraModificationSetting.VerticalCameraFollowMode            = VerticalCameraFollowMode;
        multiWayCameraModificationSetting.HorizontalOffsetDeltaMovementFactor = HorizontalOffsetDeltaMovementFactor;

        return(multiWayCameraModificationSetting);
    }
        public MultiWayCameraModificationSetting Clone()
        {
            MultiWayCameraModificationSetting multiWayCameraModificationSetting = new MultiWayCameraModificationSetting();

            multiWayCameraModificationSetting.verticalLockSettings   = verticalLockSettings.Clone();
            multiWayCameraModificationSetting.horizontalLockSettings = horizontalLockSettings.Clone();
            multiWayCameraModificationSetting.zoomSettings           = zoomSettings.Clone();
            multiWayCameraModificationSetting.smoothDampMoveSettings = smoothDampMoveSettings.Clone();

            multiWayCameraModificationSetting.offset = offset;
            multiWayCameraModificationSetting.verticalCameraFollowMode            = verticalCameraFollowMode;
            multiWayCameraModificationSetting.horizontalOffsetDeltaMovementFactor = horizontalOffsetDeltaMovementFactor;

            return(multiWayCameraModificationSetting);
        }
    public void ImportSettings()
    {
        if (importCameraSettings.importSource == null)
        {
            Debug.LogWarning("Unable to import settings because no object was selected");
            return;
        }

        MultiWayCameraModifier multiWayCameraModifier = importCameraSettings.importSource.GetComponent <MultiWayCameraModifier>();
        CameraModifier         cameraModifier         = importCameraSettings.importSource.GetComponent <CameraModifier>();

        if (multiWayCameraModifier != null)
        {
            switch (importCameraSettings.importCameraSettingsMode)
            {
            case ImportCameraSettingsMode.FromGreenToGreen:
                this.greenCameraModificationSettings = multiWayCameraModifier.greenCameraModificationSettings.Clone();
                Debug.Log("Successfully imported green settings from " + importCameraSettings.importSource.name + " and applied them to greenCameraModificationSettings");
                break;

            case ImportCameraSettingsMode.FromGreenToRed:
                this.redCameraModificationSettings = multiWayCameraModifier.greenCameraModificationSettings.Clone();
                Debug.Log("Successfully imported green settings from " + importCameraSettings.importSource.name + " and applied them to redCameraModificationSettings");
                break;

            case ImportCameraSettingsMode.FromRedToGreen:
                this.greenCameraModificationSettings = multiWayCameraModifier.redCameraModificationSettings.Clone();
                Debug.Log("Successfully imported red settings from " + importCameraSettings.importSource.name + " and applied them to greenCameraModificationSettings");
                break;

            case ImportCameraSettingsMode.FromRedToRed:
                this.redCameraModificationSettings = multiWayCameraModifier.redCameraModificationSettings.Clone();
                Debug.Log("Successfully imported red settings from " + importCameraSettings.importSource.name + " and applied them to redCameraModificationSettings");
                break;

            case ImportCameraSettingsMode.FromModifierToGreen:
            case ImportCameraSettingsMode.FromModifierToRed:
                Debug.LogError("Unable to import modifer settings because the source is of type MultiWayCameraModifier");
                break;
            }
        }
        else if (cameraModifier != null)
        {
            MultiWayCameraModificationSetting multiWayCameraModificationSetting = new MultiWayCameraModificationSetting();

            multiWayCameraModificationSetting.verticalLockSettings   = cameraModifier.verticalLockSettings.Clone();
            multiWayCameraModificationSetting.horizontalLockSettings = cameraModifier.horizontalLockSettings.Clone();
            multiWayCameraModificationSetting.zoomSettings           = cameraModifier.zoomSettings.Clone();
            multiWayCameraModificationSetting.smoothDampMoveSettings = cameraModifier.smoothDampMoveSettings.Clone();

            multiWayCameraModificationSetting.offset = cameraModifier.offset;
            multiWayCameraModificationSetting.verticalCameraFollowMode            = cameraModifier.verticalCameraFollowMode;
            multiWayCameraModificationSetting.horizontalOffsetDeltaMovementFactor = cameraModifier.horizontalOffsetDeltaMovementFactor;

            switch (importCameraSettings.importCameraSettingsMode)
            {
            case ImportCameraSettingsMode.FromGreenToGreen:
            case ImportCameraSettingsMode.FromRedToGreen:
            case ImportCameraSettingsMode.FromModifierToGreen:
                this.greenCameraModificationSettings = multiWayCameraModificationSetting;
                Debug.Log("Successfully imported settings from " + importCameraSettings.importSource.name + " and applied them to greenCameraModificationSettings");
                break;

            case ImportCameraSettingsMode.FromGreenToRed:
            case ImportCameraSettingsMode.FromRedToRed:
            case ImportCameraSettingsMode.FromModifierToRed:
                this.redCameraModificationSettings = multiWayCameraModificationSetting;
                Debug.Log("Successfully imported settings from " + importCameraSettings.importSource.name + " and applied them to redCameraModificationSettings");
                break;
            }
        }
        else
        {
            Debug.LogError("Unable to import settings because object does not contain MultiWayCameraModifier nor CameraModifier component.");
            return;
        }
    }