コード例 #1
0
 public void StopFollowing()
 {
     following = false;
     cameraController.enabled = true;
     camera.nearClipPlane     = 1.0f;
     FPSCamera.onCameraModeChanged(false);
 }
コード例 #2
0
 public void SetFollowInstance(ushort instance)
 {
     FPSCamera.instance.SetMode(false);
     followInstance           = instance;
     following                = true;
     camera.nearClipPlane     = 0.1f;
     cameraController.enabled = false;
     FPSCamera.onCameraModeChanged(true);
 }
コード例 #3
0
 public void SetFollowInstance(uint instance)
 {
     FPSCamera.instance.SetMode(false);
     followInstance           = instance;
     following                = true;
     camera.nearClipPlane     = 0.1f;
     cameraController.enabled = false;
     camera.fieldOfView       = FPSCamera.instance.config.fieldOfView;
     FPSCamera.onCameraModeChanged(true);
 }
コード例 #4
0
        public override void OnLevelLoaded(LoadMode mode)
        {
            var uiView = GameObject.FindObjectOfType <UIView>();

            cameraModeButton = uiView.AddUIComponent(typeof(UIButton)) as UIButton;

            cameraModeButton.width  = 36;
            cameraModeButton.height = 36;

            cameraModeButton.pressedBgSprite  = "OptionBasePressed";
            cameraModeButton.normalBgSprite   = "OptionBase";
            cameraModeButton.hoveredBgSprite  = "OptionBaseHovered";
            cameraModeButton.disabledBgSprite = "OptionBaseDisabled";

            cameraModeButton.normalFgSprite       = "InfoPanelIconFreecamera";
            cameraModeButton.foregroundSpriteMode = UIForegroundSpriteMode.Scale;
            cameraModeButton.scaleFactor          = 1.0f;

            cameraModeButton.tooltip    = "FPS Camera configuration";
            cameraModeButton.tooltipBox = uiView.defaultTooltipBox;

            UIComponent escbutton = uiView.FindUIComponent("Esc");

            cameraModeButton.relativePosition = new Vector2
                                                (
                escbutton.relativePosition.x + escbutton.width / 2.0f - cameraModeButton.width / 2.0f - escbutton.width - 8.0f,
                escbutton.relativePosition.y + escbutton.height / 2.0f - cameraModeButton.height / 2.0f
                                                );

            cameraModeButton.eventClick += ButtonClick;

            var labelObject = new GameObject();

            labelObject.transform.parent = uiView.transform;

            cameraModeLabel                   = labelObject.AddComponent <UILabel>();
            cameraModeLabel.textColor         = new Color32(255, 255, 255, 255);
            cameraModeLabel.transformPosition = new Vector3(1.15f, 0.90f);
            cameraModeLabel.Hide();

            FPSCamera.Initialize();
            FPSCamera.onCameraModeChanged = state =>
            {
                if (state)
                {
                    cameraModeLabel.text = String.Format("Press ({0}) to exit first-person mode", FPSCamera.GetToggleUIKey());
                    cameraModeLabel.Show();
                }
                else
                {
                    cameraModeLabel.Hide();
                }
            };
        }
コード例 #5
0
        public void StopFollowing()
        {
            following = false;
            cameraController.enabled = true;
            camera.nearClipPlane     = 1.0f;
            FPSCamera.onCameraModeChanged(false);

            if (FPSCamera.instance.hideUIComponent != null && FPSCamera.instance.config.integrateHideUI)
            {
                FPSCamera.instance.hideUIComponent.SendMessage("Show");
            }
        }
コード例 #6
0
        public void StopFollowing()
        {
            following = false;
            cameraController.enabled = true;
            camera.nearClipPlane     = 1.0f;
            FPSCamera.onCameraModeChanged(false);
            userOffset         = Vector3.zero;
            camera.fieldOfView = FPSCamera.instance.originalFieldOfView;

            if (FPSCamera.instance.hideUIComponent != null && FPSCamera.instance.config.integrateHideUI)
            {
                FPSCamera.instance.hideUIComponent.SendMessage("Show");
            }
        }
コード例 #7
0
 private void ButtonClick(UIComponent component, UIMouseEventParameter eventParam)
 {
     FPSCamera.ToggleUI();
 }
