-
-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathPresetManager.cs
74 lines (59 loc) · 2.29 KB
/
PresetManager.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
using System.Linq;
namespace Cammy;
public static class PresetManager
{
public static CameraConfigPreset CurrentPreset
{
get => PresetOverride ?? ActivePreset ?? DefaultPreset;
set
{
ApplyPreset(PresetOverride = value);
if (value == null)
ActivePreset = null;
}
}
public static CameraConfigPreset DefaultPreset { get; set; } = new();
public static CameraConfigPreset ActivePreset { get; private set; }
public static CameraConfigPreset PresetOverride { get; private set; }
public static unsafe void ApplyPreset(CameraConfigPreset preset, bool isLoggingIn = false)
{
if (preset == null) return;
var camera = Common.CameraManager->worldCamera;
if (camera == null) return;
if (preset.UseStartZoom && (!preset.UseStartOnLogin || isLoggingIn))
camera->currentZoom = preset.StartZoom;
else
camera->currentZoom = Math.Min(Math.Max(camera->currentZoom, preset.MinZoom), preset.MaxZoom);
camera->minZoom = preset.MinZoom;
camera->maxZoom = preset.MaxZoom;
if (preset.UseStartFoV && (!preset.UseStartOnLogin || isLoggingIn))
camera->currentFoV = preset.StartFoV;
else
camera->currentFoV = Math.Min(Math.Max(camera->currentFoV, preset.MinFoV), preset.MaxFoV);
camera->minFoV = preset.MinFoV;
camera->maxFoV = preset.MaxFoV;
Game.FoVDelta = preset.FoVDelta;
camera->minVRotation = preset.MinVRotation;
camera->maxVRotation = preset.MaxVRotation;
camera->tilt = preset.Tilt;
camera->lookAtHeightOffset = preset.LookAtHeightOffset;
}
public static void CheckCameraConditionSets(bool isLoggingIn)
{
var preset = Cammy.Config.Presets.FirstOrDefault(preset => preset.CheckConditionSet());
if (preset == null || preset == ActivePreset) return;
ApplyPreset(preset, isLoggingIn);
ActivePreset = preset;
}
public static void Update()
{
if (!DalamudApi.ClientState.IsLoggedIn || FreeCam.Enabled || PresetOverride != null) return;
CheckCameraConditionSets(false);
}
public static void DisableCameraPresets()
{
ActivePreset = null;
PresetOverride = null;
}
}