override public float GetActivationScore(Vector3 point, InputManager.ControllerName name) { float nearestKnotScore = -1.0f; KnotDescriptor nearestResult = new KnotDescriptor(); if (VideoRecorderUtils.ActiveVideoRecording == null && !WidgetManager.m_Instance.WidgetsDormant && !InputManager.m_Instance.GetCommand(InputManager.SketchCommands.Activate)) { // Check against all knots and put our results in storage bins. // Note that we're walking along the sorted lists instead of using m_Path.m_AllKnots. // This ensures the knotIndex stored in KnotCollisionResult is correct. for (int i = 0; i < m_Path.PositionKnots.Count; ++i) { int control = -1; CameraPathPositionKnot pk = m_Path.PositionKnots[i]; float knotScore = pk.gameObject.activeSelf ? pk.CollisionWithPoint(point, out control) : -1.0f; if (knotScore > nearestKnotScore) { nearestResult.Set(pk, control, i, null); nearestKnotScore = knotScore; } } for (int i = 0; i < m_Path.RotationKnots.Count; ++i) { int control = -1; CameraPathRotationKnot rk = m_Path.RotationKnots[i]; float knotScore = rk.CollisionWithPoint(point, out control); if (knotScore > nearestKnotScore) { nearestResult.Set(rk, control, null, rk.PathT); nearestKnotScore = knotScore; } } for (int i = 0; i < m_Path.SpeedKnots.Count; ++i) { int control = -1; CameraPathSpeedKnot sk = m_Path.SpeedKnots[i]; float knotScore = sk.CollisionWithPoint(point, out control); if (knotScore > nearestKnotScore) { nearestResult.Set(sk, control, null, sk.PathT); nearestKnotScore = knotScore; } } for (int i = 0; i < m_Path.FovKnots.Count; ++i) { int control = -1; CameraPathFovKnot fk = m_Path.FovKnots[i]; float knotScore = fk.CollisionWithPoint(point, out control); if (knotScore > nearestKnotScore) { nearestResult.Set(fk, control, null, fk.PathT); nearestKnotScore = knotScore; } } } bool brushOrWand = (name == InputManager.ControllerName.Brush) || (name == InputManager.ControllerName.Wand); if (!m_UserInteracting) { if (brushOrWand) { m_LastCollisionResults[(int)name].Set(nearestResult); if ((nearestResult.knot != null) && (nearestResult.control != -1)) { m_LastValidCollisionResults[(int)name].Set(nearestResult); } } } else if (m_InteractingController != name && brushOrWand) { m_LastCollisionResults[(int)name].Set(null, CameraPathKnot.kDefaultControl, null, null); } return nearestKnotScore; }