コード例 #8
0
 public override void OnLevelUnloading()
 {
     GameObject.Destroy(cameraModeButton);
     FPSCamera.Deinitialize();
 }
コード例 #9
0
        private FPSCameraUI()
        {
            var uiView = FindObjectOfType <UIView>();
            var fullscreenContainer = uiView.FindUIComponent("FullScreenContainer");

            cameraModeButton = uiView.AddUIComponent(typeof(UIButton)) as UIButton;

            cameraModeButton.name            = "FPSCameraConfigurationButton";
            cameraModeButton.gameObject.name = "FPSCameraConfigurationButton";
            cameraModeButton.width           = 36;
            cameraModeButton.height          = 36;

            cameraModeButton.pressedBgSprite  = "OptionBasePressed";
            cameraModeButton.normalBgSprite   = "OptionBase";
            cameraModeButton.hoveredBgSprite  = "OptionBaseHovered";
            cameraModeButton.disabledBgSprite = "OptionBaseDisabled";

            cameraModeButton.normalFgSprite       = "InfoPanelIconFreecamera";
            cameraModeButton.foregroundSpriteMode = UIForegroundSpriteMode.Scale;
            cameraModeButton.scaleFactor          = 1.0f;

            cameraModeButton.tooltip    = "FPS Camera configuration";
            cameraModeButton.tooltipBox = uiView.defaultTooltipBox;

            UIComponent escbutton = uiView.FindUIComponent("Esc");

            cameraModeButton.relativePosition = new Vector2
                                                (
                escbutton.relativePosition.x + escbutton.width / 2.0f - cameraModeButton.width / 2.0f - escbutton.width - 8.0f,
                escbutton.relativePosition.y + escbutton.height / 2.0f - cameraModeButton.height / 2.0f
                                                );

            cameraModeButton.eventClick += (component, param) => { panel.isVisible = !panel.isVisible; };

            var labelObject = new GameObject();

            labelObject.transform.parent = uiView.transform;

            cameraModeLabel           = labelObject.AddComponent <UILabel>();
            cameraModeLabel.textColor = new Color32(255, 255, 255, 255);
            cameraModeLabel.Hide();

            FPSCamera.onCameraModeChanged = state =>
            {
                if (state)
                {
                    cameraModeLabel.text  = String.Format("Press ({0}) to exit first-person mode", FPSCamera.GetToggleUIKey());
                    cameraModeLabel.color = new Color32(255, 255, 255, 255);
                    cameraModeLabel.AlignTo(cameraModeButton, UIAlignAnchor.BottomRight);
                    cameraModeLabel.relativePosition += new Vector3(-38.0f, -8.0f);
                    cameraModeLabel.Show();
                }
                else
                {
                    cameraModeLabel.Hide();
                }
            };

            FPSCamera.onUpdate = () =>
            {
                if (cameraModeLabel.color.a > 0)
                {
                    var c = cameraModeLabel.color;
                    cameraModeLabel.color = new Color32(c.r, c.g, c.b, (byte)(c.a - 1));
                }
            };

            panel                  = fullscreenContainer.AddUIComponent <UIPanel>();
            panel.size             = new Vector2(400, 700);
            panel.isVisible        = false;
            panel.backgroundSprite = "SubcategoriesPanel";
            panel.relativePosition = new Vector3(cameraModeButton.relativePosition.x - panel.size.x, cameraModeButton.relativePosition.y + 60.0f);
            panel.name             = "FPSCameraConfigPanel";

            var titleLabel = panel.AddUIComponent <UILabel>();

            titleLabel.name     = "Title";
            titleLabel.text     = "First-person camera configuration";
            titleLabel.autoSize = false;
            titleLabel.size     = new Vector2(panel.size.x, 24.0f);
            titleLabel.AlignTo(panel, UIAlignAnchor.TopLeft);
            titleLabel.relativePosition = new Vector3(titleLabel.relativePosition.x, titleLabel.relativePosition.y + 2.0f);
            titleLabel.textAlignment    = UIHorizontalAlignment.Center;

            float y = 48.0f;

            var hotkeyToggleLabel = panel.AddUIComponent <UILabel>();

            hotkeyToggleLabel.name             = "ToggleFirstpersonLabel";
            hotkeyToggleLabel.text             = "Hotkey to toggle first-person";
            hotkeyToggleLabel.relativePosition = new Vector3(4.0f, y);
            hotkeyToggleLabel.textScale        = 0.8f;

            hotkeyToggleButton = MakeButton(panel, "ToggleFirstpersonButton",
                                            FPSCamera.instance.config.toggleFPSCameraHotkey.ToString(), y,
                                            () =>
            {
                if (!waitingForChangeCameraHotkey)
                {
                    waitingForChangeCameraHotkey = true;
                    waitingForShowMouseHotkey    = false;
                    waitingForGoFasterHotkey     = false;
                    hotkeyToggleButton.text      = "Waiting";
                }
            });

            y += 28.0f;

            var hotkeyShowMouseLabel = panel.AddUIComponent <UILabel>();

            hotkeyShowMouseLabel.name             = "ShowMouseLabel";
            hotkeyShowMouseLabel.text             = "Hotkey to show cursor (hold)";
            hotkeyShowMouseLabel.relativePosition = new Vector3(4.0f, y);
            hotkeyShowMouseLabel.textScale        = 0.8f;

            hotkeyShowMouseButton = MakeButton(panel, "ShowMouseButton",
                                               FPSCamera.instance.config.showMouseHotkey.ToString(), y,
                                               () =>
            {
                if (!waitingForChangeCameraHotkey)
                {
                    waitingForChangeCameraHotkey = false;
                    waitingForShowMouseHotkey    = true;
                    waitingForGoFasterHotkey     = false;
                    hotkeyShowMouseButton.text   = "Waiting";
                }
            });

            y += 28.0f + 16.0f;

            var hotkeyGoFasterLabel = panel.AddUIComponent <UILabel>();

            hotkeyGoFasterLabel.name             = "GoFasterLabel";
            hotkeyGoFasterLabel.text             = "Hotkey to go faster (hold)";
            hotkeyGoFasterLabel.relativePosition = new Vector3(4.0f, y);
            hotkeyGoFasterLabel.textScale        = 0.8f;

            hotkeyGoFasterButton = MakeButton(panel, "GoFasterButton",
                                              FPSCamera.instance.config.goFasterHotKey.ToString(), y,
                                              () =>
            {
                if (!waitingForGoFasterHotkey)
                {
                    waitingForChangeCameraHotkey = false;
                    waitingForShowMouseHotkey    = false;
                    waitingForGoFasterHotkey     = true;
                    hotkeyGoFasterButton.text    = "Waiting";
                }
            });

            y += 28.0f;

            MakeSlider(panel, "GoFasterMultiplier", "\"Go faster\" speed multiplier", y,
                       FPSCamera.instance.config.goFasterSpeedMultiplier, 2.0f, 20.0f,
                       value =>
            {
                FPSCamera.instance.config.goFasterSpeedMultiplier = value;
                FPSCamera.instance.SaveConfig();
            });

            y += 28.0f + 16.0f;

            if (FPSCamera.instance.hideUIComponent != null)
            {
                MakeCheckbox(panel, "HideUI", "HideUI integration", y, FPSCamera.instance.config.integrateHideUI,
                             value =>
                {
                    FPSCamera.instance.config.integrateHideUI = value;
                    FPSCamera.instance.SaveConfig();
                });

                y += 28.0f + 8.0f;
            }

            MakeSlider(panel, "FieldOfView", "Field of view", y,
                       FPSCamera.instance.config.fieldOfView, 30.0f, 120.0f,
                       value =>
            {
                FPSCamera.instance.SetFieldOfView(value);
            });

            y += 28.0f;

            MakeSlider(panel, "MovementSpeed", "Movement speed", y,
                       FPSCamera.instance.config.cameraMoveSpeed, 0.25f, 128.0f,
                       value =>
            {
                FPSCamera.instance.config.cameraMoveSpeed = value;
                FPSCamera.instance.SaveConfig();
            });

            y += 28.0f + 16.0f;

            MakeSlider(panel, "Sensitivity", "Sensitivity", y,
                       FPSCamera.instance.config.cameraRotationSensitivity, 0.25f, 3.0f,
                       value =>
            {
                FPSCamera.instance.config.cameraRotationSensitivity = value;
                FPSCamera.instance.SaveConfig();
            });

            y += 28.0f;

            MakeCheckbox(panel, "InvertYAxis", "Invert Y-Axis", y, FPSCamera.instance.config.invertYAxis,
                         value =>
            {
                FPSCamera.instance.config.invertYAxis = value;
                FPSCamera.instance.SaveConfig();
            });

            y += 28.0f + 16.0f;

            MakeCheckbox(panel, "SnapToGround", "Snap to ground", y, FPSCamera.instance.config.snapToGround,
                         value =>
            {
                FPSCamera.instance.config.snapToGround = value;
                FPSCamera.instance.SaveConfig();
            });

            y += 28.0f;

            MakeSlider(panel, "GroundDistance", "Ground distance", y,
                       FPSCamera.instance.config.groundOffset, 0.25f, 32.0f,
                       value =>
            {
                FPSCamera.instance.config.groundOffset = value;
                FPSCamera.instance.SaveConfig();
            });

            y += 28.0f;

            MakeCheckbox(panel, "PreventGroundClipping", "Prevent ground clipping", y, FPSCamera.instance.config.preventClipGround,
                         value =>
            {
                FPSCamera.instance.config.preventClipGround = value;
                FPSCamera.instance.SaveConfig();
            });

            y += 28.0f + 16.0f;

            MakeCheckbox(panel, "AnimatedTransitions", "Animated transitions", y, FPSCamera.instance.config.animateTransitions,
                         value =>
            {
                FPSCamera.instance.config.animateTransitions = value;
                FPSCamera.instance.SaveConfig();
            });

            y += 28.0f;

            MakeSlider(panel, "TransitionSpeed", "Transition speed", y,
                       FPSCamera.instance.config.animationSpeed, 0.1f, 4.0f,
                       value =>
            {
                FPSCamera.instance.config.animationSpeed = value;
                FPSCamera.instance.SaveConfig();
            });

            y += 28.0f + 16.0f;

            if (!FPSCamera.editorMode)
            {
                MakeCheckbox(panel, "AllowMovementVehicleMode", "Allow movement in vehicle/ citizen mode", y, FPSCamera.instance.config.allowUserOffsetInVehicleCitizenMode,
                             value =>
                {
                    FPSCamera.instance.config.allowUserOffsetInVehicleCitizenMode = value;
                    FPSCamera.instance.SaveConfig();
                });

                y += 28.0f;

                MakeCheckbox(panel, "ManualWalkthrough", "Manual switching in walkthrough- mode", y, FPSCamera.instance.config.walkthroughModeManual,
                             value =>
                {
                    FPSCamera.instance.config.walkthroughModeManual = value;
                    FPSCamera.instance.SaveConfig();
                });

                y += 28.0f;

                MakeSlider(panel, "StayDuration", "Walkthrough stay duration", y,
                           FPSCamera.instance.config.walkthroughModeTimer, 10.0f, 60.0f,
                           value =>
                {
                    FPSCamera.instance.config.walkthroughModeTimer = value;
                    FPSCamera.instance.SaveConfig();
                });

                y += 28.0f;

                var walkthroughModeButton = MakeButton(panel, "WalkthroughModeButton", "Enter walkthrough mode", y,
                                                       () =>
                {
                    FPSCamera.instance.EnterWalkthroughMode();
                });
                walkthroughModeButton.relativePosition = new Vector3(2.0f, y - 6.0f);
                walkthroughModeButton.size             = new Vector2(200.0f, 24.0f);

                y += 28.0f + 16.0f;
            }

            var resetConfig = MakeButton(panel, "ResetConfigButton", "Reset configuration", y,
                                         () =>
            {
                FPSCamera.instance.ResetConfig();
            });

            resetConfig.relativePosition = new Vector3(2.0f, y);
            resetConfig.size             = new Vector2(200.0f, 24.0f);
        }
コード例 #10
0
 public override void OnLevelUnloading()
 {
     FPSCamera.Deinitialize();
 }
コード例 #11
0
 public override void OnLevelLoaded(LoadMode mode)
 {
     FPSCamera.Initialize(mode);
 }