00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __SOP_Edit_h__
00021 #define __SOP_Edit_h__
00022
00023 #include "SOP_API.h"
00024
00025 #include "SOP_BrushBase.h"
00026
00027 #include <GDT/GDT_MirrorTransform.h>
00028 #include <UT/UT_PointTree.h>
00029
00030 class PRM_MenuEntry;
00031
00032 enum {
00033
00034 SOP_EDIT_GRP_IDX,
00035 SOP_EDIT_GRPTYPE_IDX,
00036
00037 SOP_EDIT_MODESWITCHER_IDX,
00038 #define SOP_EDIT_NUM_EDIT_PARMS (7)
00039 #define SOP_EDIT_NUM_SCULPT_PARMS (1)
00040
00041
00042 SOP_EDIT_SWITCHER_IDX,
00043
00044
00045 #define SOP_EDIT_NUM_TRANSFORM_PARMS (8)
00046 SOP_EDIT_TRS_IDX,
00047 SOP_EDIT_XYZ_IDX,
00048 SOP_EDIT_T_IDX,
00049 SOP_EDIT_R_IDX,
00050 SOP_EDIT_S_IDX,
00051 SOP_EDIT_SHEAR_IDX,
00052 SOP_EDIT_P_IDX,
00053 SOP_EDIT_KEEP_IDX,
00054
00055
00056 #define SOP_EDIT_NUM_PEAK_PARMS (2)
00057 SOP_EDIT_DIST_IDX,
00058 SOP_EDIT_LEADNML_IDX,
00059
00060
00061 SOP_EDIT_APPLYBUTTON_IDX,
00062
00063
00064 SOP_EDIT_SOFTRADIUS_IDX,
00065 SOP_EDIT_SOFTTYPE_IDX,
00066 SOP_EDIT_TANGENT_IDX,
00067 SOP_EDIT_KERNEL_IDX,
00068 SOP_EDIT_GLOBAL_IDX,
00069
00070
00071
00072
00073 SOP_EDIT_SCULPT_SWITCHER_IDX,
00074
00075 #define SOP_EDIT_SCULPT_NUM_DEFORM_PARMS (8)
00076 SOP_EDIT_SCULPT_OP_IDX,
00077 SOP_EDIT_SCULPT_AXIS_IDX,
00078 SOP_EDIT_SCULPT_USER_IDX,
00079 SOP_EDIT_SCULPT_STENCILACCUM_IDX,
00080 SOP_EDIT_SCULPT_STENCILAPPLY_IDX,
00081 SOP_EDIT_SCULPT_RESETNORMALS_IDX,
00082 SOP_EDIT_SCULPT_FLOODAPPLY_IDX,
00083 SOP_EDIT_SCULPT_COLOR_SWITCHER_IDX,
00084 SOP_EDIT_SCULPT_FG_IDX,
00085 SOP_EDIT_SCULPT_BG_IDX,
00086
00087 #define SOP_EDIT_SCULPT_NUM_NIB_PARMS (18)
00088 SOP_EDIT_SCULPT_SHAPE_IDX,
00089 SOP_EDIT_SCULPT_BITMAP_IDX,
00090 SOP_EDIT_SCULPT_BITMAPCHAN_IDX,
00091 SOP_EDIT_SCULPT_RAD_IDX,
00092 SOP_EDIT_SCULPT_UVRAD_IDX,
00093 SOP_EDIT_SCULPT_RADPRESSURE_IDX,
00094 SOP_EDIT_SCULPT_USEDEPTH_IDX,
00095 SOP_EDIT_SCULPT_DEPTH_IDX,
00096 SOP_EDIT_SCULPT_ANGLE_IDX,
00097 SOP_EDIT_SCULPT_SQUASH_IDX,
00098 SOP_EDIT_SCULPT_OPAC_IDX,
00099 SOP_EDIT_SCULPT_OPACPRESSURE_IDX,
00100 SOP_EDIT_SCULPT_SPLATTER_IDX,
00101 SOP_EDIT_SCULPT_PAPER_IDX,
00102 SOP_EDIT_SCULPT_SOFTEDGE_IDX,
00103 SOP_EDIT_SCULPT_KERNEL_IDX,
00104 SOP_EDIT_SCULPT_UPTYPE_IDX,
00105 SOP_EDIT_SCULPT_UPVECTOR_IDX,
00106
00107 #define SOP_EDIT_SCULPT_NUM_RAY_PARMS (10)
00108 SOP_EDIT_SCULPT_PROJTYPE_IDX,
00109 SOP_EDIT_SCULPT_USECONNECTIVITY_IDX,
00110 SOP_EDIT_SCULPT_REALTIME_IDX,
00111 SOP_EDIT_SCULPT_RAY_ORIENT_IDX,
00112 SOP_EDIT_SCULPT_RAY_HITPOS_IDX,
00113 SOP_EDIT_SCULPT_RAY_HITPRIM_IDX,
00114 SOP_EDIT_SCULPT_RAY_HITUV_IDX,
00115 SOP_EDIT_SCULPT_RAY_HITPRESSURE_IDX,
00116 SOP_EDIT_SCULPT_RAY_HITPT_IDX,
00117 SOP_EDIT_SCULPT_RAY_EVENT_IDX,
00118
00119 SOP_EDIT_USEORIENT_IDX,
00120
00121
00122 SOP_EDIT_USEMIRROR_IDX,
00123 SOP_EDIT_SYMMETRYAXIS_IDX,
00124 SOP_EDIT_SYMMETRYORIGIN_IDX,
00125 SOP_EDIT_SYMMETRYDISTANCE_IDX,
00126 SOP_EDIT_SYMMETRYTHRESHOLD_IDX,
00127
00128 SOP_EDIT_UPDATENMLS_IDX,
00129
00130
00131 SOP_EDIT_RESETBUTTON_IDX
00132 };
00133
00134 class SOP_API SOP_Edit : public SOP_BrushBase
00135 {
00136 friend class MSS_EditState;
00137 public:
00138 SOP_Edit(OP_Network *net, const char *name, OP_Operator *entry);
00139 virtual ~SOP_Edit();
00140
00141 virtual int isRefInput(unsigned int i) const;
00142 virtual void unloadDataHack();
00143 virtual bool unloadData();
00144
00145
00146 void toggleXformPeak();
00147
00148 virtual unsigned disableParms();
00149
00150 static OP_Node *myConstructor(OP_Network *net,
00151 const char *name,
00152 OP_Operator *entry);
00153
00154 static PRM_Template myTemplateList[];
00155 static PRM_Template myObsoleteList[];
00156
00157
00158
00159 virtual void getSelString(UT_String &str)
00160 { evalString(str, SOP_EDIT_GRP_IDX, 0, 0.0f); }
00161
00162 virtual void setAccumulateStencil(bool yesno)
00163 {
00164 setInt(SOP_EDIT_SCULPT_STENCILACCUM_IDX, 0, 0, yesno);
00165 }
00166 virtual void setRayOrigin(const UT_Vector3 &orig, float t)
00167 {
00168 setFloat(SOP_EDIT_SCULPT_RAY_HITPOS_IDX, 0, t, orig.x());
00169 setFloat(SOP_EDIT_SCULPT_RAY_HITPOS_IDX, 1, t, orig.y());
00170 setFloat(SOP_EDIT_SCULPT_RAY_HITPOS_IDX, 2, t, orig.z());
00171 }
00172 virtual void setRayOrientation(const UT_Vector3 &orient, float t)
00173 {
00174 setFloat(SOP_EDIT_SCULPT_RAY_ORIENT_IDX, 0, t, orient.x());
00175 setFloat(SOP_EDIT_SCULPT_RAY_ORIENT_IDX, 1, t, orient.y());
00176 setFloat(SOP_EDIT_SCULPT_RAY_ORIENT_IDX, 2, t, orient.z());
00177 }
00178 virtual void setHitPrimitive(int primidx, float t)
00179 {
00180 setInt(SOP_EDIT_SCULPT_RAY_HITPRIM_IDX, 0, t, primidx);
00181 }
00182 virtual void setHitPoint(int pt, float t)
00183 {
00184 setInt(SOP_EDIT_SCULPT_RAY_HITPT_IDX, 0, t, pt);
00185 }
00186 virtual void setHitUV(float u, float v, float t)
00187 {
00188 setFloat(SOP_EDIT_SCULPT_RAY_HITUV_IDX, 0, t, u);
00189 setFloat(SOP_EDIT_SCULPT_RAY_HITUV_IDX, 1, t, v);
00190 }
00191 virtual void setHitPressure(float p, float t)
00192 {
00193 setFloat(SOP_EDIT_SCULPT_RAY_HITPRESSURE_IDX, 0, t, p);
00194 }
00195 virtual void setRadius(float r, float t)
00196 {
00197 setFloat(SOP_EDIT_SCULPT_RAD_IDX, 0, t, r);
00198 }
00199 virtual void setUVRadius(float r, float t)
00200 {
00201 setFloat(SOP_EDIT_SCULPT_UVRAD_IDX, 0, t, r);
00202 }
00203 virtual void setBrushEvent(SOP_BrushEvent event)
00204 {
00205 setInt(SOP_EDIT_SCULPT_RAY_EVENT_IDX, 0, 0, int(event));
00206 }
00207 virtual void setBrushOp(SOP_BrushOp op)
00208 {
00209 int iop;
00210 switch (op)
00211 {
00212 case SOP_BRUSHOP_SMOOTH: iop = 1; break;
00213 case SOP_BRUSHOP_SMOOTHDEFORM: iop = 2; break;
00214 case SOP_BRUSHOP_ERASE: iop = 3; break;
00215 case SOP_BRUSHOP_DEFORM:
00216 default: iop = 0; break;
00217 }
00218 setInt(SOP_EDIT_SCULPT_OP_IDX, 0, 0, iop);
00219 }
00220 virtual void setBrushShape(SOP_BrushShape shape)
00221 {
00222 setInt(SOP_EDIT_SCULPT_SHAPE_IDX, 0, 0, int(shape));
00223 }
00224 virtual void setProjectionType(int projtype)
00225 {
00226 setInt(SOP_EDIT_SCULPT_PROJTYPE_IDX, 0, 0, projtype);
00227 }
00228 virtual void useForegroundColor(void)
00229 {
00230 setInt(SOP_EDIT_SCULPT_COLOR_SWITCHER_IDX, 0, 0, 0);
00231 }
00232 virtual void useBackgroundColor(void)
00233 {
00234 setInt(SOP_EDIT_SCULPT_COLOR_SWITCHER_IDX, 0, 0, 1);
00235 }
00236
00237 virtual int altersGeometry() const { return 1; }
00238 virtual int altersColor() const { return 0; }
00239
00240 virtual int MODE()
00241 { return evalInt(SOP_EDIT_MODESWITCHER_IDX, 0, 0); }
00242 virtual float RAWRADIUS(float t)
00243 { return evalFloat(SOP_EDIT_SCULPT_RAD_IDX, 0, t); }
00244 virtual float RAWUVRADIUS(float t)
00245 { return evalFloat(SOP_EDIT_SCULPT_UVRAD_IDX, 0, t); }
00246 virtual float RADIUSPRESSURE(float t)
00247 { return evalFloat(SOP_EDIT_SCULPT_RADPRESSURE_IDX, 0, t); }
00248 virtual float RAWOPACITY(float t)
00249 {return evalFloat(SOP_EDIT_SCULPT_OPAC_IDX, 0, t); }
00250 virtual float OPACITYPRESSURE(float t)
00251 {return evalFloat(SOP_EDIT_SCULPT_OPACPRESSURE_IDX, 0, t) ; }
00252
00253 bool inBrushMode(float t)
00254 { return evalInt("modeswitcher", 0, t); }
00255
00256 virtual SOP_BrushOp OP(void)
00257 {
00258 switch (evalInt(SOP_EDIT_SCULPT_OP_IDX, 0, 0))
00259 {
00260 case 0: return SOP_BRUSHOP_DEFORM;
00261 case 1: return SOP_BRUSHOP_SMOOTH;
00262 case 2: return SOP_BRUSHOP_SMOOTHDEFORM;
00263 case 3: return SOP_BRUSHOP_ERASE;
00264 default: return SOP_BRUSHOP_DEFORM;
00265 }
00266 }
00267 virtual int ACCUMSTENCIL(void)
00268 { return evalInt(SOP_EDIT_SCULPT_STENCILACCUM_IDX, 0,0);}
00269 virtual int PROJECTIONTYPE(void)
00270 { return evalInt(SOP_EDIT_SCULPT_PROJTYPE_IDX, 0, 0); }
00271 virtual int REALTIME(void)
00272 { return evalInt(SOP_EDIT_SCULPT_REALTIME_IDX, 0, 0); }
00273 virtual int SHAPE(float t)
00274 { return evalInt(SOP_EDIT_SCULPT_SHAPE_IDX, 0, t); }
00275
00276 virtual OP_ERROR cookInputGroups(OP_Context &context,
00277 int alone = 0);
00278
00279 virtual void getXformOrder(UT_XformOrder &xord,
00280 CH_Channel *chp);
00281
00282 virtual void resolveObsoleteParms(
00283 PRM_ParmList *obsolete_parms);
00284
00285
00286 void clearRayIntersect();
00287
00288 virtual void beginNewOperation();
00289 virtual void clearAllDeltas(float t);
00290
00291
00292
00293 void applyScaledDeltas(
00294 GEO_Detail &apply_gdp,
00295 const GDT_CoordinateFrames *coord_frames,
00296 float scale,
00297 const GB_PointGroup *ptgroup);
00298
00299 bool getCookedFlag() const { return myCookedFlag; }
00300
00301 void setUseOrient(bool f)
00302 { setInt(SOP_EDIT_USEORIENT_IDX, 0, 0, f ? 1 : 0); }
00303
00304 virtual bool hasChange(float t);
00305
00306 const GB_PrimitiveGroup *getPrimitiveSelection() const
00307 { return myPrimitiveGroup; }
00308
00309 protected:
00310 virtual void clearTransformParms();
00311 virtual OP_ERROR cookMySop(OP_Context &context);
00312 virtual const char *inputLabel(unsigned idx) const;
00313
00314 virtual void rollbackCurrentDelta();
00315 virtual void mirrorDelta();
00316 virtual void applyAndClearCurrentDelta();
00317 virtual void applyPermanentDelta();
00318 virtual void initializeInput(OP_Context &context);
00319
00320 virtual bool getGroupCentroid(OP_Context &context,
00321 UT_Vector3 ¢roid);
00322
00323 virtual void doErase();
00324
00325
00326
00327
00328 virtual void doTransform();
00329
00330 virtual int MERGEMODE() { return 0; }
00331 virtual void SCRIPT(UT_String &, float) {}
00332
00333 virtual int AXIS(void)
00334 { return evalInt(SOP_EDIT_SCULPT_AXIS_IDX, 0, 0); }
00335 virtual float USERX(float t)
00336 { return evalFloat(SOP_EDIT_SCULPT_USER_IDX, 0, t); }
00337 virtual float USERY(float t)
00338 { return evalFloat(SOP_EDIT_SCULPT_USER_IDX, 1, t); }
00339 virtual float USERZ(float t)
00340 { return evalFloat(SOP_EDIT_SCULPT_USER_IDX, 2, t); }
00341
00342 virtual float RAYORIENTX(float t)
00343 { return evalFloat(SOP_EDIT_SCULPT_RAY_ORIENT_IDX,0,t); }
00344 virtual float RAYORIENTY(float t)
00345 { return evalFloat(SOP_EDIT_SCULPT_RAY_ORIENT_IDX,1,t); }
00346 virtual float RAYORIENTZ(float t)
00347 { return evalFloat(SOP_EDIT_SCULPT_RAY_ORIENT_IDX,2,t); }
00348 virtual float RAYHITX(float t)
00349 { return evalFloat(SOP_EDIT_SCULPT_RAY_HITPOS_IDX,0,t); }
00350 virtual float RAYHITY(float t)
00351 { return evalFloat(SOP_EDIT_SCULPT_RAY_HITPOS_IDX,1,t); }
00352 virtual float RAYHITZ(float t)
00353 { return evalFloat(SOP_EDIT_SCULPT_RAY_HITPOS_IDX,2,t); }
00354 virtual float RAYHITU(float t)
00355 { return evalFloat(SOP_EDIT_SCULPT_RAY_HITUV_IDX, 0,t); }
00356 virtual float RAYHITV(float t)
00357 { return evalFloat(SOP_EDIT_SCULPT_RAY_HITUV_IDX, 1,t); }
00358 virtual float RAYHITPRESSURE(float t)
00359 { return evalFloat(SOP_EDIT_SCULPT_RAY_HITPRESSURE_IDX, 0, t); }
00360 virtual int PRIMHIT(float t)
00361 { return evalInt(SOP_EDIT_SCULPT_RAY_HITPRIM_IDX, 0,t); }
00362 virtual int PTHIT(float t)
00363 { return evalInt(SOP_EDIT_SCULPT_RAY_HITPT_IDX, 0, t); }
00364 virtual int EVENT()
00365 { return evalInt(SOP_EDIT_SCULPT_RAY_EVENT_IDX, 0,0); }
00366 virtual bool USE_FOREGROUND(void)
00367 { return evalInt(SOP_EDIT_SCULPT_COLOR_SWITCHER_IDX,
00368 0, 0) == 0; }
00369 virtual float FGR(float t) { return evalFloat(SOP_EDIT_SCULPT_FG_IDX, 0, t); }
00370 virtual float FGG(float ) { return 0.0f; }
00371 virtual float FGB(float ) { return 0.0f; }
00372 virtual float BGR(float t) { return evalFloat(SOP_EDIT_SCULPT_BG_IDX, 0, t); }
00373 virtual float BGG(float ) { return 0.0f; }
00374 virtual float BGB(float ) { return 0.0f; }
00375
00376 virtual float SOFTEDGE(float t)
00377 { return evalFloat(SOP_EDIT_SCULPT_SOFTEDGE_IDX, 0, t); }
00378 virtual void KERNEL(UT_String &str, float t)
00379 { evalString(str, SOP_EDIT_SCULPT_KERNEL_IDX, 0, t); }
00380 virtual int UPTYPE(float t)
00381 { return evalInt(SOP_EDIT_SCULPT_UPTYPE_IDX, 0, t);}
00382 virtual float UPX(float t)
00383 { return evalFloat(SOP_EDIT_SCULPT_UPVECTOR_IDX, 0, t);}
00384 virtual float UPY(float t)
00385 { return evalFloat(SOP_EDIT_SCULPT_UPVECTOR_IDX, 1, t);}
00386 virtual float UPZ(float t)
00387 { return evalFloat(SOP_EDIT_SCULPT_UPVECTOR_IDX, 2, t);}
00388
00389 virtual float PAPERNOISE(float t)
00390 { return evalFloat(SOP_EDIT_SCULPT_PAPER_IDX, 0, t);}
00391 virtual float SPLATTER(float t)
00392 { return evalFloat(SOP_EDIT_SCULPT_SPLATTER_IDX, 0, t); }
00393 virtual void BITMAP(UT_String &str, float t)
00394 { evalString(str, SOP_EDIT_SCULPT_BITMAP_IDX, 0, t); }
00395 virtual int BITMAPCHAN(float t)
00396 { return evalInt(SOP_EDIT_SCULPT_BITMAPCHAN_IDX, 0, t); }
00397 virtual float ANGLE(float t)
00398 { return evalFloat(SOP_EDIT_SCULPT_ANGLE_IDX, 0, t); }
00399 virtual float SQUASH(float t)
00400 { return evalFloat(SOP_EDIT_SCULPT_SQUASH_IDX, 0, t); }
00401
00402 virtual int DOSTAMPING() { return 0; }
00403 virtual int WRITEALPHA() { return 0; }
00404 virtual int OVERRIDECD() { return 0; }
00405 virtual void CDNAME(UT_String &, float) { }
00406 virtual int OVERRIDEALPHA() { return 0; }
00407 virtual void ALPHANAME(UT_String &, float) { }
00408 virtual int OVERRIDENML() { return 0; }
00409 virtual void NMLNAME(UT_String & , float ) {}
00410 virtual int ADDATTRIB() { return 0; }
00411
00412 virtual float SYMMETRYDIRX(float ) { return 0.0f; }
00413 virtual float SYMMETRYDIRY(float ) { return 0.0f; }
00414 virtual float SYMMETRYDIRZ(float ) { return 0.0f; }
00415 virtual float SYMMETRYORIGX(float ) { return 0.0f; }
00416 virtual float SYMMETRYORIGY(float ) { return 0.0f; }
00417 virtual float SYMMETRYORIGZ(float ) { return 0.0f; }
00418 virtual int DOREFLECTION() { return 0; }
00419 virtual int DOREFLECT() { return 0; }
00420 virtual int DOPOINTREFLECTION() { return 0; }
00421 virtual int DOROTATION() { return 0; }
00422 virtual int SYMMETRYROT(float ) { return 0; }
00423 virtual float SYMMETRYDIST(float ) { return 0.0f; }
00424 virtual int DOUVREFLECTION() { return 0; }
00425 virtual float SYMMETRYUVORIGU(float ) { return 0.0f; }
00426 virtual float SYMMETRYUVORIGV(float ) { return 0.0f; }
00427 virtual float SYMMETRYUVANGLE(float ) { return 0.0f;}
00428
00429 virtual int USECONNECTIVITY()
00430 { return evalInt(SOP_EDIT_SCULPT_USECONNECTIVITY_IDX, 0, 0); }
00431 virtual int USEDEPTH()
00432 { return evalInt(SOP_EDIT_SCULPT_USEDEPTH_IDX, 0, 0); }
00433 virtual float DEPTH(float t)
00434 { return evalFloat(SOP_EDIT_SCULPT_DEPTH_IDX, 0, t); }
00435 virtual float HEIGHT(float t)
00436 { return evalFloat(SOP_EDIT_SCULPT_DEPTH_IDX, 1, t); }
00437
00438
00439
00440
00441 virtual bool hasStrokeChanged(float t);
00442 virtual bool hasStyleChanged(float t);
00443
00444
00445 virtual bool hasNibFileChanged(float t);
00446 virtual bool hasAccumStencilChanged(float t);
00447 virtual bool hasNibLookChanged(float t);
00448
00449
00450 virtual bool wantsCookSelection(void) const { return true; }
00451
00452 virtual GDT_CoordinateFrames *getCoordinateFrames()
00453 { return &myCoordinateFrames; }
00454
00455 virtual const GB_PointGroup *getPointGroup() { return myPointGroup; }
00456
00457 private:
00458
00459 int GRPTYPE() { return evalInt(SOP_EDIT_GRPTYPE_IDX, 0, 0); }
00460
00461
00462 int SWITCHER() { return evalInt(SOP_EDIT_SWITCHER_IDX, 0, 0); }
00463 void SET_SWITCHER(int i)
00464 { setInt(SOP_EDIT_SWITCHER_IDX, 0, 0, i); }
00465
00466
00467 int TRS() { return evalInt(SOP_EDIT_TRS_IDX, 0, 0); }
00468 int XYZ() { return evalInt(SOP_EDIT_XYZ_IDX, 0, 0); }
00469 float TX() { return evalFloat(SOP_EDIT_T_IDX, 0, 0); }
00470 float TY() { return evalFloat(SOP_EDIT_T_IDX, 1, 0); }
00471 float TZ() { return evalFloat(SOP_EDIT_T_IDX, 2, 0); }
00472 float RX() { return evalFloat(SOP_EDIT_R_IDX, 0, 0); }
00473 float RY() { return evalFloat(SOP_EDIT_R_IDX, 1, 0); }
00474 float RZ() { return evalFloat(SOP_EDIT_R_IDX, 2, 0); }
00475 float SX() { return evalFloat(SOP_EDIT_S_IDX, 0, 0); }
00476 float SY() { return evalFloat(SOP_EDIT_S_IDX, 1, 0); }
00477 float SZ() { return evalFloat(SOP_EDIT_S_IDX, 2, 0); }
00478 float SHEAR_XY() { return evalFloat(SOP_EDIT_SHEAR_IDX, 0, 0); }
00479 float SHEAR_XZ() { return evalFloat(SOP_EDIT_SHEAR_IDX, 1, 0); }
00480 float SHEAR_YZ() { return evalFloat(SOP_EDIT_SHEAR_IDX, 2, 0); }
00481 float PX() { return evalFloat(SOP_EDIT_P_IDX, 0, 0); }
00482 void SET_PX(float f){ setFloat(SOP_EDIT_P_IDX, 0, 0, f); }
00483 float PY() { return evalFloat(SOP_EDIT_P_IDX, 1, 0); }
00484 void SET_PY(float f){ setFloat(SOP_EDIT_P_IDX, 1, 0, f); }
00485 float PZ() { return evalFloat(SOP_EDIT_P_IDX, 2, 0); }
00486 void SET_PZ(float f){ setFloat(SOP_EDIT_P_IDX, 2, 0, f); }
00487 int KEEP() { return evalInt(SOP_EDIT_KEEP_IDX, 0, 0); }
00488
00489
00490 float DIST() { return evalFloat(SOP_EDIT_DIST_IDX, 0, 0); }
00491 int LEADNML() { return evalInt(SOP_EDIT_LEADNML_IDX, 0, 0); }
00492
00493
00494 float SOFTRADIUS() { return evalFloat(SOP_EDIT_SOFTRADIUS_IDX, 0, 0); }
00495 int SOFTTYPE() { return evalInt(SOP_EDIT_SOFTTYPE_IDX, 0, 0); }
00496 float TANDEG0() { return evalFloat(SOP_EDIT_TANGENT_IDX,0, 0); }
00497 float TANDEG1() { return evalFloat(SOP_EDIT_TANGENT_IDX,1, 0); }
00498 void KERNEL(UT_String &str) { evalString(str, SOP_EDIT_KERNEL_IDX,
00499 0, 0.0f); }
00500 int GLOBAL() { return evalInt(SOP_EDIT_GLOBAL_IDX, 0, 0); }
00501
00502 bool USEORIENT()
00503 { return evalInt(SOP_EDIT_USEORIENT_IDX, 0, 0) != 0; }
00504
00505
00506 bool USEMIRROR()
00507 { return evalInt(SOP_EDIT_USEMIRROR_IDX, 0, 0) != 0; }
00508 float SYMMETRYAXISX()
00509 { return evalFloat(SOP_EDIT_SYMMETRYAXIS_IDX, 0, 0); }
00510 float SYMMETRYAXISY()
00511 { return evalFloat(SOP_EDIT_SYMMETRYAXIS_IDX, 1, 0); }
00512 float SYMMETRYAXISZ()
00513 { return evalFloat(SOP_EDIT_SYMMETRYAXIS_IDX, 2, 0); }
00514 float SYMMETRYORIGINX()
00515 { return evalFloat(SOP_EDIT_SYMMETRYORIGIN_IDX, 0, 0); }
00516 float SYMMETRYORIGINY()
00517 { return evalFloat(SOP_EDIT_SYMMETRYORIGIN_IDX, 1, 0); }
00518 float SYMMETRYORIGINZ()
00519 { return evalFloat(SOP_EDIT_SYMMETRYORIGIN_IDX, 2, 0); }
00520 float SYMMETRYDISTANCE()
00521 { return evalFloat(SOP_EDIT_SYMMETRYDISTANCE_IDX, 0, 0); }
00522 float SYMMETRYTHRESHOLD()
00523 { return evalFloat(SOP_EDIT_SYMMETRYTHRESHOLD_IDX, 0, 0); }
00524
00525 int UPDATENMLS() { return evalInt(SOP_EDIT_UPDATENMLS_IDX,
00526 0, 0); }
00527
00528
00529 bool isTransform() { return SWITCHER() == 0; }
00530 bool isPeak() { return SWITCHER() != 0; }
00531 void doPeak();
00532
00533 bool isSoft() { return SOFTRADIUS() != 0.0; }
00534
00535 void getTransform(UT_Matrix4 &xform, UT_Vector3 &pivot);
00536 UT_Vector3 myInitialCentroid;
00537
00538 GDT_CoordinateFrames myCoordinateFrames;
00539 bool myUsedOrient;
00540 int myCurrentInputId;
00541 int myCurrentGeoCookCount;
00542 int myReferenceInputId;
00543 int myReferenceGeoCookCount;
00544 const GB_PrimitiveGroup *myPrimitiveGroup;
00545 const GB_PointGroup *myPointGroup;
00546 };
00547
00548 #endif