diff --git a/demos/optical_bench/src/laser_menu.cpp b/demos/optical_bench/src/laser_menu.cpp index b40b7a6d2d02a659d923971616474b75c7c53441..33a8f26eab51ac30ceb73c5b2c72f4fd3029d655 100644 --- a/demos/optical_bench/src/laser_menu.cpp +++ b/demos/optical_bench/src/laser_menu.cpp @@ -44,7 +44,7 @@ LaserMenu::LaserMenu(phx::Scene* scene, phx::Engine* engine) { } } - MenuHelper::createButtonPairVertical(up_p_, down_p_, text_p_, -0.1f, -0.025f, + MenuHelper::createButtonPairVertical(up_p_, down_p_, text_p_, -0.1f, -0.05f, scene, engine, entity_); up_p_->SetOnPress([rayPass, this](phx::Transform*, glm::mat4) { rayPass->NextLaserPattern(); @@ -65,11 +65,11 @@ LaserMenu::LaserMenu(phx::Scene* scene, phx::Engine* engine) { switch_tir_->GetTransform()->SetParent( entity_->GetFirstComponent<phx::Transform>(), false); switch_tir_->GetTransform()->SetLocalTranslation( - glm::vec3(-0.001f, -0.05f, 0.1f)); + glm::vec3(0.0f, -0.075f, 0.1f)); auto text_entity = scene->CreateEntity(); text_entity->AddComponent<phx::Transform>() - ->Translate(glm::vec3(-0.001f, -0.025f, 0.1f)) + ->Translate(glm::vec3(-0.001f, -0.05f, 0.1f)) .SetLocalRotationEuler(glm::vec3(180, -90, 0)) .SetParent(entity_->GetFirstComponent<phx::Transform>()); text_tir_ = text_entity->AddComponent<phx::Text>("", 0.006f); @@ -86,11 +86,11 @@ LaserMenu::LaserMenu(phx::Scene* scene, phx::Engine* engine) { switch_tw_->GetTransform()->SetParent( entity_->GetFirstComponent<phx::Transform>(), false); switch_tw_->GetTransform()->SetLocalTranslation( - glm::vec3(-0.001f, -0.05f, 0.0f)); + glm::vec3(0.0f, -0.025f, 0.0f)); auto text_entity2 = scene->CreateEntity(); text_entity2->AddComponent<phx::Transform>() - ->Translate(glm::vec3(-0.001f, -0.025f, 0.0f)) + ->Translate(glm::vec3(-0.001f, -0.05f, 0.0f)) .SetLocalRotationEuler(glm::vec3(180, -90, 0)) .SetParent(entity_->GetFirstComponent<phx::Transform>()); text_tw_ = text_entity2->AddComponent<phx::Text>("", 0.006f); @@ -102,8 +102,8 @@ LaserMenu::LaserMenu(phx::Scene* scene, phx::Engine* engine) { clear_target_->GetTransform()->SetParent( entity_->GetFirstComponent<phx::Transform>(), false); clear_target_->GetTransform()->SetLocalRotationEuler(glm::vec3(0, -90, 90)); - clear_target_->GetTransform()->SetLocalScale(glm::vec3(0.03f, 0.01f, 0.03f)); - clear_target_->GetTransform()->SetLocalTranslation(glm::vec3(0)); + clear_target_->GetTransform()->SetLocalScale(glm::vec3(0.06f, 0.01f, 0.017f)); + clear_target_->GetTransform()->SetLocalTranslation(glm::vec3(0.0f,-0.075f,0.0f)); clear_target_->SetHoldable(false); clear_target_->SetOnPress( [this, rayPass](phx::Transform*, glm::mat4) { rayPass->clearTargetBuffers(); }); diff --git a/demos/optical_bench/src/menu_button.cpp b/demos/optical_bench/src/menu_button.cpp index 2391a8c3f8001e1dffaa38a24217cf75b8349701..dc44d1a6afc1bfd86124ca98a998bd6889834d15 100644 --- a/demos/optical_bench/src/menu_button.cpp +++ b/demos/optical_bench/src/menu_button.cpp @@ -31,18 +31,16 @@ MenuButton::MenuButton(phx::Engine* engine, phx::Scene* scene, TYPE type) { } phx::MaterialHandle* outer = nullptr; - phx::MaterialHandle* face = nullptr; - auto transform = entity_->GetFirstComponent<phx::Transform>(); for (auto i = 0u; i < transform->GetChildCount(); i++) { auto handle = transform->GetChild(i) ->GetEntity() ->GetFirstComponent<phx::MaterialHandle>(); - if (handle->GetMaterial()->GetName().compare("Base") == 0) { + if (handle->GetMaterial()->GetName().compare("ButtonBase") == 0) { outer = handle; } if (handle->GetMaterial()->GetName().compare("Image") == 0) { - face = handle; + face_ = handle; } } @@ -53,6 +51,9 @@ MenuButton::MenuButton(phx::Engine* engine, phx::Scene* scene, TYPE type) { outer->SetMaterial(MenuHelper::cloneMaterial( outer->GetMaterial(), std::string("Button_Material_") + std::to_string(id))); + face_->SetMaterial(MenuHelper::cloneMaterial( + face_->GetMaterial(), + std::string("Button_Face_Material_") + std::to_string(id))); outer->GetMaterial()->SetAmbientColor(color_unhovered); outer->GetMaterial()->SetDiffuseColor(color_unhovered); @@ -122,3 +123,7 @@ MenuButton::MenuButton(phx::Engine* engine, phx::Scene* scene, TYPE type) { } MenuButton::~MenuButton() {} + +void MenuButton::SetImage(phx::ResourcePointer<phx::Image> image) { + face_->GetMaterial()->SetAmbientImage(image); +} diff --git a/demos/optical_bench/src/menu_button.hpp b/demos/optical_bench/src/menu_button.hpp index 9083a6f7417ffe3f3e7fd7f7c595e3bf5ccc9bda..d0e7bbde016102319048a270582c99b091fe91a3 100644 --- a/demos/optical_bench/src/menu_button.hpp +++ b/demos/optical_bench/src/menu_button.hpp @@ -11,6 +11,8 @@ SUPPRESS_WARNINGS_END #include "phx/core/entity.hpp" #include "phx/core/scene.hpp" #include "phx/rendering/components/transform.hpp" +#include "phx/resources/types/image.hpp" +#include "phx/rendering/components/material_handle.hpp" class MenuButton { public: @@ -33,6 +35,8 @@ class MenuButton { void SetHoldable(bool active) { holdable_ = active; }; + void SetImage(phx::ResourcePointer<phx::Image> image); + private: phx::Entity* entity_; phx::Selector* selector_; @@ -43,6 +47,7 @@ class MenuButton { std::chrono::duration<double> grab_time_; bool hold_activated_ = false; bool holdable_ = true; + phx::MaterialHandle* face_; std::function<void(phx::Transform*, glm::mat4)> onpress_function_ = nullptr; }; diff --git a/demos/optical_bench/src/object_menu.cpp b/demos/optical_bench/src/object_menu.cpp index 900a494374eac33141b745f2c286d93a6de1f477..716cd0e566769fe8b665a7d4abb0b5e163c0cf47 100644 --- a/demos/optical_bench/src/object_menu.cpp +++ b/demos/optical_bench/src/object_menu.cpp @@ -42,24 +42,66 @@ ObjectMenu::ObjectMenu(phx::Scene* scene, phx::Engine* engine) { auto object_manager = engine->GetSystem<ObjectManager>(); - create_frame_ = new MenuButton(engine, scene, MenuButton::RECTANGULAR); - create_frame_->GetTransform()->SetParent( + //Frame Buttons + create_frame_1_ = new MenuButton(engine, scene, MenuButton::RECTANGULAR); + create_frame_1_->GetTransform()->SetParent( entity_->GetFirstComponent<phx::Transform>(), false); - create_frame_->GetTransform()->SetLocalRotationEuler(glm::vec3(0, -90, 90)); - create_frame_->GetTransform()->SetLocalScale(glm::vec3(0.03f, 0.01f, 0.03f)); - create_frame_->GetTransform()->SetLocalTranslation(glm::vec3(0, 0, 0.1f)); - create_frame_->SetHoldable(false); - create_frame_->SetOnPress( + create_frame_1_->GetTransform()->SetLocalRotationEuler(glm::vec3(0, -90, 90)); + create_frame_1_->GetTransform()->SetLocalScale(glm::vec3(0.05f, 0.01f, 0.05f)); + create_frame_1_->GetTransform()->SetLocalTranslation(glm::vec3(0, 0, -0.1f)); + create_frame_1_->SetImage(phx::ResourceUtils::LoadResourceFromFile<phx::Image>("laser/target/Checker.png")); + create_frame_1_->SetHoldable(false); + create_frame_1_->SetOnPress( [this, object_manager](phx::Transform* t, glm::mat4) { object_manager->CreateTarget(t->GetGlobalTranslation(), "Checker.png"); }); + create_frame_2_ = new MenuButton(engine, scene, MenuButton::RECTANGULAR); + create_frame_2_->GetTransform()->SetParent( + entity_->GetFirstComponent<phx::Transform>(), false); + create_frame_2_->GetTransform()->SetLocalRotationEuler(glm::vec3(0, -90, 90)); + create_frame_2_->GetTransform()->SetLocalScale(glm::vec3(0.05f, 0.01f, 0.05f)); + create_frame_2_->GetTransform()->SetLocalTranslation(glm::vec3(0, -0.055f, -0.1f)); + create_frame_2_->SetImage(phx::ResourceUtils::LoadResourceFromFile<phx::Image>("laser/target/CheckerRed.png")); + create_frame_2_->SetHoldable(false); + create_frame_2_->SetOnPress( + [this, object_manager](phx::Transform* t, glm::mat4) { + object_manager->CreateTarget(t->GetGlobalTranslation(), "CheckerRed.png"); + }); + + create_frame_3_ = new MenuButton(engine, scene, MenuButton::RECTANGULAR); + create_frame_3_->GetTransform()->SetParent( + entity_->GetFirstComponent<phx::Transform>(), false); + create_frame_3_->GetTransform()->SetLocalRotationEuler(glm::vec3(0, -90, 90)); + create_frame_3_->GetTransform()->SetLocalScale(glm::vec3(0.05f, 0.01f, 0.05f)); + create_frame_3_->GetTransform()->SetLocalTranslation(glm::vec3(0, 0, -0.045f)); + create_frame_3_->SetImage(phx::ResourceUtils::LoadResourceFromFile<phx::Image>("laser/target/CheckerBlue.png")); + create_frame_3_->SetHoldable(false); + create_frame_3_->SetOnPress( + [this, object_manager](phx::Transform* t, glm::mat4) { + object_manager->CreateTarget(t->GetGlobalTranslation(), "CheckerBlue.png"); + }); + + create_frame_4_ = new MenuButton(engine, scene, MenuButton::RECTANGULAR); + create_frame_4_->GetTransform()->SetParent( + entity_->GetFirstComponent<phx::Transform>(), false); + create_frame_4_->GetTransform()->SetLocalRotationEuler(glm::vec3(0, -90, 90)); + create_frame_4_->GetTransform()->SetLocalScale(glm::vec3(0.05f, 0.01f, 0.05f)); + create_frame_4_->GetTransform()->SetLocalTranslation(glm::vec3(0, -0.055f, -0.045f)); + create_frame_4_->SetImage(phx::ResourceUtils::LoadResourceFromFile<phx::Image>("laser/target/CheckerGreen.png")); + create_frame_4_->SetHoldable(false); + create_frame_4_->SetOnPress( + [this, object_manager](phx::Transform* t, glm::mat4) { + object_manager->CreateTarget(t->GetGlobalTranslation(), "CheckerGreen.png"); + }); + create_lens_ = new MenuButton(engine, scene, MenuButton::ROUND); create_lens_->GetTransform()->SetParent( entity_->GetFirstComponent<phx::Transform>(), false); create_lens_->GetTransform()->SetLocalRotationEuler(glm::vec3(0, -90, 90)); - create_lens_->GetTransform()->SetLocalScale(glm::vec3(0.03f, 0.01f, 0.03f)); - create_lens_->GetTransform()->SetLocalTranslation(glm::vec3(0, 0, -0.1f)); + create_lens_->GetTransform()->SetLocalScale(glm::vec3(0.043f, 0.01f, 0.102f)); + create_lens_->GetTransform()->SetLocalTranslation(glm::vec3(0, -0.025f, 0.075f)); + create_lens_->SetImage(phx::ResourceUtils::LoadResourceFromFile<phx::Image>("models/opticalBench/menu/lens.png")); create_lens_->SetHoldable(false); create_lens_->SetOnPress( [this, object_manager](phx::Transform* t, glm::mat4) { @@ -68,6 +110,9 @@ ObjectMenu::ObjectMenu(phx::Scene* scene, phx::Engine* engine) { } ObjectMenu::~ObjectMenu() { - delete create_frame_; + delete create_frame_1_; + delete create_frame_2_; + delete create_frame_3_; + delete create_frame_4_; delete create_lens_; } diff --git a/demos/optical_bench/src/object_menu.hpp b/demos/optical_bench/src/object_menu.hpp index 21c04d18068368db1207ed112fdac88f1571762f..7d86401ed6ad71cf8d6b052079cb5a2508eba2a6 100644 --- a/demos/optical_bench/src/object_menu.hpp +++ b/demos/optical_bench/src/object_menu.hpp @@ -29,5 +29,8 @@ class ObjectMenu { // pattern MenuButton* create_lens_; - MenuButton* create_frame_; + MenuButton* create_frame_1_; + MenuButton* create_frame_2_; + MenuButton* create_frame_3_; + MenuButton* create_frame_4_; }; diff --git a/resources/laser/target/CheckerBlue.png b/resources/laser/target/CheckerBlue.png new file mode 100644 index 0000000000000000000000000000000000000000..5bfb9235f4971b55b455014e7fc0b6792254ac01 --- /dev/null +++ b/resources/laser/target/CheckerBlue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2313b203bcde2062d4862a2fb9ba04895c28e7a3e90c90e4fb9fdc0c6915c5cb +size 161 diff --git a/resources/laser/target/CheckerGreen.png b/resources/laser/target/CheckerGreen.png new file mode 100644 index 0000000000000000000000000000000000000000..2171b35c13e614197181405d427a75191f92b598 --- /dev/null +++ b/resources/laser/target/CheckerGreen.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60a29d15cd382b6850d4111ef69b2a36563dd46ce608c40535be6021a1572c12 +size 142 diff --git a/resources/laser/target/CheckerRed.png b/resources/laser/target/CheckerRed.png new file mode 100644 index 0000000000000000000000000000000000000000..4939b2d37437817c55f293a97314da43842853b7 --- /dev/null +++ b/resources/laser/target/CheckerRed.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b3679858717cc583eed5734686ed6c6079ca0d2bf586594bebcd4a1405ae9de +size 142 diff --git a/resources/models/opticalBench/menu/Button_Rectangle.mtl b/resources/models/opticalBench/menu/Button_Rectangle.mtl index b0c0647ff34f77e98025a9cce4ff9d4ab38c0174..31e5285151bf58d8917d447d319b88ce1e47df88 100644 --- a/resources/models/opticalBench/menu/Button_Rectangle.mtl +++ b/resources/models/opticalBench/menu/Button_Rectangle.mtl @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:575c3f6c5f82a1ddf7661816c1c7df4e534ab75cd0ae85560311b5c92bb83ba4 -size 448 +oid sha256:91277ec4ca4a6c38d8c34e97aa391da3d27c31bbe247a4ead01828ea7515bc96 +size 434 diff --git a/resources/models/opticalBench/menu/Button_Rectangle.obj b/resources/models/opticalBench/menu/Button_Rectangle.obj index cb0bf5fef2aceb793f75952e98de0d9a73e43c71..9e268608f25aaaea93dd63fda31e7958bd6e9abe 100644 --- a/resources/models/opticalBench/menu/Button_Rectangle.obj +++ b/resources/models/opticalBench/menu/Button_Rectangle.obj @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3e3745cf412a66481464fa51ebfc0f2c08f14be38c341a626a4de5e7dc87e33 -size 7352 +oid sha256:54a97f2a95e787d4127f837116a613f1cf50472d03605e05f88187cf07581aa4 +size 8594 diff --git a/resources/models/opticalBench/menu/Button_Round.mtl b/resources/models/opticalBench/menu/Button_Round.mtl index b0c0647ff34f77e98025a9cce4ff9d4ab38c0174..31e5285151bf58d8917d447d319b88ce1e47df88 100644 --- a/resources/models/opticalBench/menu/Button_Round.mtl +++ b/resources/models/opticalBench/menu/Button_Round.mtl @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:575c3f6c5f82a1ddf7661816c1c7df4e534ab75cd0ae85560311b5c92bb83ba4 -size 448 +oid sha256:91277ec4ca4a6c38d8c34e97aa391da3d27c31bbe247a4ead01828ea7515bc96 +size 434 diff --git a/resources/models/opticalBench/menu/Button_Round.obj b/resources/models/opticalBench/menu/Button_Round.obj index 154e2dac70a8e60dee11cdcb86c78a34ce08f138..e6d46657e9c45d478e170618accca019f215f86e 100644 --- a/resources/models/opticalBench/menu/Button_Round.obj +++ b/resources/models/opticalBench/menu/Button_Round.obj @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:14b8b71968af4cea8e0f09ec2de7fbe9263343ee8274c6a88ca0eb29c05b5f97 -size 19163 +oid sha256:cc281059a4111020dced74d4f35497435a2c561fd37e771e72a09e7a0de94a96 +size 23098 diff --git a/resources/models/opticalBench/menu/lens.png b/resources/models/opticalBench/menu/lens.png new file mode 100644 index 0000000000000000000000000000000000000000..1e22b6980af058a5a84ec082ce80cefdbd3a53c3 --- /dev/null +++ b/resources/models/opticalBench/menu/lens.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bd940aa3072db7b694f131e0bd8ac8c96f99d8e120b215ac17d9adb07c9043a +size 4151 diff --git a/resources/models/opticalBench/menu/menu.blend b/resources/models/opticalBench/menu/menu.blend index d17002b44cb62a12e36d85f7615e6b60f52179cd..250967e5db22f75173d3a5ff35cd992d4d14c200 100644 Binary files a/resources/models/opticalBench/menu/menu.blend and b/resources/models/opticalBench/menu/menu.blend differ diff --git a/resources/models/opticalBench/menu/menu.blend1 b/resources/models/opticalBench/menu/menu.blend1 index 4c7b0439862e0bf4bd72fdf5d1cd44248ea89d0b..d17002b44cb62a12e36d85f7615e6b60f52179cd 100644 Binary files a/resources/models/opticalBench/menu/menu.blend1 and b/resources/models/opticalBench/menu/menu.blend1 differ