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 protected:
00307 virtual void clearTransformParms();
00308 virtual OP_ERROR cookMySop(OP_Context &context);
00309 virtual const char *inputLabel(unsigned idx) const;
00310
00311 virtual void rollbackCurrentDelta();
00312 virtual void mirrorDelta();
00313 virtual void applyAndClearCurrentDelta();
00314 virtual void applyPermanentDelta();
00315 virtual void initializeInput(OP_Context &context);
00316
00317 virtual bool getGroupCentroid(OP_Context &context,
00318 UT_Vector3 ¢roid);
00319
00320 virtual void doErase();
00321
00322
00323
00324
00325 virtual void doTransform();
00326
00327 virtual int MERGEMODE() { return 0; }
00328 virtual void SCRIPT(UT_String &, float) {}
00329
00330 virtual int AXIS(void)
00331 { return evalInt(SOP_EDIT_SCULPT_AXIS_IDX, 0, 0); }
00332 virtual float USERX(float t)
00333 { return evalFloat(SOP_EDIT_SCULPT_USER_IDX, 0, t); }
00334 virtual float USERY(float t)
00335 { return evalFloat(SOP_EDIT_SCULPT_USER_IDX, 1, t); }
00336 virtual float USERZ(float t)
00337 { return evalFloat(SOP_EDIT_SCULPT_USER_IDX, 2, t); }
00338
00339 virtual float RAYORIENTX(float t)
00340 { return evalFloat(SOP_EDIT_SCULPT_RAY_ORIENT_IDX,0,t); }
00341 virtual float RAYORIENTY(float t)
00342 { return evalFloat(SOP_EDIT_SCULPT_RAY_ORIENT_IDX,1,t); }
00343 virtual float RAYORIENTZ(float t)
00344 { return evalFloat(SOP_EDIT_SCULPT_RAY_ORIENT_IDX,2,t); }
00345 virtual float RAYHITX(float t)
00346 { return evalFloat(SOP_EDIT_SCULPT_RAY_HITPOS_IDX,0,t); }
00347 virtual float RAYHITY(float t)
00348 { return evalFloat(SOP_EDIT_SCULPT_RAY_HITPOS_IDX,1,t); }
00349 virtual float RAYHITZ(float t)
00350 { return evalFloat(SOP_EDIT_SCULPT_RAY_HITPOS_IDX,2,t); }
00351 virtual float RAYHITU(float t)
00352 { return evalFloat(SOP_EDIT_SCULPT_RAY_HITUV_IDX, 0,t); }
00353 virtual float RAYHITV(float t)
00354 { return evalFloat(SOP_EDIT_SCULPT_RAY_HITUV_IDX, 1,t); }
00355 virtual float RAYHITPRESSURE(float t)
00356 { return evalFloat(SOP_EDIT_SCULPT_RAY_HITPRESSURE_IDX, 0, t); }
00357 virtual int PRIMHIT(float t)
00358 { return evalInt(SOP_EDIT_SCULPT_RAY_HITPRIM_IDX, 0,t); }
00359 virtual int PTHIT(float t)
00360 { return evalInt(SOP_EDIT_SCULPT_RAY_HITPT_IDX, 0, t); }
00361 virtual int EVENT()
00362 { return evalInt(SOP_EDIT_SCULPT_RAY_EVENT_IDX, 0,0); }
00363 virtual bool USE_FOREGROUND(void)
00364 { return evalInt(SOP_EDIT_SCULPT_COLOR_SWITCHER_IDX,
00365 0, 0) == 0; }
00366 virtual float FGR(float t) { return evalFloat(SOP_EDIT_SCULPT_FG_IDX, 0, t); }
00367 virtual float FGG(float ) { return 0.0f; }
00368 virtual float FGB(float ) { return 0.0f; }
00369 virtual float BGR(float t) { return evalFloat(SOP_EDIT_SCULPT_BG_IDX, 0, t); }
00370 virtual float BGG(float ) { return 0.0f; }
00371 virtual float BGB(float ) { return 0.0f; }
00372
00373 virtual float SOFTEDGE(float t)
00374 { return evalFloat(SOP_EDIT_SCULPT_SOFTEDGE_IDX, 0, t); }
00375 virtual void KERNEL(UT_String &str, float t)
00376 { evalString(str, SOP_EDIT_SCULPT_KERNEL_IDX, 0, t); }
00377 virtual int UPTYPE(float t)
00378 { return evalInt(SOP_EDIT_SCULPT_UPTYPE_IDX, 0, t);}
00379 virtual float UPX(float t)
00380 { return evalFloat(SOP_EDIT_SCULPT_UPVECTOR_IDX, 0, t);}
00381 virtual float UPY(float t)
00382 { return evalFloat(SOP_EDIT_SCULPT_UPVECTOR_IDX, 1, t);}
00383 virtual float UPZ(float t)
00384 { return evalFloat(SOP_EDIT_SCULPT_UPVECTOR_IDX, 2, t);}
00385
00386 virtual float PAPERNOISE(float t)
00387 { return evalFloat(SOP_EDIT_SCULPT_PAPER_IDX, 0, t);}
00388 virtual float SPLATTER(float t)
00389 { return evalFloat(SOP_EDIT_SCULPT_SPLATTER_IDX, 0, t); }
00390 virtual void BITMAP(UT_String &str, float t)
00391 { evalString(str, SOP_EDIT_SCULPT_BITMAP_IDX, 0, t); }
00392 virtual int BITMAPCHAN(float t)
00393 { return evalInt(SOP_EDIT_SCULPT_BITMAPCHAN_IDX, 0, t); }
00394 virtual float ANGLE(float t)
00395 { return evalFloat(SOP_EDIT_SCULPT_ANGLE_IDX, 0, t); }
00396 virtual float SQUASH(float t)
00397 { return evalFloat(SOP_EDIT_SCULPT_SQUASH_IDX, 0, t); }
00398
00399 virtual int DOSTAMPING() { return 0; }
00400 virtual int WRITEALPHA() { return 0; }
00401 virtual int OVERRIDECD() { return 0; }
00402 virtual void CDNAME(UT_String &, float) { }
00403 virtual int OVERRIDEALPHA() { return 0; }
00404 virtual void ALPHANAME(UT_String &, float) { }
00405 virtual int OVERRIDENML() { return 0; }
00406 virtual void NMLNAME(UT_String & , float ) {}
00407 virtual int ADDATTRIB() { return 0; }
00408
00409 virtual float SYMMETRYDIRX(float ) { return 0.0f; }
00410 virtual float SYMMETRYDIRY(float ) { return 0.0f; }
00411 virtual float SYMMETRYDIRZ(float ) { return 0.0f; }
00412 virtual float SYMMETRYORIGX(float ) { return 0.0f; }
00413 virtual float SYMMETRYORIGY(float ) { return 0.0f; }
00414 virtual float SYMMETRYORIGZ(float ) { return 0.0f; }
00415 virtual int DOREFLECTION() { return 0; }
00416 virtual int DOREFLECT() { return 0; }
00417 virtual int DOPOINTREFLECTION() { return 0; }
00418 virtual int DOROTATION() { return 0; }
00419 virtual int SYMMETRYROT(float ) { return 0; }
00420 virtual float SYMMETRYDIST(float ) { return 0.0f; }
00421 virtual int DOUVREFLECTION() { return 0; }
00422 virtual float SYMMETRYUVORIGU(float ) { return 0.0f; }
00423 virtual float SYMMETRYUVORIGV(float ) { return 0.0f; }
00424 virtual float SYMMETRYUVANGLE(float ) { return 0.0f;}
00425
00426 virtual int USECONNECTIVITY()
00427 { return evalInt(SOP_EDIT_SCULPT_USECONNECTIVITY_IDX, 0, 0); }
00428 virtual int USEDEPTH()
00429 { return evalInt(SOP_EDIT_SCULPT_USEDEPTH_IDX, 0, 0); }
00430 virtual float DEPTH(float t)
00431 { return evalFloat(SOP_EDIT_SCULPT_DEPTH_IDX, 0, t); }
00432 virtual float HEIGHT(float t)
00433 { return evalFloat(SOP_EDIT_SCULPT_DEPTH_IDX, 1, t); }
00434
00435
00436
00437
00438 virtual bool hasStrokeChanged(float t);
00439 virtual bool hasStyleChanged(float t);
00440
00441
00442 virtual bool hasNibFileChanged(float t);
00443 virtual bool hasAccumStencilChanged(float t);
00444 virtual bool hasNibLookChanged(float t);
00445
00446
00447 virtual bool wantsCookSelection(void) const { return true; }
00448
00449 virtual const GB_PrimitiveGroup *getPrimitiveSelection(void) const
00450 { return 0; }
00451 virtual GDT_CoordinateFrames *getCoordinateFrames()
00452 { return &myCoordinateFrames; }
00453
00454 private:
00455
00456 int GRPTYPE() { return evalInt(SOP_EDIT_GRPTYPE_IDX, 0, 0); }
00457
00458
00459 int SWITCHER() { return evalInt(SOP_EDIT_SWITCHER_IDX, 0, 0); }
00460 void SET_SWITCHER(int i)
00461 { setInt(SOP_EDIT_SWITCHER_IDX, 0, 0, i); }
00462
00463
00464 int TRS() { return evalInt(SOP_EDIT_TRS_IDX, 0, 0); }
00465 int XYZ() { return evalInt(SOP_EDIT_XYZ_IDX, 0, 0); }
00466 float TX() { return evalFloat(SOP_EDIT_T_IDX, 0, 0); }
00467 float TY() { return evalFloat(SOP_EDIT_T_IDX, 1, 0); }
00468 float TZ() { return evalFloat(SOP_EDIT_T_IDX, 2, 0); }
00469 float RX() { return evalFloat(SOP_EDIT_R_IDX, 0, 0); }
00470 float RY() { return evalFloat(SOP_EDIT_R_IDX, 1, 0); }
00471 float RZ() { return evalFloat(SOP_EDIT_R_IDX, 2, 0); }
00472 float SX() { return evalFloat(SOP_EDIT_S_IDX, 0, 0); }
00473 float SY() { return evalFloat(SOP_EDIT_S_IDX, 1, 0); }
00474 float SZ() { return evalFloat(SOP_EDIT_S_IDX, 2, 0); }
00475 float SHEAR_XY() { return evalFloat(SOP_EDIT_SHEAR_IDX, 0, 0); }
00476 float SHEAR_XZ() { return evalFloat(SOP_EDIT_SHEAR_IDX, 1, 0); }
00477 float SHEAR_YZ() { return evalFloat(SOP_EDIT_SHEAR_IDX, 2, 0); }
00478 float PX() { return evalFloat(SOP_EDIT_P_IDX, 0, 0); }
00479 void SET_PX(float f){ setFloat(SOP_EDIT_P_IDX, 0, 0, f); }
00480 float PY() { return evalFloat(SOP_EDIT_P_IDX, 1, 0); }
00481 void SET_PY(float f){ setFloat(SOP_EDIT_P_IDX, 1, 0, f); }
00482 float PZ() { return evalFloat(SOP_EDIT_P_IDX, 2, 0); }
00483 void SET_PZ(float f){ setFloat(SOP_EDIT_P_IDX, 2, 0, f); }
00484 int KEEP() { return evalInt(SOP_EDIT_KEEP_IDX, 0, 0); }
00485
00486
00487 float DIST() { return evalFloat(SOP_EDIT_DIST_IDX, 0, 0); }
00488 int LEADNML() { return evalInt(SOP_EDIT_LEADNML_IDX, 0, 0); }
00489
00490
00491 float SOFTRADIUS() { return evalFloat(SOP_EDIT_SOFTRADIUS_IDX, 0, 0); }
00492 int SOFTTYPE() { return evalInt(SOP_EDIT_SOFTTYPE_IDX, 0, 0); }
00493 float TANDEG0() { return evalFloat(SOP_EDIT_TANGENT_IDX,0, 0); }
00494 float TANDEG1() { return evalFloat(SOP_EDIT_TANGENT_IDX,1, 0); }
00495 void KERNEL(UT_String &str) { evalString(str, SOP_EDIT_KERNEL_IDX,
00496 0, 0.0f); }
00497 int GLOBAL() { return evalInt(SOP_EDIT_GLOBAL_IDX, 0, 0); }
00498
00499 bool USEORIENT()
00500 { return evalInt(SOP_EDIT_USEORIENT_IDX, 0, 0) != 0; }
00501
00502
00503 bool USEMIRROR()
00504 { return evalInt(SOP_EDIT_USEMIRROR_IDX, 0, 0) != 0; }
00505 float SYMMETRYAXISX()
00506 { return evalFloat(SOP_EDIT_SYMMETRYAXIS_IDX, 0, 0); }
00507 float SYMMETRYAXISY()
00508 { return evalFloat(SOP_EDIT_SYMMETRYAXIS_IDX, 1, 0); }
00509 float SYMMETRYAXISZ()
00510 { return evalFloat(SOP_EDIT_SYMMETRYAXIS_IDX, 2, 0); }
00511 float SYMMETRYORIGINX()
00512 { return evalFloat(SOP_EDIT_SYMMETRYORIGIN_IDX, 0, 0); }
00513 float SYMMETRYORIGINY()
00514 { return evalFloat(SOP_EDIT_SYMMETRYORIGIN_IDX, 1, 0); }
00515 float SYMMETRYORIGINZ()
00516 { return evalFloat(SOP_EDIT_SYMMETRYORIGIN_IDX, 2, 0); }
00517 float SYMMETRYDISTANCE()
00518 { return evalFloat(SOP_EDIT_SYMMETRYDISTANCE_IDX, 0, 0); }
00519 float SYMMETRYTHRESHOLD()
00520 { return evalFloat(SOP_EDIT_SYMMETRYTHRESHOLD_IDX, 0, 0); }
00521
00522 int UPDATENMLS() { return evalInt(SOP_EDIT_UPDATENMLS_IDX,
00523 0, 0); }
00524
00525
00526 bool isTransform() { return SWITCHER() == 0; }
00527 bool isPeak() { return SWITCHER() != 0; }
00528 void doPeak();
00529
00530 bool isSoft() { return SOFTRADIUS() != 0.0; }
00531
00532 void getTransform(UT_Matrix4 &xform, UT_Vector3 &pivot);
00533 UT_Vector3 myInitialCentroid;
00534
00535 GDT_CoordinateFrames myCoordinateFrames;
00536 bool myUsedOrient;
00537 int myCurrentInputId;
00538 int myCurrentGeoCookCount;
00539 int myReferenceInputId;
00540 int myReferenceGeoCookCount;
00541 };
00542
00543 #endif