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); }