This repository has been archived by the owner on Dec 2, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 225
/
MouseCursor.h
138 lines (107 loc) · 4.14 KB
/
MouseCursor.h
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
//--------------------------------------------------------------------------------------
// MouseCursor.h
//
// MouseCursor UWP sample
//
// Advanced Technology Group (ATG)
// Copyright (C) Microsoft Corporation. All rights reserved.
//--------------------------------------------------------------------------------------
#pragma once
#include "DeviceResources.h"
#include "StepTimer.h"
// A basic sample implementation that creates a D3D11 device and
// provides a render loop.
class Sample//NEED MOUSE : public DirectX::IDeviceNotify
{
public:
Sample() noexcept(false);
~Sample() = default;
Sample(Sample&&) = default;
Sample& operator= (Sample&&) = default;
Sample(Sample const&) = delete;
Sample& operator= (Sample const&) = delete;
enum MouseMode {ABSOLUTE_MOUSE, RELATIVE_MOUSE, CLIPCURSOR_MOUSE};
// Initialization and management
void Initialize(IUnknown* window);
// Basic render loop
void Tick();
//NEED MOUSE
////IDeviceNotify
//virtual void OnDeviceLost() override;
//virtual void OnDeviceRestored() override;
// Mouse cursor camera and target updates
void UpdatePointer( Windows::Foundation::Point screen );
void UpdateCamera( DirectX::SimpleMath::Vector3 movement );
void MoveForward( float amount );
void MoveRight( float amount );
// Sample logic
MouseMode SetMode( Windows::Foundation::Point mouseLocation );
void CheckLocation( Windows::Foundation::Point mouseLocation );
// Messages
void OnActivated();
void OnDeactivated();
void OnSuspending();
void OnResuming();
void ValidateDevice();
// Properties
void GetDefaultSize( int& width, int& height ) const;
bool IsRunning4k() const { return m_deviceResources ? (m_deviceResources->GetDeviceOptions() & DX::DeviceResources::c_Enable4K_UHD) != 0 : false; }
private:
void Update(DX::StepTimer const& timer);
void Render();
void Clear();
void CreateDeviceDependentResources();
void CreateWindowSizeDependentResources();
// Device resources.
std::unique_ptr<DX::DeviceResources> m_deviceResources;
// Rendering loop timer.
uint64_t m_frame;
DX::StepTimer m_timer;
// MouseCursor sample
void SetView();
bool m_isAbsolute;
bool m_isRelative;
bool m_isClipCursor;
bool m_highlightFPS;
bool m_highlightRTS;
// FPS
DirectX::SimpleMath::Vector3 m_eyeFPS;
DirectX::SimpleMath::Vector3 m_targetFPS;
// RTS
DirectX::SimpleMath::Vector3 m_eyeRTS;
DirectX::SimpleMath::Vector3 m_targetRTS;
DirectX::SimpleMath::Vector3 m_eye;
DirectX::SimpleMath::Vector3 m_target;
float m_pitch, m_yaw;
DirectX::SimpleMath::Matrix m_world;
DirectX::SimpleMath::Matrix m_view;
DirectX::SimpleMath::Matrix m_proj;
Windows::Foundation::Point m_absoluteLocation;
Windows::Foundation::Point m_screenLocation;
// Input devices.
std::unique_ptr<DirectX::GamePad> m_gamePad;
DirectX::GamePad::ButtonStateTracker m_gamePadButtons;
// DirectXTK rendering
std::unique_ptr<DirectX::SpriteFont> m_font;
std::unique_ptr<DirectX::SpriteFont> m_font64;
std::unique_ptr<DirectX::SpriteFont> m_font32;
std::unique_ptr<DirectX::SpriteFont> m_font28;
DirectX::SimpleMath::Vector2 m_fontPos;
DirectX::SimpleMath::Vector2 m_fontPosTitle;
DirectX::SimpleMath::Vector2 m_fontPosSubtitle;
DirectX::SimpleMath::Vector2 m_fontPosFPS;
DirectX::SimpleMath::Vector2 m_fontPosRTS;
std::unique_ptr<DirectX::SpriteBatch> m_spriteBatch;
std::unique_ptr<DirectX::CommonStates> m_states;
std::unique_ptr<DirectX::EffectFactory> m_fxFactory;
std::unique_ptr<DirectX::Model> m_modelFPS;
std::unique_ptr<DirectX::Model> m_modelRTS;
Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> m_texture_background;
Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> m_texture_tile;
Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> m_texture_tile_border;
RECT m_fullscreenRect;
RECT m_FPStile;
RECT m_RTStile;
// DirectXTK objects.
std::unique_ptr<DirectX::GraphicsMemory> m_graphicsMemory;
};