diff --git a/gui/include/visibility_manager.hpp b/gui/include/visibility_manager.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..5add24b275d23f3ad70195b8083106bf4bf3043a
--- /dev/null
+++ b/gui/include/visibility_manager.hpp
@@ -0,0 +1,20 @@
+#pragma once
+
+struct VisibilityManager {
+	static bool enableTop;
+	static bool enableBottom;
+
+	static float opacityMixer;
+
+	static float topOpacity();
+	static float bottomOpacity();
+	/*
+		Opacity Mixer:
+		0.f  - top transparent
+		1.f  - bottom transparent
+		0.5f - nothing transparent
+
+		alphaTop = std::max( 2.f * opacityMixer, 1.f );
+		alphaBottom = std::max( 2.f * ( 1.f - opacityMixer ) );
+	*/
+};
\ No newline at end of file
diff --git a/gui/src/visibility_manager.cpp b/gui/src/visibility_manager.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..095ece19843a0aaa7599dd0d00a004c6f1838047
--- /dev/null
+++ b/gui/src/visibility_manager.cpp
@@ -0,0 +1,14 @@
+#include <visibility_manager.hpp>
+#include <algorithm>
+
+bool VisibilityManager::enableTop = true;
+bool VisibilityManager::enableBottom = true;
+
+float VisibilityManager::opacityMixer = 0.5;
+
+float VisibilityManager::topOpacity() {
+	return std::min(2.f * opacityMixer, 1.f);
+}
+float VisibilityManager::bottomOpacity() {
+	return std::min(2.f * (1.f - opacityMixer), 1.f);
+}
\ No newline at end of file