2017-04-17 06:17:10 -06:00

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