74 lines
2.3 KiB
C++
Executable File
74 lines
2.3 KiB
C++
Executable File
/*
|
|
* NurbsSub.h - Nurbs sub-object classes & functions
|
|
*
|
|
* mirrors the mesh sub-object selection classes for NURBS sub-objects.
|
|
*
|
|
* Copyright © Autodesk, Inc., 1998
|
|
* John Wainwright
|
|
*/
|
|
|
|
#ifndef _H_NURBSSUB
|
|
#define _H_NURBSSUB
|
|
|
|
// Nurbs selection types
|
|
#define NSEL_ALL 1 // whole Nurbs selected
|
|
#define NSEL_CUR 2 // current selection
|
|
#define NSEL_EXP 3 // explicit selection (in vsel)
|
|
#define NSEL_SINGLE 4 // explicit single index
|
|
|
|
/* -------------- base class for Nurbs sub-object selections ------------------- */
|
|
|
|
visible_class (NURBSSelection)
|
|
|
|
class NURBSSelection : public Value
|
|
{
|
|
public:
|
|
MAXNode* owner; // owner node if any
|
|
Object* obj; // NURBS base obj if any
|
|
NURBSSubObjectLevel level; // subobject level of this selection
|
|
BYTE sel_type; // selection type
|
|
BitArray vsel; // stand-alone selection if any or copy of current owner level selection
|
|
DWORD index; // single vert index
|
|
|
|
ScripterExport NURBSSelection(MAXNode* own, NURBSSubObjectLevel lvl, BYTE stype, DWORD indx = 0);
|
|
|
|
classof_methods (NURBSSelection, Value);
|
|
# define is_NURBSSelection(v) ((v)->tag == class_tag(NURBSSelection))
|
|
void collect() { delete this; }
|
|
void gc_trace();
|
|
ScripterExport void sprin1(CharStream* s);
|
|
|
|
// utility functions
|
|
BitArray* get_sel(); // my element selection
|
|
void get_owner_sel(BitArray& osel); // owner's element selection
|
|
int num_elements();
|
|
BOOL is_same_selection(Value* s) { return is_NURBSSelection(s) && ((NURBSSelection*)s)->level == level; }
|
|
void setup_xform(BitArray& os, BOOL& local_org, Matrix3& axis);
|
|
|
|
DWORD get_sel_index(BitArray* vs, int n); // index for n'th item vertex in BitArray
|
|
void update_sel();
|
|
void sprin1(TCHAR* type, CharStream* s);
|
|
|
|
// operations
|
|
#include "defimpfn.h"
|
|
# include "arraypro.h"
|
|
def_generic ( move, "move");
|
|
def_generic ( scale, "scale");
|
|
def_generic ( rotate, "rotate");
|
|
def_generic ( delete, "delete");
|
|
def_generic ( select, "select");
|
|
def_generic ( deselect, "deselect");
|
|
def_generic ( selectmore, "selectMore");
|
|
|
|
ScripterExport Value* map(node_map& m);
|
|
|
|
// built-in property accessors
|
|
def_property ( count );
|
|
def_property ( index );
|
|
def_property ( selSetNames );
|
|
def_property ( pos );
|
|
};
|
|
|
|
|
|
#endif
|