diff --git a/Editor/Editor.cpp b/Editor/Editor.cpp index ac5f0234f..b3911423a 100644 --- a/Editor/Editor.cpp +++ b/Editor/Editor.cpp @@ -2402,6 +2402,8 @@ void EditorComponent::Render() const } } + color.w *= optionsWnd.generalWnd.bonePickerOpacitySlider.GetValue(); + XMVECTOR Base = XMLoadFloat3(&capsule.base); XMVECTOR Tip = XMLoadFloat3(&capsule.tip); XMVECTOR Radius = XMVectorReplicate(capsule.radius); diff --git a/Editor/GeneralWindow.cpp b/Editor/GeneralWindow.cpp index eaf225750..36582f117 100644 --- a/Editor/GeneralWindow.cpp +++ b/Editor/GeneralWindow.cpp @@ -12,7 +12,7 @@ void GeneralWindow::Create(EditorComponent* _editor) wi::gui::Window::Create("General", wi::gui::Window::WindowControls::COLLAPSE); - SetSize(XMFLOAT2(580, 500)); + SetSize(XMFLOAT2(580, 580)); physicsEnabledCheckBox.Create("Physics: "); physicsEnabledCheckBox.SetTooltip("Toggle Physics Simulation On/Off"); @@ -224,6 +224,32 @@ void GeneralWindow::Create(EditorComponent* _editor) AddWidget(&saveModeComboBox); + transformToolOpacitySlider.Create(0, 1, 1, 100, "Transform Tool Opacity: "); + transformToolOpacitySlider.SetTooltip("You can control the transparency of the object placement tool"); + transformToolOpacitySlider.SetSize(XMFLOAT2(100, 18)); + if (editor->main->config.GetSection("options").Has("transform_tool_opacity")) + { + transformToolOpacitySlider.SetValue(editor->main->config.GetSection("options").GetFloat("transform_tool_opacity")); + editor->translator.opacity = transformToolOpacitySlider.GetValue(); + } + transformToolOpacitySlider.OnSlide([=](wi::gui::EventArgs args) { + editor->translator.opacity = args.fValue; + editor->main->config.GetSection("options").Set("transform_tool_opacity", args.fValue); + }); + AddWidget(&transformToolOpacitySlider); + bonePickerOpacitySlider.Create(0, 1, 1, 100, "Bone Picker Opacity: "); + bonePickerOpacitySlider.SetTooltip("You can control the transparency of the bone selector tool"); + bonePickerOpacitySlider.SetSize(XMFLOAT2(100, 18)); + if (editor->main->config.GetSection("options").Has("bone_picker_opacity")) + { + bonePickerOpacitySlider.SetValue(editor->main->config.GetSection("options").GetFloat("bone_picker_opacity")); + } + bonePickerOpacitySlider.OnSlide([=](wi::gui::EventArgs args) { + editor->main->config.GetSection("options").Set("bone_picker_opacity", args.fValue); + }); + AddWidget(&bonePickerOpacitySlider); + + enum class Theme { Dark, @@ -412,7 +438,7 @@ void GeneralWindow::ResizeLayout() { wi::gui::Window::ResizeLayout(); const float padding = 4; - const float width = GetWidgetAreaSize().x - padding * 2; + float width = GetWidgetAreaSize().x - padding * 2; float y = padding; float jump = 20; float x_off = 100; @@ -487,4 +513,10 @@ void GeneralWindow::ResizeLayout() add_right(freezeCullingCameraCheckBox); add_right(disableAlbedoMapsCheckBox); add_right(forceDiffuseLightingCheckBox); + + y += jump; + + width -= padding * 6; + add(transformToolOpacitySlider); + add(bonePickerOpacitySlider); } diff --git a/Editor/GeneralWindow.h b/Editor/GeneralWindow.h index db6774899..205cf54e1 100644 --- a/Editor/GeneralWindow.h +++ b/Editor/GeneralWindow.h @@ -32,6 +32,9 @@ public: wi::gui::CheckBox disableAlbedoMapsCheckBox; wi::gui::CheckBox forceDiffuseLightingCheckBox; + wi::gui::Slider transformToolOpacitySlider; + wi::gui::Slider bonePickerOpacitySlider; + void ResizeLayout() override; }; diff --git a/Editor/Translator.cpp b/Editor/Translator.cpp index 87a661ab1..17c1e2b72 100644 --- a/Editor/Translator.cpp +++ b/Editor/Translator.cpp @@ -647,18 +647,21 @@ void Translator::Draw(const CameraComponent& camera, CommandList cmd) const // x XMStoreFloat4x4(&sb.g_xTransform, matX * GetMirrorMatrix(TRANSLATOR_X, camera) * mat); sb.g_xColor = state == TRANSLATOR_X ? highlight_color : XMFLOAT4(1, channel_min, channel_min, 1); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(vertexCount, 0, cmd); // y XMStoreFloat4x4(&sb.g_xTransform, matY * GetMirrorMatrix(TRANSLATOR_Y, camera)* mat); sb.g_xColor = state == TRANSLATOR_Y ? highlight_color : XMFLOAT4(channel_min, 1, channel_min, 1); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(vertexCount, 0, cmd); // z XMStoreFloat4x4(&sb.g_xTransform, matZ * GetMirrorMatrix(TRANSLATOR_Z, camera)* mat); sb.g_xColor = state == TRANSLATOR_Z ? highlight_color : XMFLOAT4(channel_min, channel_min, 1, 1); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(vertexCount, 0, cmd); @@ -709,6 +712,7 @@ void Translator::Draw(const CameraComponent& camera, CommandList cmd) const mat ); sb.g_xColor = state == TRANSLATOR_XYZ ? highlight_color : XMFLOAT4(1, 1, 1, 0.5f); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(vertexCount, 0, cmd); } @@ -733,6 +737,7 @@ void Translator::Draw(const CameraComponent& camera, CommandList cmd) const XMStoreFloat4x4(&sb.g_xTransform, XMMatrixScaling(origin_size, origin_size, origin_size) * mat); sb.g_xColor = state == TRANSLATOR_XYZ ? highlight_color : XMFLOAT4(0.5f, 0.5f, 0.5f, 1); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(arraysize(cubeVerts), 0, cmd); } @@ -773,18 +778,21 @@ void Translator::Draw(const CameraComponent& camera, CommandList cmd) const // xy XMStoreFloat4x4(&sb.g_xTransform, matX * GetMirrorMatrix(TRANSLATOR_XY, camera) * mat); sb.g_xColor = state == TRANSLATOR_XY ? highlight_color : XMFLOAT4(channel_min, channel_min, 1, 1); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(arraysize(verts), 0, cmd); // xz XMStoreFloat4x4(&sb.g_xTransform, matZ * GetMirrorMatrix(TRANSLATOR_XZ, camera) * mat); sb.g_xColor = state == TRANSLATOR_XZ ? highlight_color : XMFLOAT4(channel_min, 1, channel_min, 1); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(arraysize(verts), 0, cmd); // yz XMStoreFloat4x4(&sb.g_xTransform, matY * GetMirrorMatrix(TRANSLATOR_YZ, camera) * mat); sb.g_xColor = state == TRANSLATOR_YZ ? highlight_color : XMFLOAT4(1, channel_min, channel_min, 1); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(arraysize(verts), 0, cmd); } @@ -818,18 +826,21 @@ void Translator::Draw(const CameraComponent& camera, CommandList cmd) const // xy XMStoreFloat4x4(&sb.g_xTransform, matX * GetMirrorMatrix(TRANSLATOR_XY, camera) * mat); sb.g_xColor = state == TRANSLATOR_XY ? highlight_color : XMFLOAT4(channel_min, channel_min, 1, 0.4f); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(arraysize(verts), 0, cmd); // xz XMStoreFloat4x4(&sb.g_xTransform, matZ * GetMirrorMatrix(TRANSLATOR_XZ, camera) * mat); sb.g_xColor = state == TRANSLATOR_XZ ? highlight_color : XMFLOAT4(channel_min, 1, channel_min, 0.4f); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(arraysize(verts), 0, cmd); // yz XMStoreFloat4x4(&sb.g_xTransform, matY * GetMirrorMatrix(TRANSLATOR_YZ, camera) * mat); sb.g_xColor = state == TRANSLATOR_YZ ? highlight_color : XMFLOAT4(1, channel_min, channel_min, 0.4f); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(arraysize(verts), 0, cmd); } @@ -919,6 +930,7 @@ void Translator::Draw(const CameraComponent& camera, CommandList cmd) const VP ); sb.g_xColor = XMFLOAT4(1, 1, 1, 0.5f); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(vertexCount, 0, cmd); } @@ -945,6 +957,7 @@ void Translator::Draw(const CameraComponent& camera, CommandList cmd) const XMStoreFloat4x4(&sb.g_xTransform, VP); sb.g_xColor = XMFLOAT4(1, 1, 1, 1); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(arraysize(verts), 0, cmd); } @@ -1007,6 +1020,7 @@ void Translator::Draw(const CameraComponent& camera, CommandList cmd) const device->BindVertexBuffers(vbs, 0, arraysize(vbs), strides, offsets, cmd); sb.g_xColor = XMFLOAT4(1, 1, 1, 0.5f); + sb.g_xColor.w *= opacity; device->BindDynamicConstantBuffer(sb, CBSLOT_RENDERER_MISC, cmd); device->Draw(vertexCount, 0, cmd); } diff --git a/Editor/Translator.h b/Editor/Translator.h index 49600ddf7..79a41fbce 100644 --- a/Editor/Translator.h +++ b/Editor/Translator.h @@ -34,6 +34,7 @@ public: float scale_snap = 1; float rotate_snap = XM_PIDIV4; float translate_snap = 1; + float opacity = 1; enum TRANSLATOR_STATE {