2727
2828
2929#include < Modules/Legacy/Fields/CalculateNormals.h>
30- #include < Core/Datatypes/String.h>
30+ #include < Core/Datatypes/Legacy/Field/Field.h>
31+ #include < Core/Datatypes/Legacy/Field/VField.h>
32+ #include < Core/Datatypes/Legacy/Field/VMesh.h>
33+ #include < Core/Datatypes/Legacy/Field/FieldInformation.h>
3134
3235using namespace SCIRun ;
36+ using namespace SCIRun ::Core::Geometry;
3337using namespace SCIRun ::Modules::Fields;
3438using namespace SCIRun ::Core::Datatypes;
3539using namespace SCIRun ::Dataflow::Networks;
@@ -52,9 +56,9 @@ CalculateNormals::execute()
5256 auto ifieldhandle = getRequiredInput (InputField);
5357 auto ipointhandle = getRequiredInput (InputPoint);
5458
55- if ( inputs_changed_ || ! oport_cached ( " Output Field " ))
59+ if ( needToExecute ( ))
5660 {
57- update_state (Executing );
61+ auto state = get_state ( );
5862
5963 VField* point_field = ipointhandle->vfield ();
6064 VMesh* point_mesh = ipointhandle->vmesh ();
@@ -69,14 +73,15 @@ CalculateNormals::execute()
6973 Vector dir;
7074 bool has_vector = false ;
7175 point_mesh->get_center (attract_point,VMesh::Node::index_type (0 ));
76+ FieldInformation pointfi (ipointhandle);
7277
73- if (!(point_field-> is_pointcloudmesh ()))
78+ if (!(pointfi. is_pointcloudmesh ()))
7479 {
7580 error (" Input field was not a valid point cloud." );
7681 return ;
7782 }
7883
79- if (point_field-> is_vector ())
84+ if (pointfi. is_vector ())
8085 {
8186 has_vector = true ;
8287 point_field->get_value (dir,0 );
@@ -86,16 +91,15 @@ CalculateNormals::execute()
8691
8792 VField::size_type num_values = field->num_values ();
8893
89- FieldInformation fi (ifieldhandle);
90- if (fi .field_basis_order () < 1 )
94+ FieldInformation fieldfi (ifieldhandle);
95+ if (fieldfi .field_basis_order () < 1 )
9196 {
92- fi.make_lineardata ();
93- fi.make_vector ();
97+ fieldfi.make_lineardata ();
9498 }
9599
96- fi .make_vector ();
100+ fieldfi .make_vector ();
97101
98- auto ofieldhandle = CreateField (fi ,ifieldhandle->mesh ());
102+ auto ofieldhandle = CreateField (fieldfi ,ifieldhandle->mesh ());
99103 VField* ofield = ofieldhandle->vfield ();
100104 ofield->resize_values ();
101105
@@ -123,7 +127,7 @@ CalculateNormals::execute()
123127 if (val == 0.0 ) val = 1e-3 ;
124128 vec = vec*val;
125129 ofield->set_value (vec,idx);
126- cnt++; if (cnt == 400 ) { cnt=0 ; update_progress (idx,num_values); }
130+ cnt++; // if (cnt == 400) { cnt=0; update_progress(idx,num_values); }
127131 }
128132 }
129133 else
@@ -144,10 +148,10 @@ CalculateNormals::execute()
144148 vec.safe_normalize ();
145149 }
146150 ofield->set_value (vec,idx);
147- cnt++; if (cnt == 400 ) { cnt=0 ; update_progress (idx,num_values); }
151+ cnt++; // if (cnt == 400) { cnt=0; update_progress(idx,num_values); }
148152 }
149153 }
150154
151- sendOutput (OutputField, ofield );
155+ sendOutput (OutputField, ofieldhandle );
152156 }
153157}
0 commit comments