|
Katana Plug-in APIs 0.1
|
00001 // Copyright (c) 2018 The Foundry Visionmongers Ltd. All Rights Reserved. 00002 00003 #ifndef _EXAMPLESPOTLIGHTLOCATOR_H_ 00004 #define _EXAMPLESPOTLIGHTLOCATOR_H_ 00005 00006 #include <string> 00007 #include <vector> 00008 00009 #include <FnViewer/utils/FnBaseLocator.h> 00010 00020 class ExampleSpotlightLocatorVDC : public FnKat::ViewerUtils::FnBaseLocatorVDC 00021 { 00022 public: 00023 virtual ~ExampleSpotlightLocatorVDC() {} 00024 00025 static void flush() {} 00026 00027 static FnKat::ViewerAPI::ViewerDelegateComponent* create() 00028 { 00029 return new ExampleSpotlightLocatorVDC(); 00030 } 00031 00033 bool locationEvent( 00034 const Foundry::Katana::ViewerAPI::ViewerLocationEvent& event, 00035 bool locationHandled) override; 00036 00038 void setOption( 00039 FnKat::ViewerAPI::OptionIdGenerator::value_type optionId, 00040 FnAttribute::Attribute attr) override; 00041 00042 private: 00043 ExampleSpotlightLocatorVDC(); 00044 00045 bool m_overrideStandardLocators; 00046 }; 00047 00054 class ExampleSpotlightLocatorViewportLayer : 00055 public FnKat::ViewerUtils::FnBaseLocatorViewportLayer 00056 { 00057 public: 00058 virtual ~ExampleSpotlightLocatorViewportLayer() {} 00059 00060 static FnKat::ViewerAPI::ViewportLayer* create() 00061 { 00062 return new ExampleSpotlightLocatorViewportLayer(); 00063 } 00064 00066 virtual void draw() override; 00067 00069 virtual void setOption( 00070 FnKat::ViewerAPI::OptionIdGenerator::value_type optionId, 00071 FnAttribute::Attribute attr) override; 00072 00073 private: 00074 ExampleSpotlightLocatorViewportLayer(); 00075 00076 bool m_enlargedLocators; 00077 }; 00078 00079 00082 class ExampleSpotlightLocator : public FnKat::ViewerUtils::FnBaseLocator 00083 { 00084 public: 00085 ExampleSpotlightLocator() : m_vao(0), m_ebo(0), m_vbo(0) {} 00086 virtual ~ExampleSpotlightLocator() {} 00087 00088 static FnKat::ViewerUtils::FnBaseLocator* create() 00089 { 00090 return new ExampleSpotlightLocator(); 00091 } 00092 00095 static bool matches(const FnKat::ViewerAPI::ViewerLocationEvent& event); 00096 00099 static bool overridesBaseGeometry( 00100 const FnKat::ViewerAPI::ViewerLocationEvent& event); 00101 00103 static FnAttribute::DoubleAttribute getBounds( 00104 const FnKat::ViewerAPI::ViewerLocationEvent& event); 00105 00107 static FnAttribute::DoubleAttribute computeExtent( 00108 const FnKat::ViewerAPI::ViewerLocationEvent& event); 00109 00111 virtual void setup(); 00113 virtual void cleanup(); 00114 00117 virtual void draw(const std::string& locationPath); 00118 00122 virtual void pickerDraw( 00123 const std::string& locationPath); 00124 00126 void generateCone(float radius, 00127 float height, 00128 int segments, 00129 std::vector<float>& vertices, 00130 std::vector<unsigned int>& indices); 00131 00132 private: 00134 void drawLight(const std::string& locationPath); 00135 00136 GLuint m_vao; 00137 00139 GLuint m_ebo; 00140 00142 GLuint m_vbo; 00143 00144 std::vector<float> m_vertices; 00145 std::vector<unsigned int> m_indices; 00146 }; 00147 00148 #endif
1.7.3