mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-11-19 07:57:23 +00:00
Merge be95035cc4 into 0fdf1cc386
This commit is contained in:
commit
4c48be43fe
@ -123,8 +123,6 @@ add_library(core
|
|||||||
FifoPlayer/FifoPlayer.h
|
FifoPlayer/FifoPlayer.h
|
||||||
FifoPlayer/FifoRecorder.cpp
|
FifoPlayer/FifoRecorder.cpp
|
||||||
FifoPlayer/FifoRecorder.h
|
FifoPlayer/FifoRecorder.h
|
||||||
FreeLookConfig.cpp
|
|
||||||
FreeLookConfig.h
|
|
||||||
FreeLookManager.cpp
|
FreeLookManager.cpp
|
||||||
FreeLookManager.h
|
FreeLookManager.h
|
||||||
GeckoCode.cpp
|
GeckoCode.cpp
|
||||||
|
|||||||
@ -3,11 +3,6 @@
|
|||||||
|
|
||||||
#include "Core/Config/FreeLookSettings.h"
|
#include "Core/Config/FreeLookSettings.h"
|
||||||
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include "Common/Config/Config.h"
|
|
||||||
#include "Core/FreeLookConfig.h"
|
|
||||||
|
|
||||||
namespace Config
|
namespace Config
|
||||||
{
|
{
|
||||||
// Configuration Information
|
// Configuration Information
|
||||||
|
|||||||
@ -3,11 +3,16 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "Common/Config/Config.h"
|
#include "Common/Config/ConfigInfo.h"
|
||||||
|
|
||||||
namespace FreeLook
|
namespace FreeLook
|
||||||
{
|
{
|
||||||
enum class ControlType : int;
|
enum class ControlType : int
|
||||||
|
{
|
||||||
|
SixAxis,
|
||||||
|
FPS,
|
||||||
|
Orbital
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Config
|
namespace Config
|
||||||
|
|||||||
@ -1,64 +0,0 @@
|
|||||||
// Copyright 2020 Dolphin Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#include "Core/FreeLookConfig.h"
|
|
||||||
|
|
||||||
#include <optional>
|
|
||||||
|
|
||||||
#include "Core/AchievementManager.h"
|
|
||||||
#include "Core/CPUThreadConfigCallback.h"
|
|
||||||
#include "Core/Config/AchievementSettings.h"
|
|
||||||
#include "Core/Config/FreeLookSettings.h"
|
|
||||||
#include "Core/ConfigManager.h"
|
|
||||||
#include "Core/Core.h"
|
|
||||||
|
|
||||||
namespace FreeLook
|
|
||||||
{
|
|
||||||
static Config s_config;
|
|
||||||
static Config s_active_config;
|
|
||||||
static std::optional<CPUThreadConfigCallback::ConfigChangedCallbackID>
|
|
||||||
s_config_changed_callback_id = std::nullopt;
|
|
||||||
|
|
||||||
Config& GetConfig()
|
|
||||||
{
|
|
||||||
return s_config;
|
|
||||||
}
|
|
||||||
|
|
||||||
const Config& GetActiveConfig()
|
|
||||||
{
|
|
||||||
return s_active_config;
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpdateActiveConfig()
|
|
||||||
{
|
|
||||||
s_active_config = s_config;
|
|
||||||
}
|
|
||||||
|
|
||||||
Config::Config()
|
|
||||||
{
|
|
||||||
camera_config.control_type = ControlType::SixAxis;
|
|
||||||
enabled = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Config::Refresh()
|
|
||||||
{
|
|
||||||
if (!s_config_changed_callback_id.has_value())
|
|
||||||
{
|
|
||||||
s_config_changed_callback_id =
|
|
||||||
CPUThreadConfigCallback::AddConfigChangedCallback([] { s_config.Refresh(); });
|
|
||||||
}
|
|
||||||
|
|
||||||
camera_config.control_type = ::Config::Get(::Config::FL1_CONTROL_TYPE);
|
|
||||||
enabled = ::Config::Get(::Config::FREE_LOOK_ENABLED) &&
|
|
||||||
!AchievementManager::GetInstance().IsHardcoreModeActive();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Config::Shutdown()
|
|
||||||
{
|
|
||||||
if (!s_config_changed_callback_id.has_value())
|
|
||||||
return;
|
|
||||||
|
|
||||||
CPUThreadConfigCallback::RemoveConfigChangedCallback(*s_config_changed_callback_id);
|
|
||||||
s_config_changed_callback_id.reset();
|
|
||||||
}
|
|
||||||
} // namespace FreeLook
|
|
||||||
@ -1,41 +0,0 @@
|
|||||||
// Copyright 2020 Dolphin Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
// IMPORTANT: UI etc should modify the value returned by FreeLook::GetConfig().
|
|
||||||
// Free Look code should read from the value returned by FreeLook::GetActiveConfig().
|
|
||||||
// The reason for this is to get rid of race conditions etc when the
|
|
||||||
// configuration changes in the middle of a frame.
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
namespace FreeLook
|
|
||||||
{
|
|
||||||
enum class ControlType : int
|
|
||||||
{
|
|
||||||
SixAxis,
|
|
||||||
FPS,
|
|
||||||
Orbital
|
|
||||||
};
|
|
||||||
|
|
||||||
struct CameraConfig
|
|
||||||
{
|
|
||||||
ControlType control_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
// NEVER inherit from this class.
|
|
||||||
struct Config final
|
|
||||||
{
|
|
||||||
Config();
|
|
||||||
void Refresh();
|
|
||||||
void Shutdown();
|
|
||||||
|
|
||||||
CameraConfig camera_config;
|
|
||||||
bool enabled;
|
|
||||||
};
|
|
||||||
|
|
||||||
Config& GetConfig();
|
|
||||||
const Config& GetActiveConfig();
|
|
||||||
|
|
||||||
// Called every frame.
|
|
||||||
void UpdateActiveConfig();
|
|
||||||
} // namespace FreeLook
|
|
||||||
@ -7,14 +7,11 @@
|
|||||||
#include <fmt/ranges.h>
|
#include <fmt/ranges.h>
|
||||||
|
|
||||||
#include "Common/Common.h"
|
#include "Common/Common.h"
|
||||||
#include "Common/CommonTypes.h"
|
|
||||||
#include "Common/Config/Config.h"
|
#include "Common/Config/Config.h"
|
||||||
#include "Common/ScopeGuard.h"
|
#include "Common/ScopeGuard.h"
|
||||||
|
|
||||||
#include "Core/Config/FreeLookSettings.h"
|
#include "Core/Config/FreeLookSettings.h"
|
||||||
#include "Core/ConfigManager.h"
|
|
||||||
#include "Core/Core.h"
|
#include "Core/Core.h"
|
||||||
#include "Core/FreeLookConfig.h"
|
|
||||||
|
|
||||||
#include "InputCommon/ControlReference/ControlReference.h"
|
#include "InputCommon/ControlReference/ControlReference.h"
|
||||||
#include "InputCommon/ControllerEmu/ControlGroup/Buttons.h"
|
#include "InputCommon/ControllerEmu/ControlGroup/Buttons.h"
|
||||||
@ -22,7 +19,6 @@
|
|||||||
#include "InputCommon/InputConfig.h"
|
#include "InputCommon/InputConfig.h"
|
||||||
|
|
||||||
#include "VideoCommon/FreeLookCamera.h"
|
#include "VideoCommon/FreeLookCamera.h"
|
||||||
#include "VideoCommon/OnScreenDisplay.h"
|
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
@ -326,8 +322,6 @@ void Shutdown()
|
|||||||
{
|
{
|
||||||
s_config.UnregisterHotplugCallback();
|
s_config.UnregisterHotplugCallback();
|
||||||
s_config.ClearControllers();
|
s_config.ClearControllers();
|
||||||
|
|
||||||
GetConfig().Shutdown();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Initialize()
|
void Initialize()
|
||||||
@ -339,7 +333,7 @@ void Initialize()
|
|||||||
|
|
||||||
s_config.RegisterHotplugCallback();
|
s_config.RegisterHotplugCallback();
|
||||||
|
|
||||||
FreeLook::GetConfig().Refresh();
|
g_freelook_camera.RefreshConfig();
|
||||||
|
|
||||||
s_config.LoadConfig();
|
s_config.LoadConfig();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -250,7 +250,6 @@
|
|||||||
<ClInclude Include="Core\FifoPlayer\FifoDataFile.h" />
|
<ClInclude Include="Core\FifoPlayer\FifoDataFile.h" />
|
||||||
<ClInclude Include="Core\FifoPlayer\FifoPlayer.h" />
|
<ClInclude Include="Core\FifoPlayer\FifoPlayer.h" />
|
||||||
<ClInclude Include="Core\FifoPlayer\FifoRecorder.h" />
|
<ClInclude Include="Core\FifoPlayer\FifoRecorder.h" />
|
||||||
<ClInclude Include="Core\FreeLookConfig.h" />
|
|
||||||
<ClInclude Include="Core\FreeLookManager.h" />
|
<ClInclude Include="Core\FreeLookManager.h" />
|
||||||
<ClInclude Include="Core\GeckoCode.h" />
|
<ClInclude Include="Core\GeckoCode.h" />
|
||||||
<ClInclude Include="Core\GeckoCodeConfig.h" />
|
<ClInclude Include="Core\GeckoCodeConfig.h" />
|
||||||
@ -933,7 +932,6 @@
|
|||||||
<ClCompile Include="Core\FifoPlayer\FifoDataFile.cpp" />
|
<ClCompile Include="Core\FifoPlayer\FifoDataFile.cpp" />
|
||||||
<ClCompile Include="Core\FifoPlayer\FifoPlayer.cpp" />
|
<ClCompile Include="Core\FifoPlayer\FifoPlayer.cpp" />
|
||||||
<ClCompile Include="Core\FifoPlayer\FifoRecorder.cpp" />
|
<ClCompile Include="Core\FifoPlayer\FifoRecorder.cpp" />
|
||||||
<ClCompile Include="Core\FreeLookConfig.cpp" />
|
|
||||||
<ClCompile Include="Core\FreeLookManager.cpp" />
|
<ClCompile Include="Core\FreeLookManager.cpp" />
|
||||||
<ClCompile Include="Core\GeckoCode.cpp" />
|
<ClCompile Include="Core\GeckoCode.cpp" />
|
||||||
<ClCompile Include="Core\GeckoCodeConfig.cpp" />
|
<ClCompile Include="Core\GeckoCodeConfig.cpp" />
|
||||||
|
|||||||
@ -4,18 +4,13 @@
|
|||||||
#include "VideoCommon/FreeLookCamera.h"
|
#include "VideoCommon/FreeLookCamera.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|
||||||
#include "Common/MathUtil.h"
|
|
||||||
|
|
||||||
#include "Common/ChunkFile.h"
|
#include "Common/ChunkFile.h"
|
||||||
#include "Core/ConfigManager.h"
|
#include "Common/Config/Config.h"
|
||||||
#include "Core/Core.h"
|
#include "Core/Core.h"
|
||||||
|
|
||||||
#include "VideoCommon/VideoCommon.h"
|
|
||||||
|
|
||||||
FreeLookCamera g_freelook_camera;
|
FreeLookCamera g_freelook_camera;
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
@ -260,21 +255,18 @@ float CameraControllerInput::GetSpeed() const
|
|||||||
|
|
||||||
FreeLookCamera::FreeLookCamera()
|
FreeLookCamera::FreeLookCamera()
|
||||||
{
|
{
|
||||||
SetControlType(FreeLook::ControlType::SixAxis);
|
RefreshConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FreeLookCamera::SetControlType(FreeLook::ControlType type)
|
void FreeLookCamera::RefreshConfig()
|
||||||
{
|
{
|
||||||
if (m_current_type && *m_current_type == type)
|
m_is_enabled = Config::Get(Config::FREE_LOOK_ENABLED);
|
||||||
{
|
const auto type = Config::Get(Config::FL1_CONTROL_TYPE);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type == FreeLook::ControlType::SixAxis)
|
if (m_current_type == type)
|
||||||
{
|
return;
|
||||||
m_camera_controller = std::make_unique<SixAxisController>();
|
|
||||||
}
|
if (type == FreeLook::ControlType::Orbital)
|
||||||
else if (type == FreeLook::ControlType::Orbital)
|
|
||||||
{
|
{
|
||||||
m_camera_controller = std::make_unique<OrbitalController>();
|
m_camera_controller = std::make_unique<OrbitalController>();
|
||||||
}
|
}
|
||||||
@ -282,6 +274,10 @@ void FreeLookCamera::SetControlType(FreeLook::ControlType type)
|
|||||||
{
|
{
|
||||||
m_camera_controller = std::make_unique<FPSController>();
|
m_camera_controller = std::make_unique<FPSController>();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_camera_controller = std::make_unique<SixAxisController>();
|
||||||
|
}
|
||||||
|
|
||||||
m_current_type = type;
|
m_current_type = type;
|
||||||
}
|
}
|
||||||
@ -330,7 +326,7 @@ void FreeLookCamera::DoState(PointerWrap& p)
|
|||||||
|
|
||||||
bool FreeLookCamera::IsActive() const
|
bool FreeLookCamera::IsActive() const
|
||||||
{
|
{
|
||||||
return FreeLook::GetActiveConfig().enabled;
|
return m_is_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
CameraController* FreeLookCamera::GetController() const
|
CameraController* FreeLookCamera::GetController() const
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
#include <optional>
|
#include <optional>
|
||||||
|
|
||||||
#include "Common/Matrix.h"
|
#include "Common/Matrix.h"
|
||||||
#include "Core/FreeLookConfig.h"
|
#include "Core/Config/FreeLookSettings.h"
|
||||||
|
|
||||||
class PointerWrap;
|
class PointerWrap;
|
||||||
|
|
||||||
@ -79,7 +79,9 @@ class FreeLookCamera
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FreeLookCamera();
|
FreeLookCamera();
|
||||||
void SetControlType(FreeLook::ControlType type);
|
|
||||||
|
void RefreshConfig();
|
||||||
|
|
||||||
Common::Matrix44 GetView() const;
|
Common::Matrix44 GetView() const;
|
||||||
Common::Vec2 GetFieldOfViewMultiplier() const;
|
Common::Vec2 GetFieldOfViewMultiplier() const;
|
||||||
|
|
||||||
@ -90,8 +92,10 @@ public:
|
|||||||
CameraController* GetController() const;
|
CameraController* GetController() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::optional<FreeLook::ControlType> m_current_type;
|
|
||||||
std::unique_ptr<CameraController> m_camera_controller;
|
std::unique_ptr<CameraController> m_camera_controller;
|
||||||
|
|
||||||
|
bool m_is_enabled{};
|
||||||
|
std::optional<FreeLook::ControlType> m_current_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern FreeLookCamera g_freelook_camera;
|
extern FreeLookCamera g_freelook_camera;
|
||||||
|
|||||||
@ -305,10 +305,9 @@ void CheckForConfigChanges()
|
|||||||
const auto old_hdr = g_ActiveConfig.bHDR;
|
const auto old_hdr = g_ActiveConfig.bHDR;
|
||||||
|
|
||||||
UpdateActiveConfig();
|
UpdateActiveConfig();
|
||||||
FreeLook::UpdateActiveConfig();
|
|
||||||
g_vertex_manager->OnConfigChange();
|
g_vertex_manager->OnConfigChange();
|
||||||
|
|
||||||
g_freelook_camera.SetControlType(FreeLook::GetActiveConfig().camera_config.control_type);
|
g_freelook_camera.RefreshConfig();
|
||||||
|
|
||||||
if (g_ActiveConfig.bGraphicMods && !old_graphics_mods_enabled)
|
if (g_ActiveConfig.bGraphicMods && !old_graphics_mods_enabled)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user