BsHandleSlider.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #pragma once
  2. #include "BsEditorPrerequisites.h"
  3. #include "BsVector2I.h"
  4. #include "BsMatrix4.h"
  5. #include "BsQuaternion.h"
  6. namespace BansheeEngine
  7. {
  8. class BS_ED_EXPORT HandleSlider
  9. {
  10. public:
  11. enum class State
  12. {
  13. Inactive,
  14. Active,
  15. Hover
  16. };
  17. HandleSlider(bool fixedScale);
  18. virtual ~HandleSlider() { }
  19. virtual bool intersects(const Ray& ray, float& t) const = 0;
  20. virtual void handleInput(const CameraHandlerPtr& camera, const Vector2I& inputDelta) = 0;
  21. void update(const CameraHandlerPtr& camera);
  22. State getState() const { return mState; }
  23. bool getFixedScale() const { return mFixedScale; }
  24. void setPosition(const Vector3& position);
  25. void setRotation(const Quaternion& rotation);
  26. void setScale(const Vector3& scale);
  27. const Vector3& getPosition() const { return mPosition; }
  28. const Quaternion& getRotation() const { return mRotation; }
  29. const Vector3& getScale() const { return mScale; }
  30. protected:
  31. friend class HandleSliderManager;
  32. void setInactive();
  33. void setActive(const CameraHandlerPtr& camera, const Vector2I& pointerPos);
  34. void setHover();
  35. const Matrix4& getTransform() const;
  36. const Matrix4& getTransformInv() const;
  37. virtual void activate(const CameraHandlerPtr& camera, const Vector2I& pointerPos) { }
  38. virtual void reset() { }
  39. void updateCachedTransform() const;
  40. float calcDelta(const CameraHandlerPtr& camera, const Vector3& position, const Vector3& direction,
  41. const Vector2I& pointerStart, const Vector2I& pointerEnd);
  42. bool mFixedScale;
  43. Vector3 mPosition;
  44. Quaternion mRotation;
  45. Vector3 mScale;
  46. float mDistanceScale;
  47. Vector2I mStartPointerPos;
  48. Vector2I mCurrentPointerPos;
  49. State mState;
  50. mutable bool mTransformDirty;
  51. mutable Matrix4 mTransform;
  52. mutable Matrix4 mTransformInv;
  53. };
  54. }