[Orxonox-commit 7771] r12363 - in code/branches/MouseAPI_FS19: data/levels data/overlays src/modules/MouseAPI

tkuonen at orxonox.net tkuonen at orxonox.net
Thu May 9 16:04:31 CEST 2019


Author: tkuonen
Date: 2019-05-09 16:04:30 +0200 (Thu, 09 May 2019)
New Revision: 12363

Added:
   code/branches/MouseAPI_FS19/data/overlays/MouseCursor.oxo
Modified:
   code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapicursor.cc
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapicursor.h
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.cc
Log:
Added MouseCursor


Modified: code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw
===================================================================
--- code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw	2019-05-09 13:53:01 UTC (rev 12362)
+++ code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw	2019-05-09 14:04:30 UTC (rev 12363)
@@ -8,6 +8,8 @@
 <?lua
   include("stats.oxo")
   include("HUDTemplates3.oxo")
+  include("MouseCursor.oxo")
+  include("tetrisHUD.oxo")
   include("templates/lodInformation.oxt")
 ?>
 
@@ -20,7 +22,7 @@
   <templates>
     <Template link=lodtemplate_default />
   </templates>
-	
+
   <Scene
     ambientlight = "0.8, 0.8, 0.8"
     skybox       = "Orxonox/Starbox"
@@ -48,7 +50,8 @@
     </attached> 
 </MouseAPIExample>
 
- 
+<!--<MouseAPICursor></MouseAPICursor>
+<MouseCursor></MouseCursor>-->
   </Scene>
 </Level>
 

Added: code/branches/MouseAPI_FS19/data/overlays/MouseCursor.oxo
===================================================================
--- code/branches/MouseAPI_FS19/data/overlays/MouseCursor.oxo	                        (rev 0)
+++ code/branches/MouseAPI_FS19/data/overlays/MouseCursor.oxo	2019-05-09 14:04:30 UTC (rev 12363)
@@ -0,0 +1,5 @@
+<Template name="MouseCursor">
+<OverlayGroup name = "MouseCursorGroup" scale = "1, 1">
+    <MouseAPICursor name="cursor" position = "0, 0" size="0.03, 0.03" cursorShape="cursor.png"></MouseAPICursor>
+</OverlayGroup>
+</Template>

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc	2019-05-09 13:53:01 UTC (rev 12362)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc	2019-05-09 14:04:30 UTC (rev 12363)
@@ -1,5 +1,15 @@
 #include "mouseapi.h"
 
+#if OGRE_VERSION >= 0x010900
+#   include <Overlay/OgreOverlayManager.h>
+#   include <Overlay/OgrePanelOverlayElement.h>
+#else
+#   include <OgreOverlayManager.h>
+#   include <OgrePanelOverlayElement.h>
+#endif
+
+#include "util/StringUtils.h"
+
 namespace orxonox{
 
 ManageScopedSingleton(MouseAPI, ScopeID::GRAPHICS, false);
@@ -28,6 +38,14 @@
             //InputManager::getInstance().getState("game")->
         }
         //GUIManager::getInstance().showGUI("MouseAPICursor", true);//Display a mouse cursor by displaying a empty menu
+        /*cursor = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
+                                                               .createOverlayElement("Panel", "MouseAPI_cursor_" + getUniqueNumberString()));
+        cursor->setMaterialName("Orxonox/RadarMarker");//todo: better material
+        cursor->setPosition(0,0);
+        cursor->setDimensions(0.1,0.1);
+        Ogre::Overlay* overlay = Ogre::OverlayManager::getSingleton().create( "MouseAPI_cursor_" + getUniqueNumberString() );
+        overlay->show();*/
+        //this->overlay_->add2D(this->cursor);
     }
 
 }
@@ -83,7 +101,7 @@
     if(active)
     {
         InputManager::getInstance().leaveState("game");//hack: todo: crate 2nd input state with prioritz 98 for cegui(cursor)
-        GUIManager::getInstance().showGUI("MouseAPICursor", false);//hack todo: only if gui not shown & evt better if not in mouse mooved
+        //GUIManager::getInstance().showGUI("MouseAPICursor", false);//hack todo: only if gui not shown & evt better if not in mouse mooved
     }
 
 }

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h	2019-05-09 13:53:01 UTC (rev 12362)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h	2019-05-09 14:04:30 UTC (rev 12363)
@@ -95,6 +95,8 @@
     // true => MouseAPI has been activated, false => MouseAPI has not been activated
     bool active = false;
 
