Exemple #1
0
 public void setTarget(Posture posture, ulong mask = (ulong)PartsBit.Whole)
 {
     // pass 1
     foreach (var node_data in posture.getNodeDataList())
     {
         var node_idx = node_data.node_idx_;
         if (node_idx != (int)Parts.Root &&
             (1UL << node_idx & mask) != 0)
         {
             var node = node_list_[node_idx];
             node.setBaseRotation(node_data);
         }
     }
     // pass 2
     foreach (var node_data in posture.getNodeDataList())
     {
         var node_idx = node_data.node_idx_;
         if (node_idx != (int)Parts.Root &&
             (1UL << node_idx & mask) != 0)
         {
             var node = node_list_[node_idx];
             node.setTarget(node_data);
         }
     }
 }
Exemple #2
0
        public void init(Posture posture, float damper, float spring_ratio)
        {
            node_list_ = new Node[(int)Parts.Max];
            for (var i = 0; i < (int)Parts.Max; ++i)
            {
                node_list_[i] = new Node();
            }

            foreach (var node_data in posture.getNodeDataList())
            {
                // node_data.dump();
                var node_idx        = node_data.node_idx_;
                var node            = node_list_[node_idx];
                var parent_node_idx = node_data.parent_node_idx_;
                var parent_node     = parent_node_idx < (int)Parts.Max ? node_list_[parent_node_idx] : null;
                node.init(node_data, parent_node, damper, spring_ratio);
            }
        }