diff --git a/src-ui/app/config_page/setting_section/setting_box/vr/Vr.jsx b/src-ui/app/config_page/setting_section/setting_box/vr/Vr.jsx
index 4c70e61c..b145bb44 100644
--- a/src-ui/app/config_page/setting_section/setting_box/vr/Vr.jsx
+++ b/src-ui/app/config_page/setting_section/setting_box/vr/Vr.jsx
@@ -25,6 +25,10 @@ import {
import RedoSvg from "@images/redo.svg?react";
+import SquareSvg from "@images/square.svg?react";
+import TriangleSvg from "@images/triangle.svg?react";
+import { randomIntMinMax } from "@utils";
+
export const Vr = () => {
const { t } = useTranslation();
const [is_opened_small_settings, setIsOpenedSmallSettings] = useState(true);
@@ -188,15 +192,9 @@ const PageSwitcherContainer = (props) => {
};
-/**
- * PositionControls:
- * - x_pos, y_pos, z_pos 用のスライダーとリセットボタン、上下ボタンを表示
- * - useVariableControl を使って、is_max/is_min/variable_display/countUp/countDown を共通化
- */
-const PositionControls = ({ settings, onchangeFunction, selectFunction, ui_configs, default_ui_configs }) => {
+export const PositionControls = ({ settings, onchangeFunction, selectFunction, ui_configs, default_ui_configs }) => {
const { t } = useTranslation();
- // x_pos 用のフック呼び出し
const {
variable_display: x_variable_display,
is_max: is_max_position_x,
@@ -205,7 +203,6 @@ const PositionControls = ({ settings, onchangeFunction, selectFunction, ui_confi
countDown: countDownPositionX,
} = useVariableControl("x_pos", settings, onchangeFunction, ui_configs);
- // y_pos 用のフック呼び出し
const {
variable_display: y_variable_display,
is_max: is_max_position_y,
@@ -214,7 +211,6 @@ const PositionControls = ({ settings, onchangeFunction, selectFunction, ui_confi
countDown: countDownPositionY,
} = useVariableControl("y_pos", settings, onchangeFunction, ui_configs);
- // z_pos 用のフック呼び出し
const {
variable_display: z_variable_display,
is_max: is_max_position_z,
@@ -223,19 +219,8 @@ const PositionControls = ({ settings, onchangeFunction, selectFunction, ui_confi
countDown: countDownPositionZ,
} = useVariableControl("z_pos", settings, onchangeFunction, ui_configs);
- // 各ボタンの className を生成
- const x_position_button_up_classname = clsx(styles.x_position_button_up, { [styles.is_disabled]: is_max_position_x });
- const x_position_button_down_classname = clsx(styles.x_position_button_down, { [styles.is_disabled]: is_min_position_x });
-
- const y_position_button_up_classname = clsx(styles.y_position_button_up, { [styles.is_disabled]: is_max_position_y });
- const y_position_button_down_classname = clsx(styles.y_position_button_down, { [styles.is_disabled]: is_min_position_y });
-
- const z_position_button_up_classname = clsx(styles.z_position_button_up, { [styles.is_disabled]: is_max_position_z });
- const z_position_button_down_classname = clsx(styles.z_position_button_down, { [styles.is_disabled]: is_min_position_z });
-
return (
- {/* X Position */}
{t("config_page.vr.x_position")}
@@ -252,13 +237,15 @@ const PositionControls = ({ settings, onchangeFunction, selectFunction, ui_confi
valueLabelDisplay={x_variable_display}
valueLabelDisplayLocation="top"
/>
-
+
- {/* Y Position */}
{t("config_page.vr.y_position")}
@@ -276,13 +263,15 @@ const PositionControls = ({ settings, onchangeFunction, selectFunction, ui_confi
valueLabelDisplay={y_variable_display}
valueLabelDisplayLocation="right"
/>
-
+
- {/* Z Position */}
{t("config_page.vr.z_position")}
@@ -300,16 +289,19 @@ const PositionControls = ({ settings, onchangeFunction, selectFunction, ui_confi
valueLabelDisplay={z_variable_display}
valueLabelDisplayLocation="left"
/>
-
+
);
};
-const RotationControls = ({settings, onchangeFunction, selectFunction, ui_configs, default_ui_configs}) => {
+export const RotationControls = ({ settings, onchangeFunction, selectFunction, ui_configs, default_ui_configs }) => {
const { t } = useTranslation();
const {
@@ -336,15 +328,6 @@ const RotationControls = ({settings, onchangeFunction, selectFunction, ui_config
countDown: countDownRotationZ,
} = useVariableControl("z_rotation", settings, onchangeFunction, ui_configs);
- const x_rotation_button_up_classname = clsx(styles.x_rotation_button_up, { [styles.is_disabled]: is_min_rotation_x });
- const x_rotation_button_down_classname = clsx(styles.x_rotation_button_down, { [styles.is_disabled]: is_max_rotation_x });
-
- const y_rotation_button_up_classname = clsx(styles.y_rotation_button_up, { [styles.is_disabled]: is_max_rotation_y });
- const y_rotation_button_down_classname = clsx(styles.y_rotation_button_down, { [styles.is_disabled]: is_min_rotation_y });
-
- const z_rotation_button_up_classname = clsx(styles.z_rotation_button_up, { [styles.is_disabled]: is_max_rotation_z });
- const z_rotation_button_down_classname = clsx(styles.z_rotation_button_down, { [styles.is_disabled]: is_min_rotation_z });
-
return (
@@ -365,11 +348,15 @@ const RotationControls = ({settings, onchangeFunction, selectFunction, ui_config
valueLabelDisplay={x_variable_display}
valueLabelDisplayLocation="right"
/>
-
+
+
{t("config_page.vr.y_rotation")}
@@ -386,11 +373,15 @@ const RotationControls = ({settings, onchangeFunction, selectFunction, ui_config
valueLabelDisplay={y_variable_display}
valueLabelDisplayLocation="top"
/>
-
+
+
{t("config_page.vr.z_rotation")}
@@ -408,10 +399,43 @@ const RotationControls = ({settings, onchangeFunction, selectFunction, ui_config
valueLabelDisplay={z_variable_display}
valueLabelDisplayLocation="left"
/>
-
+
+
+
+ );
+};
+
+const AdjustButtonContainer = ({ wrapper_class_name, is_max, is_min, countUp, countDown }) => {
+ return (
+
);
@@ -511,10 +535,6 @@ const ResetButton = ({onClickFunction}) => {
);
};
-import SquareSvg from "@images/square.svg?react";
-import TriangleSvg from "@images/triangle.svg?react";
-import { randomIntMinMax } from "@utils";
-
const SendSampleTextToggleButton = () => {
const { t } = useTranslation();
const { sendTextToOverlay } = useSendTextToOverlay();
@@ -575,7 +595,6 @@ const useVariableControl = (key, settings, onchangeFunction, ui_configs) => {
const timerRef = useRef();
- // アンマウント時にタイマーをクリアする
useEffect(() => {
return () => {
clearTimeout(timerRef.current);
diff --git a/src-ui/app/config_page/setting_section/setting_box/vr/Vr.module.scss b/src-ui/app/config_page/setting_section/setting_box/vr/Vr.module.scss
index eb37c7ea..9d0963e8 100644
--- a/src-ui/app/config_page/setting_section/setting_box/vr/Vr.module.scss
+++ b/src-ui/app/config_page/setting_section/setting_box/vr/Vr.module.scss
@@ -184,7 +184,9 @@
&.is_disabled {
pointer-events: none;
background-color: var(--dark_875_color);
- color: var(--dark_600_color);
+ & .adjust_button_triangle_svg {
+ color: var(--dark_800_color);
+ }
}
}
@@ -198,29 +200,39 @@
transform: translate(-50%) rotate($rotate);
}
+.button_wrapper {
+ @extend %variable-button;
+
+ &.up .adjust_button_triangle_svg {
+ transform: rotate(0deg);
+ }
+ &:not(.up) .adjust_button_triangle_svg {
+ transform: rotate(180deg);
+ }
+ &.is_disabled {
+ pointer-events: none;
+ color: var(--dark_875_color);
+ }
+}
+
+.adjust_button_triangle_svg {
+ width: 1.8rem;
+ color: var(--dark_400_color);
+}
+
+
+
.y_position_button_wrapper {
@include variable-button-wrapper(top, 30%, left, -26%);
}
-.y_position_button_up,
-.y_position_button_down {
- @extend %variable-button;
-}
.x_position_button_wrapper {
@include variable-button-wrapper(bottom, -38%, left, 46%, 90deg);
}
-.x_position_button_up,
-.x_position_button_down {
- @extend %variable-button;
-}
.z_position_button_wrapper {
@include variable-button-wrapper(bottom, 26%, right, -4%, 45deg);
}
-.z_position_button_up,
-.z_position_button_down {
- @extend %variable-button;
-}
@@ -280,27 +292,14 @@
.x_rotation_button_wrapper {
@include variable-button-wrapper(top, 30%, left, -26%);
}
-.x_rotation_button_up,
-.x_rotation_button_down {
- @extend %variable-button;
-}
.y_rotation_button_wrapper {
@include variable-button-wrapper(bottom, -38%, left, 46%, 90deg);
}
-.y_rotation_button_up,
-.y_rotation_button_down {
- @extend %variable-button;
-}
.z_rotation_button_wrapper {
@include variable-button-wrapper(bottom, 50%, right, -60%, -45deg);
}
-.z_rotation_button_up,
-.z_rotation_button_down {
- @extend %variable-button;
-}
-