|
DllExport void | GetSavingPermutations (int &numCr, int &numCl, Tab< int > &vPermute, Tab< int > &vPReverse) |
|
DllExport void | PermuteClonedVertices (Tab< int > &vPermute) |
|
DllExport BOOL | CheckOrder () |
|
DllExport BOOL | CheckMapFaces () |
|
DllExport void | SetSingleEdgeVis (Mesh &m, DWORD ed, BOOL vis, AdjFaceList *adj=NULL) |
|
|
|
DllExport | MeshDelta () |
|
DllExport | MeshDelta (const Mesh &m) |
|
DllExport | ~MeshDelta () |
|
DllExport void | InitToMesh (const Mesh &m) |
|
DllExport void | ClearAllOps () |
|
DllExport void | SetMapNum (int n, bool keep=TRUE) |
|
int | GetMapNum () |
|
MapDelta & | Map (int mp) |
|
bool | getMapSupport (int mp) |
|
void | setMapSupport (int mp, bool val=true) |
|
bool | hasMapSupport () |
|
DllExport void | SetVDataNum (int size, bool keep=TRUE) |
|
int | GetVDataNum () |
|
|
|
DllExport ChannelMask | PartsChanged () |
|
DllExport void | Apply (Mesh &mesh) |
|
DllExport void | FillInFaces (Mesh &m) |
|
|
MeshDeltas can be multiplied together like Transforms before being applied to a mesh.
This is especially useful in Edit Mesh, where a single MeshDelta is used to store the current "state" of the Edit Mesh and extra MeshDeltas are created for each operation and added on to the main MeshDelta.
An example of this is as follows: given a Mesh m that we want to divide a face on, and then we want to break the vertex created in the face divide. These operations are adequately handled by the DivideFace and BreakVerts methods independently, but to combine the two into one operation, we must compose two MeshDeltas.
md2.InitToMesh (mcopy)
vset.Set (nvid)
md2.BreakVerts (mcopy, vset)
return md1
}
If all we wanted was to perform these operations on the mesh given, we could have done so without making the composition. The point here is to be able to construct complex MeshDeltas representing a series of user operations while remaining flexible enough to respond to changes in the actual mesh given as input.
|
MeshDelta & | operator= (MeshDelta &td) |
|
MeshDelta & | operator*= (MeshDelta &td) |
|
DllExport void | Compose (MeshDelta &td) |
|
DllExport DWORD | ChangeFlags (Tab< DWORD > *mChannels=NULL) |
|
DllExport void | CopyMDChannels (MeshDelta &from, DWORD channels, Tab< DWORD > *mChannels=NULL) |
|
|
DllExport DWORD | NumVMove (DWORD inVNum) |
|
DllExport DWORD | NumVClone (DWORD inVNum) |
|
DllExport DWORD | NumVDelete (DWORD inVNum) |
|
DllExport DWORD | NumFDelete (DWORD inFNum) |
|
int | NumFCreate () |
|
int | outVNum () |
|
int | outVNum (int inVNum) |
|
int | outFNum () |
|
int | outFNum (int inFNum) |
|
bool | IsVClone (DWORD i) |
|
DWORD | VCloneOf (DWORD i) |
|
bool | IsVCreate (DWORD i) |
|
bool | IsFCreate (DWORD i) |
|
DllExport DWORD | MoveID (DWORD i) |
|
DllExport Point3 | OutVert (Mesh &m, DWORD v) |
|
DllExport DWORD | RemapID (DWORD ff) |
|
DllExport DWORD | IsRemapped (DWORD ff, DWORD vid) |
|
DllExport Face | OutFace (Mesh &m, DWORD ff) |
|
|
DllExport void | SetInFNum (int nface) |
|
DllExport void | SetInVNum (int nv) |
|
DllExport void | AddVertexColors () |
|
DllExport void | AddMap (int mapID) |
|
DllExport void | AddVertexData (int vdChan, Mesh *m=NULL) |
|
|
|
DllExport void | UpdateLUTs (int extraV=0, int extraF=0) |
|
DllExport void | ClearLUTs () |
|
DllExport DWORD | VLut (DWORD i) |
|
DllExport DWORD | FLut (DWORD i) |
|
DllExport DWORD | PostVIndex (DWORD i) |
|
DllExport DWORD | PostFIndex (DWORD i) |
|
|
These operations are the "building blocks" of MeshDeltas.
All of them may be safely performed on MeshDeltas that are already quite complex. Those that accept DWORD indices require output mesh indices as all operations are appended to the end of the existing delta.
|
DllExport DWORD | VCreate (Point3 *p, int num=1, BitArray *sel=NULL, BitArray *hide=NULL) |
|
DllExport DWORD | VClone (DWORD *v, int num=1) |
|
DllExport DWORD | VClone (DWORD *v, Point3 *off, int num=1) |
|
DllExport DWORD | VClone (VertMove *vm, int num=1) |
|
DWORD | VClone (DWORD v) |
|
DWORD | VClone (DWORD v, Point3 off) |
|
DllExport void | VDelete (DWORD *v, int num=1) |
|
DllExport void | VDelete (BitArray &vdel) |
|
DllExport DWORD | FCreate (Face *f, int num=1) |
|
DllExport DWORD | FCreate (FaceCreate *f, int num=1) |
|
DllExport DWORD | FCreateQuad (DWORD *v, DWORD smG=0, MtlID matID=0, int orig=UNDEFINED) |
|
DllExport DWORD | FClone (Face &f, DWORD ff, DWORD remapFlags=0, DWORD *v=NULL) |
|
DllExport void | CreateDefaultMapFaces (int num=1) |
|
DllExport void | FRemap (FaceRemap *f, int num=1) |
|
DllExport void | FRemap (DWORD f, DWORD flags, DWORD *v) |
|
DllExport void | FChange (FaceChange *f, int num=1) |
|
DllExport void | FChange (DWORD f, DWORD flags, DWORD dat) |
|
DllExport void | FSmooth (FaceSmooth *f, int num=1) |
|
DllExport void | FSmooth (DWORD f, DWORD mask, DWORD val) |
|
void | SetMatID (DWORD f, MtlID mt) |
|
void | SetSmGroup (DWORD f, DWORD smG) |
|
void | SetEdgeVis (DWORD f, DWORD ed, BOOL vis=TRUE) |
|
DllExport void | FDelete (DWORD *f, int num=1) |
|
DllExport void | FDelete (BitArray &fdel) |
|
DllExport void | Move (int i, const Point3 &p) |
|
DllExport void | Move (BitArray &sel, const Point3 &p) |
|
DllExport void | Move (VertMove *vm, int num) |
|
|
|
DllExport IOResult | Save (ISave *isave) |
|
DllExport IOResult | Load (ILoad *iload) |
|
DllExport void | MyDebugPrint (bool lut=FALSE, bool mp=FALSE) |
|
|
The following are more complex operations.
The mesh given is expected to be the result of the current MeshDelta. They must all work no matter how complex the current MeshDelta is, but they have not been extensively tested on complex MeshDeltas.
|
DllExport void | AutoSmooth (Mesh &m, BitArray sel, float angle, AdjFaceList *af=NULL, AdjEdgeList *ae=NULL) |
|
DllExport void | Bevel (Mesh &m, BitArray vset, float outline, Tab< Point3 > *odir, float height, Tab< Point3 > *hdir) |
|
DllExport DWORD | CreatePolygon (Mesh &m, int deg, int *v, DWORD smG=0, MtlID matID=0) |
|
DllExport void | DeleteVertSet (Mesh &m, BitArray sel) |
|
DllExport void | DeleteEdgeSet (Mesh &m, BitArray sel) |
|
DllExport void | DeleteFaceSet (Mesh &m, BitArray sel) |
|
DllExport void | DeleteSelected (Mesh &m) |
|
DllExport void | DeleteIsoVerts (Mesh &m) |
|
DllExport void | FlipNormal (Mesh &m, DWORD face) |
|
DllExport void | MakeSelFacesPlanar (Mesh &m, BitArray sel) |
|
DllExport void | MakeSelVertsPlanar (Mesh &m, BitArray sel) |
|
DllExport void | MoveVertsToPlane (Mesh &m, BitArray sel, Point3 &N, float offset) |
|
DllExport void | RestrictMatIDs (Mesh &m, int numMats) |
|
DllExport void | SelectFacesByFlags (Mesh &m, BOOL onoff, DWORD flagmask, DWORD flags) |
|
|
The following will initialize to the mesh given: they cannot be used to "add" ops to an existing MeshDelta.
To add these ops, make a new MeshDelta, call one of the following, and append it to your previous one with Compose.
|
DllExport void | AttachMesh (Mesh &m, Mesh &attachment, Matrix3 &relativeTransform, int matOffset) |
|
DllExport void | BreakVerts (Mesh &m, BitArray vset) |
|
DllExport void | ChamferEdges (Mesh &m, BitArray eset, MeshChamferData &mcd, AdjEdgeList *ae=NULL) |
|
DllExport void | ChamferMove (Mesh &m, MeshChamferData &mcd, float amount, AdjEdgeList *ae=NULL) |
|
DllExport void | ChamferVertices (Mesh &m, BitArray vset, MeshChamferData &mcd, AdjEdgeList *ae=NULL) |
|
DllExport void | CloneFaces (Mesh &m, BitArray fset) |
|
DllExport void | CloneVerts (Mesh &m, BitArray vset) |
|
DllExport void | CollapseEdges (Mesh &m, BitArray ecol, AdjEdgeList *ae=NULL) |
|
DllExport DWORD | Cut (Mesh &m, DWORD ed1, float prop1, DWORD ed2, float prop2, Point3 &norm, bool fixNeighbors=TRUE, bool split=FALSE) |
|
DllExport void | Detach (Mesh &m, Mesh *out, BitArray fset, BOOL faces, BOOL del, BOOL elem) |
|
DllExport void | DivideEdge (Mesh &m, DWORD ed, float prop=.5f, AdjEdgeList *el=NULL, bool visDiag1=FALSE, bool fixNeighbors=TRUE, bool visDiag2=FALSE, bool split=FALSE) |
|
DllExport void | DivideEdges (Mesh &m, BitArray eset, AdjEdgeList *el=NULL) |
|
DllExport void | DivideFace (Mesh &m, DWORD f, float *bary=NULL) |
|
DllExport void | DivideFaces (Mesh &m, BitArray fset, MeshOpProgress *mop=NULL) |
|
DllExport void | EdgeTessellate (Mesh &m, BitArray fset, float tens, AdjEdgeList *ae=NULL, AdjFaceList *af=NULL, MeshOpProgress *mop=NULL) |
|
DllExport void | ExplodeFaces (Mesh &m, float thresh, bool useFaceSel=FALSE, AdjFaceList *af=NULL) |
|
DllExport void | ExtrudeEdges (Mesh &m, BitArray eset, Tab< Point3 > *edir=NULL) |
|
DllExport void | ExtrudeFaces (Mesh &m, BitArray fset, AdjEdgeList *el=NULL) |
|
DllExport void | ResetVertCorners (Mesh &m) |
|
DllExport void | ResetVertWeights (Mesh &m) |
|
void | SetFaceAlpha (Mesh &m, BitArray fset, float alpha, int mp=MAP_ALPHA) |
|
void | SetVertAlpha (Mesh &m, BitArray vset, float alpha, int mp=MAP_ALPHA) |
|
DllExport void | SetFaceColors (Mesh &m, BitArray fset, VertColor vc, int mp=0) |
|
DllExport void | SetVertColors (Mesh &m, BitArray vset, VertColor vc, int mp=0) |
|
DllExport void | SetVertCorners (Mesh &m, BitArray vset, float corner) |
|
DllExport void | SetVertWeights (Mesh &m, BitArray vset, float weight) |
|
DllExport DWORD | TurnEdge (Mesh &m, DWORD ed, AdjEdgeList *el=NULL) |
|
DllExport BOOL | WeldByThreshold (Mesh &m, BitArray vset, float thresh) |
|
DllExport void | WeldVertSet (Mesh &m, BitArray vset, Point3 *weldPoint=NULL) |
|
DllExport void | PropagateFacing (Mesh &m, BitArray &fset, int face, AdjFaceList &af, BitArray &done, BOOL bias=1) |
|
DllExport void | UnifyNormals (Mesh &m, BitArray fset, AdjFaceList *af=NULL) |
|
DllExport void | Slice (Mesh &m, Point3 N, float off, bool sep=FALSE, bool remove=FALSE, BitArray *fslice=NULL, AdjEdgeList *ae=NULL) |
|
virtual UtilExport BaseInterface * | GetInterface (Interface_ID id) |
|
virtual UtilExport int | NumInterfaces () const |
|
virtual UtilExport BaseInterface * | GetInterfaceAt (int i) const |
|
virtual UtilExport | ~BaseInterfaceServer () |
|
virtual UtilExport | ~InterfaceServer () |
| Destructor. More...
|
|
|
static UtilExport void * | operator new (size_t size) |
| Standard new operator used to allocate objects If there is insufficient memory, an exception will be thrown. More...
|
|
static UtilExport void * | operator new (size_t size, const std::nothrow_t &e) |
| Standard new operator used to allocate objects if there is insufficient memory, NULL will be returned. More...
|
|
static UtilExport void * | operator new (size_t size, const char *filename, int line) |
| New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
|
|
static UtilExport void * | operator new (size_t size, int block_type, const char *filename, int line) |
| New operator used to allocate objects that takes the type of memory, filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
|
|
static UtilExport void * | operator new (size_t size, const std::nothrow_t &e, const char *filename, int line) |
| New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, NULL will be returned. More...
|
|
static UtilExport void * | operator new (size_t size, unsigned long flags) |
| New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, an exception will be thrown. More...
|
|
static UtilExport void * | operator new (size_t size, const std::nothrow_t &e, unsigned long flags) |
| New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, NULL will be returned. More...
|
|
static UtilExport void * | operator new[] (size_t size) |
| New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
|
|
static UtilExport void * | operator new[] (size_t size, const std::nothrow_t &e) |
| New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
|
|
static UtilExport void * | operator new[] (size_t size, const char *filename, int line) |
| New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
|
|
static UtilExport void * | operator new[] (size_t size, int block_type, const char *filename, int line) |
| New operator used to allocate arrays of objects. More...
|
|
static UtilExport void * | operator new[] (size_t size, const std::nothrow_t &e, const char *filename, int line) |
| New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
|
|
static UtilExport void * | operator new[] (size_t size, unsigned long flags) |
| New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
|
|
static UtilExport void * | operator new[] (size_t size, const std::nothrow_t &e, unsigned long flags) |
| New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
|
|
static UtilExport void | operator delete (void *ptr) |
| Standard delete operator used to deallocate an object If the pointer is invalid, an exception will be thrown. More...
|
|
static UtilExport void | operator delete (void *ptr, const std::nothrow_t &e) |
| Standard delete operator used to deallocate an object If the pointer is invalid, nothing will happen. More...
|
|
static UtilExport void | operator delete (void *ptr, const char *filename, int line) |
| Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
|
|
static UtilExport void | operator delete (void *ptr, int block_type, const char *filename, int line) |
| Delete operator used to deallocate an object that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
|
|
static UtilExport void | operator delete (void *ptr, const std::nothrow_t &e, const char *filename, int line) |
| Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
|
|
static UtilExport void | operator delete (void *ptr, unsigned long flags) |
| Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
|
|
static UtilExport void | operator delete (void *ptr, const std::nothrow_t &e, unsigned long flags) |
| Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, nothing will happen. More...
|
|
static UtilExport void | operator delete[] (void *ptr) |
| Standard delete operator used to deallocate an array of objects If the pointer is invalid, an exception will be thrown. More...
|
|
static UtilExport void | operator delete[] (void *ptr, const std::nothrow_t &e) |
| Standard delete operator used to deallocate an array of objects If the pointer is invalid, nothing will happen. More...
|
|
static UtilExport void | operator delete[] (void *ptr, const char *filename, int line) |
| Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
|
|
static UtilExport void | operator delete[] (void *ptr, int block_type, const char *filename, int line) |
| Delete operator used to deallocate an array of objects that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
|
|
static UtilExport void | operator delete[] (void *ptr, const std::nothrow_t &e, const char *filename, int line) |
| Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
|
|
static UtilExport void | operator delete[] (void *ptr, unsigned long flags) |
| Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
|
|
static UtilExport void | operator delete[] (void *ptr, const std::nothrow_t &e, unsigned long flags) |
| Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
|
|
static UtilExport void * | operator new (size_t size, void *placement_ptr) |
| Placement new operator. More...
|
|
static UtilExport void | operator delete (void *ptr, void *placement_ptr) |
| Placement delete operator. More...
|
|
static UtilExport void * | aligned_malloc (size_t size, size_t alignment) |
| Allocates memory on a specified alignment boundary. More...
|
|
static UtilExport void * | aligned_realloc (void *ptr, size_t size, size_t alignment) |
| Reallocates memory on a specified alignment boundary. More...
|
|
static UtilExport void | aligned_free (void *ptr) |
| Frees a block of memory that was allocated with aligned_malloc/aligned_realloc. More...
|
|
Tab< BaseInterface * > | interfaces |
|