BsHandleSliderDisc.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include "BsEditorPrerequisites.h"
  3. #include "BsHandleSlider.h"
  4. #include "BsTorus.h"
  5. namespace BansheeEngine
  6. {
  7. class BS_ED_EXPORT HandleSliderDisc : public HandleSlider
  8. {
  9. public:
  10. HandleSliderDisc(const Vector3& normal, float radius, bool fixedScale);
  11. ~HandleSliderDisc();
  12. bool intersects(const Ray& ray, float& t) const;
  13. void handleInput(const CameraHandlerPtr& camera, const Vector2I& inputDelta);
  14. float getDelta() const { return mDelta; }
  15. protected:
  16. void activate(const CameraHandlerPtr& camera, const Vector2I& pointerPos);
  17. void reset() { mDelta = 0.0f; }
  18. virtual void updateCachedTransform() const;
  19. Vector3 calculateClosestPointOnArc(const Ray& inputRay, const Vector3& center, const Vector3& up,
  20. float radius, Degree startAngle, Degree angleAmount);
  21. Degree pointOnCircleToAngle(Vector3 up, Vector3 point);
  22. static const float TORUS_RADIUS;
  23. Vector3 mNormal;
  24. float mRadius;
  25. Matrix4 mTorusRotation;
  26. Vector3 mDirection;
  27. Vector3 mStartPosition;
  28. float mDelta;
  29. Torus mCollider;
  30. };
  31. }