public void TryToAddBone(Bone bone, Vector3 grabbedLocation)
 {
     bool alreadyConstrainingBone = false;
     for (int i = 0; i < stateControls.Count; i++)
     {
         var entry = stateControls[i];
         entry.GrabOffset = grabbedLocation - entry.Control.TargetBone.Position;
         stateControls[i] = entry;
         if (entry.Control.TargetBone == bone)
         {
             alreadyConstrainingBone = true;
         }
     }
     if (!alreadyConstrainingBone)
     {
         //Add a new control to the group for this bone.
         var entry = new ControlEntry { Control = GetControl(bone), GrabOffset = grabbedLocation - bone.Position };
         stateControls.Add(entry);
     }
     distanceToTarget = Vector3.Dot(camera.WorldMatrix.Forward, grabbedLocation - camera.Position);
 }
 public void AddControl(String axisKey, Handler handler)
 {
     ControlEntry entry = new ControlEntry(axisKey, handler);
     controls.Add(entry);
 }