Browse Source

SendEvent new renderpath command

Franck Poulain 9 years ago
parent
commit
332fe215f6

+ 6 - 0
Source/Urho3D/Graphics/GraphicsEvents.h

@@ -100,6 +100,12 @@ URHO3D_EVENT(E_ENDVIEWRENDER, EndViewRender)
     URHO3D_PARAM(P_CAMERA, Camera);                // Camera pointer
     URHO3D_PARAM(P_CAMERA, Camera);                // Camera pointer
 }
 }
 
 
+/// A render path event has occured.
+URHO3D_EVENT(E_RENDERPATHEVENT, RenderPathEvent)
+{
+    URHO3D_PARAM(P_NAME, Name);                    // String
+}
+
 /// Graphics context has been lost. Some or all (depending on the API) GPU objects have lost their contents.
 /// Graphics context has been lost. Some or all (depending on the API) GPU objects have lost their contents.
 URHO3D_EVENT(E_DEVICELOST, DeviceLost)
 URHO3D_EVENT(E_DEVICELOST, DeviceLost)
 {
 {

+ 5 - 0
Source/Urho3D/Graphics/RenderPath.cpp

@@ -46,6 +46,7 @@ static const char* commandTypeNames[] =
     "forwardlights",
     "forwardlights",
     "lightvolumes",
     "lightvolumes",
     "renderui",
     "renderui",
+    "sendevent",
     0
     0
 };
 };
 
 
@@ -180,6 +181,10 @@ void RenderPathCommand::Load(const XMLElement& element)
         }
         }
         break;
         break;
 
 
+    case CMD_SENDEVENT:
+        eventName_ = element.GetAttribute("name");
+        break;
+
     default:
     default:
         break;
         break;
     }
     }

+ 4 - 1
Source/Urho3D/Graphics/RenderPath.h

@@ -43,7 +43,8 @@ enum RenderCommandType
     CMD_QUAD,
     CMD_QUAD,
     CMD_FORWARDLIGHTS,
     CMD_FORWARDLIGHTS,
     CMD_LIGHTVOLUMES,
     CMD_LIGHTVOLUMES,
-    CMD_RENDERUI
+    CMD_RENDERUI,
+    CMD_SENDEVENT
 };
 };
 
 
 /// Rendering path sorting modes.
 /// Rendering path sorting modes.
@@ -199,6 +200,8 @@ struct URHO3D_API RenderPathCommand
     bool useLitBase_;
     bool useLitBase_;
     /// Vertex lights flag.
     /// Vertex lights flag.
     bool vertexLights_;
     bool vertexLights_;
+    /// Event name
+    String eventName_;
 };
 };
 
 
 /// Rendering path definition. A sequence of commands (e.g. clear screen, draw objects with specific pass) that yields the scene rendering result.
 /// Rendering path definition. A sequence of commands (e.g. clear screen, draw objects with specific pass) that yields the scene rendering result.

+ 10 - 0
Source/Urho3D/Graphics/View.cpp

@@ -1661,6 +1661,16 @@ void View::ExecuteRenderPathCommands()
                 }
                 }
                 break;
                 break;
 
 
+            case CMD_SENDEVENT:
+                {
+                    using namespace RenderPathEvent;
+
+                    VariantMap& eventData = GetEventDataMap();
+                    eventData[P_NAME] = command.eventName_;
+                    renderer_->SendEvent(E_RENDERPATHEVENT, eventData);
+                }
+                break;
+
             default:
             default:
                 break;
                 break;
             }
             }