diff --git a/Projects/Engine/Source/App/GUI/TopMenuBar.cpp b/Projects/Engine/Source/App/GUI/TopMenuBar.cpp index 0a87dfc..1733f12 100644 --- a/Projects/Engine/Source/App/GUI/TopMenuBar.cpp +++ b/Projects/Engine/Source/App/GUI/TopMenuBar.cpp @@ -9,46 +9,88 @@ namespace RNR Ogre::OverlayManager* overlayManager = Ogre::OverlayManager::getSingletonPtr(); Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().create("Background", "General"); - material->getTechnique(0)->getPass(0)->createTextureUnitState("placeholder.png"); + material->getTechnique(0)->getPass(0)->createTextureUnitState("textures/placeholder.png"); + material->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setColourOperationEx(Ogre::LBX_MODULATE, Ogre::LBS_MANUAL, Ogre::LBS_CURRENT, Ogre::ColourValue(0.5, 0.5, 0.5)); material->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setAlphaOperation(Ogre::LBX_MODULATE, Ogre::LBS_MANUAL, Ogre::LBS_CURRENT, 0.5f); - material->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setColourOperationEx(Ogre::LBX_MODULATE, Ogre::LBS_MANUAL, Ogre::LBS_CURRENT, Ogre::ColourValue(1.0, 1.0, 1.0)); material->getTechnique(0)->getPass(0)->setDepthCheckEnabled(false); material->getTechnique(0)->getPass(0)->setDepthWriteEnabled(false); material->getTechnique(0)->getPass(0)->setLightingEnabled(false); + material->getTechnique(0)->getPass(0)->setSceneBlending(Ogre::SceneBlendType::SBT_TRANSPARENT_COLOUR); - Ogre::OverlayContainer* panel = static_cast(overlayManager->createOverlayElement("Panel", "PanelName")); + Ogre::OverlayContainer* panel = static_cast(overlayManager->createOverlayElement("Panel", "TopMenuBarPanel")); panel->setMetricsMode(Ogre::GMM_PIXELS); panel->setPosition(0,0); - panel->setDimensions(320, 24); + panel->setDimensions(128 * 5, 20); panel->setMaterial(material); - Ogre::TextAreaOverlayElement* textArea = static_cast(overlayManager->createOverlayElement("TextArea", "TextAreaName")); - textArea->setMetricsMode(Ogre::GMM_PIXELS); - textArea->setPosition(0, 0); - textArea->setDimensions(320, 24); - textArea->setCaption("Hello, World!"); - textArea->setCharHeight(24); - textArea->setFontName("ComicSans"); - textArea->setColour(Ogre::ColourValue(0.f,0.f,0.f)); + Ogre::ColourValue text_color = Ogre::ColourValue(0.25, 0.25, 0.25); + + Ogre::TextAreaOverlayElement* toolsTextArea = static_cast(overlayManager->createOverlayElement("TextArea", "TopMenuBarTools")); + toolsTextArea->setMetricsMode(Ogre::GMM_PIXELS); + toolsTextArea->setPosition(0, 0); + toolsTextArea->setDimensions(128, 24); + toolsTextArea->setCaption("Tools"); + toolsTextArea->setCharHeight(24); + toolsTextArea->setFontName("ComicSans"); + toolsTextArea->setColour(text_color); + + Ogre::TextAreaOverlayElement* insertTextArea = static_cast(overlayManager->createOverlayElement("TextArea", "TopMenuBarInsert")); + insertTextArea->setMetricsMode(Ogre::GMM_PIXELS); + insertTextArea->setPosition(128, 0); + insertTextArea->setDimensions(128, 24); + insertTextArea->setCaption("Insert"); + insertTextArea->setCharHeight(24); + insertTextArea->setFontName("ComicSans"); + insertTextArea->setColour(text_color); + + Ogre::TextAreaOverlayElement* fullscreenTextArea = static_cast(overlayManager->createOverlayElement("TextArea", "TopMenuBarFullscreen")); + fullscreenTextArea->setMetricsMode(Ogre::GMM_PIXELS); + fullscreenTextArea->setPosition(128*2, 0); + fullscreenTextArea->setDimensions(128, 24); + fullscreenTextArea->setCaption("Fullscreen"); + fullscreenTextArea->setCharHeight(24); + fullscreenTextArea->setFontName("ComicSans"); + fullscreenTextArea->setColour(text_color); + + Ogre::TextAreaOverlayElement* helpTextArea = static_cast(overlayManager->createOverlayElement("TextArea", "TopMenuBarHelp")); + helpTextArea->setMetricsMode(Ogre::GMM_PIXELS); + helpTextArea->setPosition(128*3, 0); + helpTextArea->setDimensions(128, 24); + helpTextArea->setCaption("Help..."); + helpTextArea->setCharHeight(24); + helpTextArea->setFontName("ComicSans"); + helpTextArea->setColour(text_color); + + Ogre::TextAreaOverlayElement* exitTextArea = static_cast(overlayManager->createOverlayElement("TextArea", "TopMenuBarExit")); + exitTextArea->setMetricsMode(Ogre::GMM_PIXELS); + exitTextArea->setPosition(128*4, 0); + exitTextArea->setDimensions(128, 24); + exitTextArea->setCaption("Exit"); + exitTextArea->setCharHeight(24); + exitTextArea->setFontName("ComicSans"); + exitTextArea->setColour(text_color); + + panel->addChild(toolsTextArea); + panel->addChild(insertTextArea); + panel->addChild(fullscreenTextArea); + panel->addChild(helpTextArea); + panel->addChild(exitTextArea); m_debugText = static_cast(overlayManager->createOverlayElement("TextArea", "DebugTextArea")); m_debugText->setMetricsMode(Ogre::GMM_PIXELS); m_debugText->setPosition(0, 300); m_debugText->setDimensions(420, 500); m_debugText->setCaption("Debug text!"); - m_debugText->setCharHeight(24); + m_debugText->setCharHeight(16); m_debugText->setFontName("ComicSans"); m_debugText->setColour(Ogre::ColourValue(0.5f,0.f,0.5f)); + panel->addChild(m_debugText); Ogre::Overlay* overlay = overlayManager->create("OverlayName"); overlay->add2D(panel); overlay->setZOrder(500); - panel->addChild(textArea); - - panel->addChild(m_debugText); - overlay->show(); } diff --git a/Projects/Engine/Source/App/V8/DataModel/PartInstance.cpp b/Projects/Engine/Source/App/V8/DataModel/PartInstance.cpp index a971852..8fb0f38 100644 --- a/Projects/Engine/Source/App/V8/DataModel/PartInstance.cpp +++ b/Projects/Engine/Source/App/V8/DataModel/PartInstance.cpp @@ -29,7 +29,7 @@ namespace RNR Ogre::Entity* entity = (Ogre::Entity*)getObject(); for(auto& subentity : entity->getSubEntities()) { - subentity->getMaterial()->setManualCullingMode(Ogre::ManualCullingMode::MANUAL_CULL_BACK); + subentity->setMaterial(BrickColor::material(m_brickColor)); } } diff --git a/Projects/Engine/Source/App/V8/DataModel/Workspace.cpp b/Projects/Engine/Source/App/V8/DataModel/Workspace.cpp index ed31561..ac9dd77 100644 --- a/Projects/Engine/Source/App/V8/DataModel/Workspace.cpp +++ b/Projects/Engine/Source/App/V8/DataModel/Workspace.cpp @@ -35,7 +35,8 @@ namespace RNR { case BATCH_INSTANCED: { - Ogre::InstancedEntity* replica = m_instanceManager->createInstancedEntity("materials/partinstanced"); + Ogre::Entity* childEntity = (Ogre::Entity*)childAdded->getObject(); + Ogre::InstancedEntity* replica = m_instanceManager->createInstancedEntity(childEntity->getSubEntity(0)->getMaterialName()); replica->setPosition(part->getPosition()); replica->setOrientation(part->getCFrame().getRotation()); replica->setScale(part->getSize());