|
Katana Plug-in APIs 0.1
|
00001 // Copyright (c) 2017 The Foundry Visionmongers Ltd. All Rights Reserved. 00002 00003 #ifndef GLTRANSLATEMANIPULATOR_H_ 00004 #define GLTRANSLATEMANIPULATOR_H_ 00005 00006 #include "FnGLTransformManipulator.h" 00007 #include "FnViewer/utils/FnGLManipulator.h" 00008 00009 #include <FnAttribute/FnGroupBuilder.h> 00010 00011 using Foundry::Katana::ViewerUtils::GLTransformManipulator; 00012 00022 class GLTranslateManipulator : public GLTransformManipulator 00023 { 00024 using OpId = Foundry::Katana::ViewerAPI::OptionIdGenerator; 00025 00026 public: 00027 00029 GLTranslateManipulator(); 00030 00032 virtual ~GLTranslateManipulator(); 00033 00040 static const bool kAlwaysAtLocationOrigin; 00041 00043 static Manipulator* create() 00044 { 00045 return new GLTranslateManipulator(); 00046 } 00047 00049 static void flush(){} 00050 00055 static bool matches(FnAttribute::GroupAttribute locationAttrs) 00056 { 00057 return locationAttrs.getChildByName("xform.interactive.translate").isValid(); 00058 } 00059 00066 static FnAttribute::GroupAttribute getTags() 00067 { 00068 FnAttribute::GroupBuilder gb; 00069 gb.set(kTagName, FnAttribute::StringAttribute("Translate")); 00070 gb.set(kTagShortcut, FnAttribute::StringAttribute("W")); 00071 gb.set(kTagGroup, FnAttribute::StringAttribute(kTagGroup_TRANSFORM)); 00072 gb.set(kTagTechnology, FnAttribute::StringAttribute( 00073 GLTransformManipulator::kTechnology)); 00074 gb.set(kTagAlwaysAvailable, FnAttribute::IntAttribute(1)); 00075 gb.set(kTagExclusiveInGroup, FnAttribute::IntAttribute(1)); 00076 gb.set(kTagPriorityInGroup, FnAttribute::IntAttribute(1000)); 00077 00078 return gb.build(); 00079 } 00080 00082 void setup(); 00083 00084 void setOption(OpId::value_type optionId, 00085 FnAttribute::Attribute attr) override; 00086 00087 Foundry::Katana::ViewerUtils::GLManipulatorHandle* m_cHandle{nullptr}; 00088 }; 00089 00090 #endif // GLTRANSLATEMANIPULATOR_H_
1.7.3