+    Ogre::PanelOverlayElement* cursor;
+
 public:
 
     MouseAPI();

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapicursor.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapicursor.cc	2019-05-09 13:53:01 UTC (rev 12362)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapicursor.cc	2019-05-09 14:04:30 UTC (rev 12363)
@@ -7,7 +7,39 @@
 MouseAPICursor::MouseAPICursor(Context* context):OrxonoxOverlay(context)
 {
     RegisterObject(MouseAPICursor);
-//TODO: copy from radar overlay
+    cursor = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
+                                                          .createOverlayElement("Panel", "MouseAPI_cursor_" + getUniqueNumberString()));
+    cursor->setMaterialName(TextureGenerator::getMaterialName(
+                                      cursorname, Ogre::ColourValue::White));
+
+    overlay_->add2D(this->cursor);
+    scale(Vector2(0.03,0.03));
+    setVisible(true);
 }
 
+MouseAPICursor::~MouseAPICursor()
+{
+    if(running)
+        MouseAPI::getInstance().deactivate();
 }
+
+void MouseAPICursor::XMLPort(ticpp::Element &xmlelement, XMLPort::Mode mode)
+{
+    MouseAPI::getInstance().activate();
+    running = true;
+    SUPER(MouseAPICursor, XMLPort, xmlelement, mode);
+    XMLPortParam(MouseAPICursor, "cursorShape", setCursorName, getCursorName,xmlelement, mode);
+    //XMLPortParam(MouseAPICursor, "cursorColor", setCursorColor, getCursorColor,xmlelement, mode);//TODO: ColoValue::setAsARGB()
+}
+
+void MouseAPICursor::tick(float dt)
+{
+    if(running)
+    {
+        this->cursor->show();
+        this->show();
+        this->setPosition(MouseAPI::getInstance().getMousePosition());
+    }
+}
+
+}

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapicursor.h
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapicursor.h	2019-05-09 13:53:01 UTC (rev 12362)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapicursor.h	2019-05-09 14:04:30 UTC (rev 12363)
@@ -2,13 +2,47 @@
 #define MOUSEAPICURSOR_H
 #include <overlays/OrxonoxOverlay.h>
 #include "core/CoreIncludes.h"
+#include "tools/interfaces/Tickable.h"
+#include "overlays/OverlayGroup.h"
+#include "mouseapi.h"
+#include "core/XMLPort.h"
 
+
+#if OGRE_VERSION >= 0x010900
+#   include <Overlay/OgreOverlayManager.h>
+#   include <Overlay/OgrePanelOverlayElement.h>
+#else
+#   include <OgreOverlayManager.h>
+#   include <OgrePanelOverlayElement.h>
+#endif
+
+#include "tools/TextureGenerator.h"
+#include "util/StringUtils.h"
+
 namespace orxonox{
 
-class MouseAPICursor: public OrxonoxOverlay
+class MouseAPICursor: public OrxonoxOverlay, public Tickable
 {
+private:
+    Ogre::PanelOverlayElement* cursor;
+    bool running = false;
+    std::string cursorname = "cursor.png";
 public:
     MouseAPICursor(Context* context);
+    ~MouseAPICursor();
+    virtual void tick(float dt) override;
+    virtual void XMLPort(ticpp::Element &xmlelement, XMLPort::Mode mode) override;
+    inline void setCursorName(const std::string& name)
+    {
+        cursorname = name;
+        cursor->setMaterialName(TextureGenerator::getMaterialName(
+                                                      cursorname, Ogre::ColourValue::White));
+    }
+    inline std::string getCursorName(void) const
+    {
+        return cursorname;
+    }
+
 };
 
 }

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.cc	2019-05-09 13:53:01 UTC (rev 12362)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.cc	2019-05-09 14:04:30 UTC (rev 12363)
@@ -7,10 +7,12 @@
     RegisterObject(MouseGametype);
     player_ =nullptr;
 
+    this->setHUDTemplate("MouseCursor");
+
 }
 
-void MouseGametype::start(){
-
+void MouseGametype::start()
+{
     bool temp = this->bForceSpawn_;
     this->bForceSpawn_ = true;
 
@@ -19,6 +21,7 @@
 
     // Reset the variable.
     this->bForceSpawn_ = temp;
+
 }
 
 void MouseGametype::spawnPlayersIfRequested()
@@ -38,7 +41,6 @@
     {
         this->player_ = player;
         this->players_[player].state_ = PlayerState::Alive;
-
     }
 }
 



More information about the Orxonox-commit mailing list