瀏覽代碼

changed iteration

Dave Schuyler 22 年之前
父節點
當前提交
4ae3692c79
共有 1 個文件被更改,包括 13 次插入40 次删除
  1. 13 40
      panda/src/physics/baseIntegrator.cxx

+ 13 - 40
panda/src/physics/baseIntegrator.cxx

@@ -55,7 +55,6 @@ precompute_linear_matrices(Physical *physical,
   PhysicalNode *physical_node = physical->get_physical_node();
   PhysicalNode *physical_node = physical->get_physical_node();
   nassertv(physical_node);
   nassertv(physical_node);
 
 
-  int i;
   // by global forces, we mean forces not contained in the physical
   // by global forces, we mean forces not contained in the physical
   int global_force_vec_size = forces.size();
   int global_force_vec_size = forces.size();
 
 
@@ -71,18 +70,6 @@ precompute_linear_matrices(Physical *physical,
   NodePath physical_np(physical_node);
   NodePath physical_np(physical_node);
   NodePath global_physical_np = physical_np.get_parent();
   NodePath global_physical_np = physical_np.get_parent();
 
 
-  #if 0
-
-  // tally the global xforms
-  for (i = 0; i < global_force_vec_size; ++i) {
-    force_node = forces[i]->get_force_node();
-    nassertv(force_node != (ForceNode *) NULL);
-
-    NodePath force_np(force_node);
-    //_precomputed_linear_matrices.push_back(global_physical_np.get_mat(force_node));
-    _precomputed_linear_matrices.push_back(force_np.get_mat(global_physical_np));
-  }
-  #else
   // tally the global xforms
   // tally the global xforms
   for (LinearForceVector::const_iterator fi = forces.begin(); 
   for (LinearForceVector::const_iterator fi = forces.begin(); 
       fi != forces.end(); 
       fi != forces.end(); 
@@ -95,24 +82,9 @@ precompute_linear_matrices(Physical *physical,
     //_precomputed_linear_matrices.push_back(global_physical_np.get_mat(force_node));
     //_precomputed_linear_matrices.push_back(global_physical_np.get_mat(force_node));
     _precomputed_linear_matrices.push_back(force_np.get_mat(global_physical_np));
     _precomputed_linear_matrices.push_back(force_np.get_mat(global_physical_np));
   }
   }
-  #endif
 
 
-
-
-
-  const LinearForceVector &force_vector = physical->get_linear_forces();
-
-  #if 0
-  // tally the local xforms
-  for (i = 0; i < local_force_vec_size; ++i) {
-    force_node = force_vector[i]->get_force_node();
-    nassertv(force_node != (ForceNode *) NULL);
-
-    NodePath force_np(force_node);
-    _precomputed_linear_matrices.push_back(physical_np.get_mat(force_node));
-  }
-  #else
   // tally the local xforms
   // tally the local xforms
+  const LinearForceVector &force_vector = physical->get_linear_forces();
   for (LinearForceVector::const_iterator fi = force_vector.begin(); 
   for (LinearForceVector::const_iterator fi = force_vector.begin(); 
       fi != force_vector.end(); 
       fi != force_vector.end(); 
       ++fi) {
       ++fi) {
@@ -122,8 +94,6 @@ precompute_linear_matrices(Physical *physical,
     NodePath force_np(force_node);
     NodePath force_np(force_node);
     _precomputed_linear_matrices.push_back(physical_np.get_mat(force_node));
     _precomputed_linear_matrices.push_back(physical_np.get_mat(force_node));
   }
   }
-  #endif
-
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -147,7 +117,6 @@ precompute_angular_matrices(Physical *physical,
 
 
   // by local forces, we mean members of the physical's force set.
   // by local forces, we mean members of the physical's force set.
   int local_force_vec_size = physical->get_angular_forces().size();
   int local_force_vec_size = physical->get_angular_forces().size();
-  int i;
 
 
   ForceNode *force_node;
   ForceNode *force_node;
 
 
@@ -156,22 +125,26 @@ precompute_angular_matrices(Physical *physical,
   _precomputed_angular_matrices.reserve(global_force_vec_size + local_force_vec_size);
   _precomputed_angular_matrices.reserve(global_force_vec_size + local_force_vec_size);
 
 
   NodePath physical_np(physical_node);
   NodePath physical_np(physical_node);
+  NodePath global_physical_np = physical_np.get_parent();
 
 
   // tally the global xforms
   // tally the global xforms
-  for (i = 0; i < global_force_vec_size; ++i) {
-    force_node = forces[i]->get_force_node();
+  for (AngularForceVector::const_iterator fi = forces.begin(); 
+      fi != forces.end(); 
+      ++fi) {
+    force_node = (*fi)->get_force_node();
     nassertv(force_node != (ForceNode *) NULL);
     nassertv(force_node != (ForceNode *) NULL);
 
 
     NodePath force_np(force_node);
     NodePath force_np(force_node);
-    _precomputed_angular_matrices.push_back(physical_np.get_mat(force_node));
+    //_precomputed_angular_matrices.push_back(physical_np.get_mat(force_node));
+    _precomputed_linear_matrices.push_back(force_np.get_mat(global_physical_np));
   }
   }
 
 
-  const AngularForceVector &force_vector =
-    physical->get_angular_forces();
-
   // tally the local xforms
   // tally the local xforms
-  for (i = 0; i < local_force_vec_size; ++i) {
-    force_node = force_vector[i]->get_force_node();
+  const AngularForceVector &force_vector = physical->get_angular_forces();
+  for (AngularForceVector::const_iterator fi = force_vector.begin(); 
+      fi != force_vector.end(); 
+      ++fi) {
+    force_node = (*fi)->get_force_node();
     nassertv(force_node != (ForceNode *) NULL);
     nassertv(force_node != (ForceNode *) NULL);
 
 
     NodePath force_np(force_node);
     NodePath force_np(force_node);