UdonLibrary 1.0.0
機械システム研究部 C++ ライブラリ
読み取り中…
検索中…
一致する文字列を見つけられません
SivPadPS5.hpp
[詳解]
1//
2// OpenSiv3D用 PS5コントローラー
3//
4// Copyright (c) 2022-2024 udonrobo
5//
6// Controller --> Siv3DApp
7// ^^^^^^^^
8//
9
10#include "PadPS5.hpp"
11
12#pragma once
13
14namespace Udon
15{
16
17 namespace Impl
18 {
19
21 template <typename DummyMessage>
23 {
24 size_t index;
25
26 public:
27
29
30 SivPadPS5Reader() noexcept
31 : index()
32 {
33 }
34
35 SivPadPS5Reader(size_t index) noexcept
36 : index(index)
37 {
38 }
39
41 {
42 if (auto&& gamePad = s3d::Gamepad(index))
43 {
44 return Message::PadPS5 {
45 /* bool isConnected */ gamePad.isConnected(),
46 /* bool triangle */ gamePad.buttons.at(3).pressed(),
47 /* bool circle */ gamePad.buttons.at(2).pressed(),
48 /* bool cross */ gamePad.buttons.at(1).pressed(),
49 /* bool square */ gamePad.buttons.at(0).pressed(),
50 /* bool up */ gamePad.buttons.at(15).pressed(),
51 /* bool right */ gamePad.buttons.at(16).pressed(),
52 /* bool down */ gamePad.buttons.at(17).pressed(),
53 /* bool left */ gamePad.buttons.at(18).pressed(),
54 /* bool l1 */ gamePad.buttons.at(4).pressed(),
55 /* bool r1 */ gamePad.buttons.at(5).pressed(),
56 /* bool l2 */ gamePad.buttons.at(6).pressed(),
57 /* bool r2 */ gamePad.buttons.at(7).pressed(),
58 /* bool l3 */ gamePad.buttons.at(10).pressed(),
59 /* bool r3 */ gamePad.buttons.at(11).pressed(),
60 /* bool create */ gamePad.buttons.at(8).pressed(),
61 /* bool option */ gamePad.buttons.at(9).pressed(),
62 /* bool touch */ gamePad.buttons.at(13).pressed(),
63 /* bool mic */ gamePad.buttons.at(14).pressed(),
64 /* bool ps */ false, // TODO: 未実装
65 /* double analogLeftX */ (int8_t)Map(+gamePad.axes.at(0), -1, 1, -128, 127.),
66 /* double analogLeftY */ (int8_t)Map(-gamePad.axes.at(1), -1, 1, -128, 127.),
67 /* double analogRightX */ (int8_t)Map(+gamePad.axes.at(2), -1, 1, -128, 127.),
68 /* double analogRightY */ (int8_t)Map(-gamePad.axes.at(5), -1, 1, -128, 127.),
69 };
70 }
71 else
72 {
73 return Udon::nullopt;
74 }
75 }
76 };
77
78 } // namespace Impl
79
82
83} // namespace Udon
OpenSiv3D用 PS5コントローラー 受信クラス
Definition SivPadPS5.hpp:23
Udon::Optional< MessageType > getMessage() const noexcept
Definition SivPadPS5.hpp:40
SivPadPS5Reader() noexcept
Definition SivPadPS5.hpp:30
SivPadPS5Reader(size_t index) noexcept
Definition SivPadPS5.hpp:35
オプショナル型
Definition Optional.hpp:62
通信経由PS5コントローラークラス
Definition PadPS5.hpp:26
Definition Bit.hpp:12
constexpr NulloptT nullopt
無効値
Definition Optional.hpp:52
constexpr double Map(const double value, const double inputMin, const double inputMax, const double outputMin, const double outputMax)
数値をある範囲から別の範囲に再マッピングする
Definition Math.hpp:136
PS5コントローラーのボタン情報
Definition PadPS5.hpp:21