HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
VEX_GeoCommand.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: VEX_GeoCommand.h ( VEX Library, C++)
7  *
8  * COMMENTS: Generic commands and queues to store geometry
9  * edit operations
10  */
11 
12 #ifndef __VEX_GeoCommand__
13 #define __VEX_GeoCommand__
14 
15 #include "VEX_API.h"
16 
17 #include "VEX_Types.h"
18 
19 #include <UT/UT_Array.h>
20 #include <UT/UT_SharedString.h>
21 #include <UT/UT_StringHolder.h>
22 #include <UT/UT_StringSet.h>
23 #include <UT/UT_Vector3.h>
24 #include <UT/UT_VectorTypes.h>
25 #include <UT/UT_IntArray.h>
26 #include <UT/UT_PageArray.h>
27 
29 {
30 public:
31  enum MODE_TYPE
32  {
40  MODE_INVALID
41  };
42 
43  static MODE_TYPE modeFromString(const char *mode);
44 
45  VEX_GeoCommand(exint srcelem) { mySourceElem = srcelem; }
46  VEX_GeoCommand(): mySourceElem(-1) {}
47 
48  exint elem() const { return mySourceElem; }
49 
50 protected:
52 };
53 
55 {
56 public:
57  enum PRIM_TYPE
58  {
69  PRIM_INVALID
70  };
71 
72  static PRIM_TYPE typeFromString(const char *type);
73 
75  : VEX_GeoCommand(srcelem)
76  , myType(primtype)
77  {
78  }
79  VEX_GeoCommandPrimAdd(): myType(PRIM_INVALID) {}
80 
81  PRIM_TYPE type() const { return myType; }
82 
83 protected:
85 };
86 
88 {
89 public:
91  : VEX_GeoCommand(srcelem)
92  , myPos(pos)
93  , mySrcPt(-1)
94  {
95  }
96  VEX_GeoCommandPointAdd(exint srcelem, int srcpt)
97  : VEX_GeoCommand(srcelem)
98  , myPos(0.0, 0.0, 0.0)
99  , mySrcPt(srcpt)
100  {
101  }
102  VEX_GeoCommandPointAdd(): mySrcPt(-1) {}
103 
104  UT_Vector3 pos() const { return myPos; }
105  int srcpt() const { return mySrcPt; }
106 
107 protected:
108  // Ideally we'd union, but C++ makes this frustrating.
109  int mySrcPt;
111 };
112 
114 {
115 public:
116  VEX_GeoCommandVertexAdd(exint srcelem, int primnum, int ptnum)
117  : VEX_GeoCommand(srcelem)
118  , myPrimNum(primnum)
119  , myPtNum(ptnum)
120  {
121  }
122  VEX_GeoCommandVertexAdd(): myPrimNum(-1), myPtNum(-1) {}
123 
124  int primnum() const { return myPrimNum; }
125  int ptnum() const { return myPtNum; }
126 
127 protected:
129  int myPtNum;
130 };
131 
133 {
134 public:
136  : VEX_GeoCommand(srcelem)
137  , myObjNum(objnum)
138  {
139  }
140  VEX_GeoCommandObjectRemove(): myObjNum(-1) {}
141 
142  exint objnum() const { return myObjNum; }
143 
144 protected:
145  int myObjNum;
146 };
147 
148 // Do NOT use VEX_API here for template classes with all code in the header!
149 template <typename T>
151 {
152 public:
154  exint secnum,
155  MODE_TYPE mode,
156  T data)
157  : VEX_GeoCommand(srcelem)
158  , myObjNum(objnum)
159  , mySecNum(secnum)
160  , myMode(mode)
161  , myData(data)
162  {
163  }
165  : myObjNum(-1)
166  , mySecNum(-1)
167  , myMode(MODE_SET)
168  , myData(T()) {}
169 
170  exint objnum() const { return myObjNum; }
171  exint secnum() const { return mySecNum; }
172  MODE_TYPE mode() const { return myMode; }
173  T data() const { return myData; }
174 
175 protected:
176  int myObjNum;
177  int mySecNum;
180 };
181 
183 {
184 public:
185  VEX_GeoCommandVertexRewire(exint srcelem, exint primnum, exint vtxidx, exint newptnum)
186  : VEX_GeoCommand(srcelem)
187  , myPrimNum(primnum)
188  , myVtxIdx(vtxidx)
189  , myPtNum(newptnum)
190  {
191  }
192  VEX_GeoCommandVertexRewire(): myPrimNum(-1), myVtxIdx(-1), myPtNum(-1) {}
193 
194  // -1 for primnum implies a linear vertex
195  int primnum() const { return myPrimNum; }
196  int vtxidx() const { return myVtxIdx; }
197  int ptnum() const { return myPtNum; }
198 
199 protected:
200  int myPrimNum, myVtxIdx, myPtNum;
201 };
202 
204 {
205 public:
207  const UT_Matrix4F &xform, exint xformidx,
208  bool worldspace)
209  : VEX_GeoCommand(srcelem),
210  myPrimNum(primnum),
211  myXform(xform),
212  myXformIdx(xformidx),
213  myWorldSpace(worldspace)
214  {
215  }
216  VEX_GeoCommandAgentXformEdit(): myPrimNum(-1), myXformIdx(-1) {}
217 
218  exint primnum() const { return myPrimNum; }
219  const UT_Matrix4F &xform() const { return myXform; }
220  exint xformidx() const { return myXformIdx; }
221  bool worldspace() const { return myWorldSpace; }
222 
223 protected:
228 };
229 
231 {
232 public:
234  const UT_StringArray &clipnames,
235  const UT_Array<float> &cliptimes,
236  const UT_Array<float> &clipweights,
237  const UT_StringArray &clipxformgroups,
238  const UT_Array<int> &cliplayerids,
239  const UT_Array<int> &cliplayermodes,
240  const UT_Array<float> &cliplayerweights,
241  const UT_Array<int> &cliplayerparents)
242  : VEX_GeoCommand(srcelem),
243  myPrimNum(primnum),
244  myClipNames(clipnames),
245  myClipTimes(cliptimes),
246  myClipWeights(clipweights),
247  myClipXformGroups(clipxformgroups),
248  myClipLayerIds(cliplayerids),
249  myClipLayerModes(cliplayermodes),
250  myClipLayerWeights(cliplayerweights),
251  myClipLayerParents(cliplayerparents)
252  {
253  }
254 
255  VEX_GeoCommandAgentClipEdit() = default;
258  VEX_GeoCommandAgentClipEdit &operator=(const VEX_GeoCommandAgentClipEdit &) = default;
260 
261  exint primnum() const { return myPrimNum; }
262  const UT_StringArray &clipnames() const { return myClipNames; }
263  const UT_Array<float> &cliptimes() const { return myClipTimes; }
264  const UT_Array<float> &clipweights() const { return myClipWeights; }
265  const UT_StringArray &clipxformgroups() const { return myClipXformGroups; }
266  const UT_Array<int> &cliplayerids() const { return myClipLayerIds; }
267  const UT_Array<int> &cliplayermodes() const { return myClipLayerModes; }
268  const UT_Array<float> &cliplayerweights() const { return myClipLayerWeights; }
269  const UT_Array<int> &cliplayerparents() const { return myClipLayerParents; }
270 
271 protected:
281 };
282 
283 class CL_Clip;
284 
286 {
287 public:
289  exint srcelem,
290  exint primnum,
291  const UT_StringHolder &clip_name,
292  const UT_StringHolder &clip_path,
293  bool keep_ref)
294  : VEX_GeoCommand(srcelem)
295  , myPrimNum(primnum)
296  , myClipName(clip_name)
297  , myClipPath(clip_path)
298  , myKeepRef(keep_ref)
299  {
300  }
302  : VEX_GeoCommand()
303  , myPrimNum(-1)
304  , myClipName()
305  , myClipPath()
306  , myKeepRef(true)
307  {
308  }
309 
310  exint primnum() const { return myPrimNum; }
311 
315  bool myKeepRef;
316 };
317 
319 {
320 public:
321 
323  {
332 
333  DICT_INVALID
334  };
335 
336  static DICT_TYPE dictFromString(const char *dict);
337 
339  {
340  TYPEINFO_NOCHANGE = -1,
341  TYPEINFO_NONE = 0,
352  TYPEINFO_TEXTURE_COORD
353  };
354  static TYPEINFO_TYPE typeinfoFromString(const char *info);
355 
357  {
358  public:
359  DefaultValue() { memset(f, 0, sizeof(float)*16); i = 0; }
360 
361  void set(int v) { i = v; }
362  void set(float v) { f[0] = v; }
363  void set(UT_Vector2 v) { memcpy(f, &v, sizeof(v)); }
364  void set(UT_Vector3 v) { memcpy(f, &v, sizeof(v)); }
365  void set(UT_Vector4 v) { memcpy(f, &v, sizeof(v)); }
366  void set(UT_Matrix2 v) { memcpy(f, &v, sizeof(v)); }
367  void set(UT_Matrix3 v) { memcpy(f, &v, sizeof(v)); }
368  void set(UT_Matrix4 v) { memcpy(f, &v, sizeof(v)); }
369 
370  float f[16];
371  int i;
372  };
373 
374  VEX_GeoAttribEdit(DICT_TYPE dict, const char *name);
376  void setTypeInfo(exint srcelem,
377  const char *typeinfo);
378 
379  void addAttribute(exint srcelem,
380  VEX_Type type,
381  bool isarray,
382  const DefaultValue &value);
383 
384  void appendEdit(exint srcelem,
385  int objnum,
386  int secnum,
388  float data);
389  void appendEdit(exint srcelem,
390  int objnum,
391  int secnum,
393  int data);
394  void appendEdit(exint srcelem,
395  int objnum,
396  int secnum,
398  UT_Vector2 data);
399  void appendEdit(exint srcelem,
400  int objnum,
401  int secnum,
403  UT_Vector3 data);
404  void appendEdit(exint srcelem,
405  int objnum,
406  int secnum,
408  UT_Vector4 data);
409  void appendEdit(exint srcelem,
410  int objnum,
411  int secnum,
413  UT_Matrix2 data);
414  void appendEdit(exint srcelem,
415  int objnum,
416  int secnum,
418  UT_Matrix3 data);
419  void appendEdit(exint srcelem,
420  int objnum,
421  int secnum,
423  UT_Matrix4 data);
424  void appendEdit(exint srcelem,
425  int objnum,
426  int secnum,
428  const char *data);
429  void appendEdit(exint srcelem,
430  int objnum,
431  int secnum,
433  const UT_Array<float> *data);
434  void appendEdit(exint srcelem,
435  int objnum,
436  int secnum,
438  const UT_Array<UT_Vector2> *data);
439  void appendEdit(exint srcelem,
440  int objnum,
441  int secnum,
443  const UT_Array<UT_Vector3> *data);
444  void appendEdit(exint srcelem,
445  int objnum,
446  int secnum,
448  const UT_Array<UT_Vector4> *data);
449  void appendEdit(exint srcelem,
450  int objnum,
451  int secnum,
453  const UT_Array<UT_Matrix2> *data);
454  void appendEdit(exint srcelem,
455  int objnum,
456  int secnum,
458  const UT_Array<UT_Matrix3> *data);
459  void appendEdit(exint srcelem,
460  int objnum,
461  int secnum,
463  const UT_Array<UT_Matrix4> *data);
464  void appendEdit(exint srcelem,
465  int objnum,
466  int secnum,
468  const UT_Array<int> *data);
469  void appendEdit(exint srcelem,
470  int objnum,
471  int secnum,
474 
475 
476  // This may steal the command list from the source!
477  void merge(VEX_GeoAttribEdit &src);
478 
479  void sort();
480 
481  void clear();
482 
483  // These convert our command list to the specified type, note
484  // that it will only be valid if the VEX_Type matches it, otherwise
485  // 0!
487  {
488  if (myType == VEX_TYPE_FLOAT && !myIsArray)
489  return (UT_Array<VEX_GeoCommandAttribEdit<float> >*)myCmdList;
490  return 0;
491  }
493  {
494  if (myType == VEX_TYPE_INTEGER && !myIsArray)
495  return (UT_Array<VEX_GeoCommandAttribEdit<int> >*)myCmdList;
496  return 0;
497  }
499  {
500  if (myType == VEX_TYPE_VECTOR2 && !myIsArray)
501  return (UT_Array<VEX_GeoCommandAttribEdit<UT_Vector2> >*)myCmdList;
502  return 0;
503  }
505  {
506  if (myType == VEX_TYPE_VECTOR && !myIsArray)
507  return (UT_Array<VEX_GeoCommandAttribEdit<UT_Vector3> >*)myCmdList;
508  return 0;
509  }
511  {
512  if (myType == VEX_TYPE_VECTOR4 && !myIsArray)
513  return (UT_Array<VEX_GeoCommandAttribEdit<UT_Vector4> >*)myCmdList;
514  return 0;
515  }
517  {
518  if (myType == VEX_TYPE_MATRIX2 && !myIsArray)
519  return (UT_Array<VEX_GeoCommandAttribEdit<UT_Matrix2> >*)myCmdList;
520  return 0;
521  }
523  {
524  if (myType == VEX_TYPE_MATRIX3 && !myIsArray)
525  return (UT_Array<VEX_GeoCommandAttribEdit<UT_Matrix3> >*)myCmdList;
526  return 0;
527  }
529  {
530  if (myType == VEX_TYPE_MATRIX4 && !myIsArray)
531  return (UT_Array<VEX_GeoCommandAttribEdit<UT_Matrix4> >*)myCmdList;
532  return 0;
533  }
535  {
536  if (myType == VEX_TYPE_STRING && !myIsArray)
538  return 0;
539  }
541  {
542  if (myType == VEX_TYPE_FLOAT && myIsArray)
543  return (UT_Array<VEX_GeoCommandAttribEdit<const UT_Array<float> *> >*)myCmdList;
544  return 0;
545  }
547  {
548  if (myType == VEX_TYPE_VECTOR2 && myIsArray)
549  return (UT_Array<VEX_GeoCommandAttribEdit<const UT_Array<UT_Vector2> *> >*)myCmdList;
550  return 0;
551  }
553  {
554  if (myType == VEX_TYPE_VECTOR && myIsArray)
555  return (UT_Array<VEX_GeoCommandAttribEdit<const UT_Array<UT_Vector3> *> >*)myCmdList;
556  return 0;
557  }
559  {
560  if (myType == VEX_TYPE_VECTOR4 && myIsArray)
561  return (UT_Array<VEX_GeoCommandAttribEdit<const UT_Array<UT_Vector4> *> >*)myCmdList;
562  return 0;
563  }
565  {
566  if (myType == VEX_TYPE_MATRIX2 && myIsArray)
567  return (UT_Array<VEX_GeoCommandAttribEdit<const UT_Array<UT_Matrix2> *> >*)myCmdList;
568  return 0;
569  }
571  {
572  if (myType == VEX_TYPE_MATRIX3 && myIsArray)
573  return (UT_Array<VEX_GeoCommandAttribEdit<const UT_Array<UT_Matrix3> *> >*)myCmdList;
574  return 0;
575  }
577  {
578  if (myType == VEX_TYPE_MATRIX4 && myIsArray)
579  return (UT_Array<VEX_GeoCommandAttribEdit<const UT_Array<UT_Matrix4> *> >*)myCmdList;
580  return 0;
581  }
582 
584  {
585  if (myType == VEX_TYPE_INTEGER && myIsArray)
586  return (UT_Array<VEX_GeoCommandAttribEdit<const UT_Array<int> *> >*)myCmdList;
587  return 0;
588  }
589 
591  {
592  if (myType == VEX_TYPE_STRING && myIsArray)
593  return (UT_Array<VEX_GeoCommandAttribEdit<const UT_Array<const char *> *> >*)myCmdList;
594  return 0;
595  }
596 
597 
598  DICT_TYPE dict() const { return myDict; }
599  const char *name() const { return myName; }
600  VEX_Type type() const { return myType; }
601  bool isArray() const { return myIsArray; }
602  bool shouldcreate() const { return myDoCreate; }
603  TYPEINFO_TYPE typeinfo() const { return myTypeInfo; }
604  const DefaultValue &defaultValue() const { return myDefValue; }
605 
606 protected:
607  // The earliest proc that refered to us.
612  bool myIsArray;
613  // Who set the typeinfo.
614  // Because we are logically overwriting, it makes sense for this
615  // to be the last person to set it!
618 
619  void *myCmdList;
620  // The proc that marked us for creation
624 };
625 
627 {
628 public:
630  exint srcelem,
631  exint ptnum0, exint ptnum1,
632  exint data)
633  : VEX_GeoCommand(srcelem)
634  , myPtNum0(ptnum0)
635  , myPtNum1(ptnum1)
636  , myData(data)
637  {
638  }
639  VEX_GeoCommandEdgeGroupEdit(): VEX_GeoCommand(), myPtNum0(-1) , myPtNum1(-1), myData(-1) {}
640 
641  exint ptNum0() const { return myPtNum0; }
642  exint ptNum1() const { return myPtNum1; }
643  exint data() const { return myData; }
644 
645 protected:
646  int myPtNum0;
647  int myPtNum1;
648  int myData;
649 };
650 
652 {
653 public:
654  VEX_GeoEdgeGroupEdit(const UT_StringHolder &groupname): myGroupName(groupname) {}
655 
656  const UT_StringHolder &groupName() const { return myGroupName; }
657 
658  const UT_Array<VEX_GeoCommandEdgeGroupEdit> &cmd() const { return myCmdList; }
659 
660  void appendEdit(exint srcelem,
661  int ptnum0,
662  int ptnum1,
663  int data);
664 
665  void merge(VEX_GeoEdgeGroupEdit &src);
666 
667  void sort();
668 
669 protected:
672 };
673 
675 {
676 public:
679 
680  // Converts the given string to one in our string table, ensuring
681  // the pointer remains valid and avoids duplication.
682  const char *hardenString(const char *str);
683 
684  // Creates a new array which is owned by this queue. Does
685  // not de-duplicate, but will return 0 for empty lists.
686  const UT_Array<float> *hardenArray(const UT_Array<float> &arr);
687  const UT_Array<UT_Vector2> *hardenArray(const UT_Array<UT_Vector2> &arr);
688  const UT_Array<UT_Vector3> *hardenArray(const UT_Array<UT_Vector3> &arr);
689  const UT_Array<UT_Vector4> *hardenArray(const UT_Array<UT_Vector4> &arr);
690  const UT_Array<UT_Matrix2> *hardenArray(const UT_Array<UT_Matrix2> &arr);
691  const UT_Array<UT_Matrix3> *hardenArray(const UT_Array<UT_Matrix3> &arr);
692  const UT_Array<UT_Matrix4> *hardenArray(const UT_Array<UT_Matrix4> &arr);
693  const UT_Array<int> *hardenArray(const UT_Array<int> &arr);
694  // ALSO hardens the contents:
695  const UT_Array<const char *> *hardenArray(const UT_Array<const char *> &arr);
696 
697  // Merges the src into us. Note that the result may still
698  // reference strings in the stringtable of src, so src must *not*
699  // be deleted until the queue is processed!
700  // This also may destroy src in the merging if stealing is more
701  // efficient.
702  void merge(VEX_GeoCommandQueue &src);
703  // Ensure our commands are in srcelem order.
704  void sort();
705 
706  bool isEmpty() const
707  {
708  return myPointAdd.isEmpty() &&
709  myPrimAdd.isEmpty() &&
710  myVertexAdd.isEmpty() &&
711  myVertexRewire.isEmpty() &&
712  myAttribEdit.isEmpty() &&
713  myEdgeGroupEdit.isEmpty() &&
714  myAgentXformEdit.isEmpty() &&
715  myAgentClipEdit.isEmpty() &&
716  myAgentAddClip.isEmpty() &&
717  myPointRemove.isEmpty() &&
718  myPointWithPrimRemove.isEmpty() &&
719  myPrimRemove.isEmpty() &&
720  myPrimWithPointRemove.isEmpty() &&
721  myLocalVariables.empty() &&
722  !myNewVisualizers;
723  }
724 
725  // These return the new element number *relative* to the srcelem!
726  int addPrim(exint srcelem, VEX_GeoCommandPrimAdd::PRIM_TYPE primtype);
727  int addPoint(exint srcelem, UT_Vector3 pos);
728  int addPoint(exint srcelem, int srcpt);
729  int addVertex(exint srcelem, int primnum, int ptnum);
730 
731  void setEdgeGroup(
732  exint srcelem,
733  const UT_StringHolder &groupname,
734  int ptnum0, int ptnum1,
735  int data);
736 
737  void addLocalVariable(exint srcelem, const char *attrib, const char *local);
738  void addVisualizer(const UT_StringHolder &visualizer);
739 
740  // If the given primnum is -1, it will treat vtxidx as a linear vertex
741  void rewireVertex(exint srcelem, int primum, int vtxidx, int ptnum);
742 
743  void removePoint(exint srcelem, exint ptnum, bool includeprims);
744  void removePrim(exint srcelem, exint primnum, bool includepoints);
745 
746  void setAgentTransform(exint srcelem, exint primnum,
747  const UT_Matrix4F &xform, exint xformidx,
748  bool worldspace);
749 
750  void setAgentClips(exint srcelem, exint primnum,
751  const UT_StringArray &clipnames,
752  const UT_Array<float> &cliptimes,
753  const UT_Array<float> &clipweights,
754  const UT_StringArray &clipxformgroups,
755  const UT_Array<int> &cliplayerids,
756  const UT_Array<int> &cliplayermodes,
757  const UT_Array<float> &cliplayerweights,
758  const UT_Array<int> &cliplayerparents);
759 
760  void agentAddClip(
761  exint srcelem,
762  exint primnum,
763  const UT_StringHolder &clip_name,
764  const UT_StringHolder &clip,
765  const bool keep_ref);
766 
768  const char *name);
769  VEX_GeoAttribEdit *findOrCreateEdit(VEX_GeoAttribEdit::DICT_TYPE dict,
770  const char *name);
771 
772  VEX_GeoEdgeGroupEdit *findOrCreateEdgeGroupEdit(const UT_StringHolder &groupname);
773 
774  // Creators
778  // Requested local variables.
780  {
782  const char *local; // hardened!
783  };
785 
787 
788  // Edits
795 
796  // Destructors
797  // Note we don't have to sort these. We do need to track
798  // the source element to be able to lookup the relevant point
799  // or primitive number, however.
804 
809 
810  int myNumPrim, myNumPoint, myNumVertex;
811 
812 private:
813  UT_SharedString *myStrings;
814  UT_Array< UT_Array<int> *> myIntArrays;
815  UT_Array< UT_Array<float> *> myFloatArrays;
816  UT_Array< UT_Array<UT_Vector2> *> myV2Arrays;
817  UT_Array< UT_Array<UT_Vector3> *> myV3Arrays;
818  UT_Array< UT_Array<UT_Vector4> *> myV4Arrays;
819  UT_Array< UT_Array<UT_Matrix2> *> myM2Arrays;
820  UT_Array< UT_Array<UT_Matrix3> *> myM3Arrays;
821  UT_Array< UT_Array<UT_Matrix4> *> myM4Arrays;
822  UT_Array< UT_Array<const char *> *> myCstArrays;
823 };
824 
825 #endif
exint elem() const
VEX_Type
VEX variable types.
Definition: VEX_VexTypes.h:18
VEX_GeoCommandEdgeGroupEdit(exint srcelem, exint ptnum0, exint ptnum1, exint data)
UT_Array< VEX_GeoCommandObjectRemove > myPointWithPrimRemove
UT_Array< VEX_GeoCommandAgentClipEdit > myAgentClipEdit
TYPEINFO_TYPE myTypeInfo
VEX_GeoEdgeGroupEdit(const UT_StringHolder &groupname)
UT_Array< VEX_GeoCommandObjectRemove > myPrimWithPointRemove
UT_Array< VEX_GeoCommandVertexAdd > myVertexAdd
UT_Array< VEX_GeoCommandAttribEdit< const UT_Array< const char * > * > > * asCmd()
VEX_GeoCommandAgentClipEdit(exint srcelem, exint primnum, const UT_StringArray &clipnames, const UT_Array< float > &cliptimes, const UT_Array< float > &clipweights, const UT_StringArray &clipxformgroups, const UT_Array< int > &cliplayerids, const UT_Array< int > &cliplayermodes, const UT_Array< float > &cliplayerweights, const UT_Array< int > &cliplayerparents)
VEX_GeoCommandPointAdd(exint srcelem, UT_Vector3 pos)
UT_StringArray myClipXformGroups
const GLdouble * v
Definition: glcorearb.h:836
const UT_Array< int > & cliplayerparents() const
const char * local
UT_Array< VEX_GeoCommandAttribEdit< UT_Vector3 > > * v3Cmd()
VEX_GeoCommandPrimAdd(exint srcelem, PRIM_TYPE primtype)
UT_Array< VEX_GeoCommandObjectRemove > myPrimRemove
UT_Vector3 pos() const
UT_Array< VEX_GeoCommandObjectRemove > myPointRemove
UT_Array< VEX_GeoCommandAttribEdit< UT_Vector4 > > * v4Cmd()
UT_Array< VEX_GeoEdgeGroupEdit * > myEdgeGroupEdit
UT_StringMap< VariableEntry > myLocalVariables
UT_Array< VEX_GeoCommandAttribEdit< int > > * iCmd()
DefaultValue myDefValue
#define VEX_API
Definition: VEX_API.h:11
VEX_GeoCommandAgentXformEdit(exint srcelem, exint primnum, const UT_Matrix4F &xform, exint xformidx, bool worldspace)
UT_Array< VEX_GeoCommandAttribEdit< const UT_Array< UT_Matrix2 > * > > * am2Cmd()
png_uint_32 i
Definition: png.h:2877
UT_Array< VEX_GeoCommandAgentXformEdit > myAgentXformEdit
UT_Array< VEX_GeoCommandAttribEdit< UT_Matrix4 > > * m4Cmd()
UT_Array< float > myClipTimes
UT_Array< VEX_GeoCommandAttribEdit< UT_Matrix2 > > * m2Cmd()
GLfloat f
Definition: glcorearb.h:1925
UT_Array< VEX_GeoCommandAttribEdit< const UT_Array< float > * > > * afCmd()
const UT_Array< float > & cliptimes() const
BlockArray myNetVertices
const UT_Array< int > & cliplayerids() const
VEX_GeoCommand(exint srcelem)
const UT_Array< VEX_GeoCommandEdgeGroupEdit > & cmd() const
int64 exint
Definition: SYS_Types.h:109
VEX_GeoCommandVertexAdd(exint srcelem, int primnum, int ptnum)
UT_Array< VEX_GeoCommandEdgeGroupEdit > myCmdList
UT_Array< VEX_GeoCommandPrimAdd > myPrimAdd
UT_Array< VEX_GeoCommandAttribEdit< const UT_Array< UT_Vector3 > * > > * av3Cmd()
const UT_Array< float > & cliplayerweights() const
const UT_StringHolder & groupName() const
UT_Array< VEX_GeoCommandAttribEdit< float > > * fCmd()
PRIM_TYPE type() const
UT_Array< VEX_GeoAttribEdit * > myAttribEdit
VEX_GeoCommandVertexRewire(exint srcelem, exint primnum, exint vtxidx, exint newptnum)
bool isEmpty() const
UT_Array< float > myClipLayerWeights
VEX_Type type() const
UT_Array< VEX_GeoCommandAttribEdit< const UT_Array< UT_Vector4 > * > > * av4Cmd()
const DefaultValue & defaultValue() const
GLboolean * data
Definition: glcorearb.h:130
UT_Array< VEX_GeoCommandAttribEdit< const UT_Array< UT_Vector2 > * > > * av2Cmd()
GLuint const GLchar * name
Definition: glcorearb.h:785
bool shouldcreate() const
const char * name() const
UT_Array< VEX_GeoCommandAttribEdit< const UT_Array< UT_Matrix4 > * > > * am4Cmd()
UT_Array< VEX_GeoCommandVertexRewire > myVertexRewire
MODE_TYPE mode() const
const UT_StringArray & clipxformgroups() const
UT_Array< VEX_GeoCommandAttribEdit< UT_Matrix3 > > * m3Cmd()
const UT_StringArray & clipnames() const
DICT_TYPE dict() const
GLenum mode
Definition: glcorearb.h:98
exint elem
UT_StringHolder myGroupName
GLsizei const GLfloat * value
Definition: glcorearb.h:823
IMATH_INTERNAL_NAMESPACE_HEADER_ENTER T clip(const T &p, const Box< T > &box)
Definition: ImathBoxAlgo.h:89
UT_Array< VEX_GeoCommandAttribEdit< const UT_Array< UT_Matrix3 > * > > * am3Cmd()
UT_PageArray< int, 1, true, false, 10, exint > BlockArray
UT_Array< int > myClipLayerIds
UT_Array< int > myClipLayerParents
VEX_GeoCommandAttribEdit(exint srcelem, exint objnum, exint secnum, MODE_TYPE mode, T data)
const UT_Matrix4F & xform() const
UT_Array< VEX_GeoCommandAgentAddClip > myAgentAddClip
VEX_GeoCommandObjectRemove(exint srcelem, exint objnum)
UT_Array< float > myClipWeights
UT_Array< VEX_GeoCommandAttribEdit< const char * > > * sCmd()
GLint GLint GLsizei GLint GLenum GLenum type
Definition: glcorearb.h:107
UT_Array< VEX_GeoCommandAttribEdit< const UT_Array< int > * > > * aiCmd()
VEX_GeoCommandAgentAddClip(exint srcelem, exint primnum, const UT_StringHolder &clip_name, const UT_StringHolder &clip_path, bool keep_ref)
const UT_Array< int > & cliplayermodes() const
const UT_Array< float > & clipweights() const
UT_StringSet * myNewVisualizers
TYPEINFO_TYPE typeinfo() const
bool isArray() const
VEX_GeoCommandPointAdd(exint srcelem, int srcpt)
UT_Array< VEX_GeoCommandAttribEdit< UT_Vector2 > > * v2Cmd()
UT_Array< int > myClipLayerModes
UT_Array< VEX_GeoCommandPointAdd > myPointAdd
GLenum src
Definition: glcorearb.h:1792