HDK
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LOP_Network.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: LOP Library (C++)
7  *
8  * COMMENTS: LOP manager node for other network types.
9  *
10  */
11 
12 #ifndef __LOP_Network_h__
13 #define __LOP_Network_h__
14 
15 #include "LOP_API.h"
16 #include "LOP_Node.h"
17 #include "LOP_SelectionRule.h"
19 #include <HUSD/HUSD_PostLayers.h>
20 #include <HUSD/HUSD_FindPrims.h>
21 #include <HUSD/HUSD_LoadMasks.h>
22 #include <HUSD/HUSD_Overrides.h>
23 #include <HUSD/HUSD_Utils.h>
24 #include <GU/GU_SelectType.h>
25 #include <UT/UT_StringMap.h>
26 
27 #define LOP_EXPANSION_DATA_BLOCK_TYPE "expansion"
28 #define LOP_OVERRIDES_DATA_BLOCK_TYPE "overrides"
29 #define LOP_LOADMASKS_DATA_BLOCK_TYPE "loadmasks"
30 #define LOP_POSTLAYERS_DATA_BLOCK_TYPE "postlayers"
31 #define LOP_ONLOAD_DATA_BLOCK_PREFIX "__onload__."
32 
34 {
39 };
40 
42 {
43 public:
44  // Standard OP_Network stuff:
45  static const char *theChildTableName;
46  static OP_Node *myConstructor(OP_Network *net, const char *name,
47  OP_Operator *entry);
48  static PRM_Template myTemplateList[];
49 
51  UT_String &assetpath) override;
54  resolverstrings) override;
55  bool getVariantSelectionFallbacks(
57  fallbacks);
58  int getLargeLayerModifiedPrimCount();
59 
60  void opChanged(OP_EventType reason,
61  void *data = 0) override;
62  void onCreated() override;
63  int isSubNetwork(bool includemanagementops)
64  const override;
65  OP_Node *getDisplayNodePtr() override;
66  void childFlagChange(OP_Node *nodeptr) override;
67  LOP_Node *getViewerLop() override;
68 
70  { return myOverrides; }
71  HUSD_OverridesPtr editableOverrides();
72  void resetOverrides();
73 
75  { return myPostLayers; }
76  HUSD_PostLayersPtr editablePostLayers();
77  void resetPostLayers();
78 
80  { return myExpansionState; }
82  { return myExpansionState; }
83 
84  const HUSD_LoadMasks &loadMasks() const
85  { return myLoadMasks; }
86  void setLoadMasks(const HUSD_LoadMasks &load_masks);
87 
88  bool setStateFromDataBlock(
89  const UT_StringRef &blockname,
90  const char *blocktype = nullptr);
91  bool saveExpansionState(
92  const UT_StringHolder &expansionname,
93  const HUSD_ExpansionState &expansion);
94  bool saveOverrides(
95  const UT_StringHolder &overridesname,
96  const HUSD_Overrides &overrides);
97  bool savePostLayers(
98  const UT_StringHolder &postlayersname,
99  const HUSD_PostLayers &postlayers);
100  bool saveLoadMasks(
101  const UT_StringHolder &load_masks_name,
102  const HUSD_LoadMasks &load_masks);
103 
104  const HUSD_PathSet &selection() const
105  { return mySelection; }
107  { return mySelectionCurrentPrim; }
109  { return mySelectionWithInstanceIds; }
110  // Return true if the selection is actually changed by this call.
111  // If not, we do not send the OP_DATA_USERSELECTION_CHANGED event.
112  bool modifySelection(const HUSD_PathSet &paths,
113  const HUSD_InstanceSelection &
114  paths_with_instance_ids,
115  const UT_StringHolder *currentprim =
116  nullptr,
117  GU_SelectionRule rule =
120  { return mySelectionVersionId; }
121 
122  const LOP_SelectionRuleMap &selectionRules() const;
123  void clearSelectionRules();
124  void removeSelectionRule(
125  const UT_StringHolder &name);
126  void addSelectionRule(
127  const UT_StringHolder &name,
128  const LOP_SelectionRule &collection);
129 
130  void saveSelectionRules(std::ostream &os) const;
131  bool loadSelectionRules(UT_IStream &is);
132 
133  void getPinnedPrimitives(
134  UT_String &pinnedprims) const;
135  void setPinnedPrimitives(
136  const UT_StringRef &pinnedprims);
137 
138  // Key strings we use during snapshot network serialisation
142 
143  // When we take a render gallery snapshot, we also save the state of the
144  // LOP network. This method encapsulates saving this data.
145  void saveNetworkForSnapshot(std::ostream &os);
146 
147  UT_StringHolder getRenderGallerySource() const;
148  bool saveRenderGalleryToDisk();
149 
150  static UT_StringHolder makeValidSelectionRuleName(
151  const UT_StringHolder &name);
152 
153 protected:
154  LOP_Network(OP_Network *parent, const char *name,
155  OP_Operator *entry);
156  ~LOP_Network() override;
157 
158  void clearAndDestroy() override;
159 
160  OP_ERROR cookMyLop(OP_Context &context) override;
161 
162  OP_ERROR save(std::ostream &os, const OP_SaveFlags &flags,
163  const char *pathPrefix,
164  const UT_String &name_override =
165  UT_String()) override;
166  bool load(UT_IStream &is, const char *extension,
167  const char *path=0) override;
168  void loadFinished() override;
169 
170 private:
171  static void forceRecookAllChildren(LOP_Node *root, bool firstcall);
172 
173  HUSD_ExpansionState myExpansionState;
174  HUSD_LoadMasks myLoadMasks;
175  HUSD_PostLayersPtr myPostLayers;
176  HUSD_OverridesPtr myOverrides;
177  HUSD_PathSet mySelection;
178  UT_StringHolder mySelectionCurrentPrim;
179  HUSD_InstanceSelection mySelectionWithInstanceIds;
180  LOP_SelectionRuleMap mySelectionRuleMap;
181  int mySelectionVersionId;
182  UT_StringHolder myCachedResolverContextAssetPath;
183  UT_StringMap<UT_StringHolder> myCachedResolverContextStrings;
184  UT_StringMap<UT_StringArray> myVariantSelectionFallbacks;
185 };
186 
187 #endif
GLbitfield flags
Definition: glcorearb.h:1596
virtual bool getResolverContextAssetPath(UT_String &assetpath)
const HUSD_InstanceSelection & selectionWithInstanceIds() const
Definition: LOP_Network.h:108
void childFlagChange(OP_Node *nodeptr) override
virtual int isSubNetwork(bool includemanagementops) const
GLsizei const GLchar *const * path
Definition: glcorearb.h:3341
void onCreated() override
Overriden in VOPs.
UT_ErrorSeverity
Definition: UT_Error.h:25
const HUSD_ExpansionState & expansionState() const
Definition: LOP_Network.h:79
static const char * theChildTableName
Definition: LOP_Network.h:45
void saveOverrides(std::ostream &os)
const HUSD_PathSet & selection() const
Definition: LOP_Network.h:104
int getSelectionVersionId() const
Definition: LOP_Network.h:119
HUSD_ConstOverridesPtr overrides() const
Definition: LOP_Network.h:69
const HUSD_LoadMasks & loadMasks() const
Definition: LOP_Network.h:84
GU_SelectionRule
Definition: GU_SelectType.h:40
virtual bool getResolverContextStrings(UT_StringMap< UT_StringHolder > &resolverstrings)
virtual void loadFinished()
#define LOP_API
Definition: LOP_API.h:10
GLuint const GLchar * name
Definition: glcorearb.h:786
static const UT_StringHolder EXTRA_DATA_FORMAT
Definition: LOP_Network.h:139
OP_Node * getDisplayNodePtr() override
virtual OP_ERROR cookMyLop(OP_Context &context)=0
void clearAndDestroy() override
void opChanged(OP_EventType reason, void *data=0) override
static const UT_StringHolder LAST_PICKED_NODE
Definition: LOP_Network.h:140
static const UT_StringHolder PICKED_NODES
Definition: LOP_Network.h:141
HUSD_ExpansionState & editableExpansionState()
Definition: LOP_Network.h:81
OP_EventType
Definition: OP_Value.h:22
virtual LOP_Node * getViewerLop()
LOP_NetworkCustomData
Definition: LOP_Network.h:33
HUSD_ConstPostLayersPtr postLayers() const
Definition: LOP_Network.h:74
bool load(UT_IStream &is, const char *ext="", const char *path=0) override
virtual OP_ERROR save(std::ostream &os, const OP_SaveFlags &flags, const char *path_prefix="", const UT_String &name_override=UT_String())
OIIO_UTIL_API std::string extension(string_view filepath, bool include_dot=true) noexcept
const UT_StringHolder & selectionCurrentPrim() const
Definition: LOP_Network.h:106
Definition: format.h:895