| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #pragma once
- #include "BsEditorPrerequisites.h"
- #include "BsVector2I.h"
- #include "BsMatrix4.h"
- #include "BsQuaternion.h"
- namespace BansheeEngine
- {
- class BS_ED_EXPORT HandleSlider
- {
- public:
- enum class State
- {
- Inactive,
- Active,
- Hover
- };
- HandleSlider(bool fixedScale);
- virtual ~HandleSlider() { }
- virtual bool intersects(const Ray& ray, float& t) const = 0;
- virtual void handleInput(const CameraHandlerPtr& camera, const Vector2I& inputDelta) = 0;
- void update(const CameraHandlerPtr& camera);
- State getState() const { return mState; }
- bool getFixedScale() const { return mFixedScale; }
- void setPosition(const Vector3& position);
- void setRotation(const Quaternion& rotation);
- void setScale(const Vector3& scale);
- const Vector3& getPosition() const { return mPosition; }
- const Quaternion& getRotation() const { return mRotation; }
- const Vector3& getScale() const { return mScale; }
- protected:
- friend class HandleSliderManager;
- void setInactive();
- void setActive(const CameraHandlerPtr& camera, const Vector2I& pointerPos);
- void setHover();
- const Matrix4& getTransform() const;
- const Matrix4& getTransformInv() const;
- virtual void activate(const CameraHandlerPtr& camera, const Vector2I& pointerPos) { }
- virtual void reset() { }
- void updateCachedTransform() const;
- float calcDelta(const CameraHandlerPtr& camera, const Vector3& position, const Vector3& direction,
- const Vector2I& pointerStart, const Vector2I& pointerEnd);
- bool mFixedScale;
- Vector3 mPosition;
- Quaternion mRotation;
- Vector3 mScale;
- float mDistanceScale;
- Vector2I mStartPointerPos;
- Vector2I mCurrentPointerPos;
- State mState;
- mutable bool mTransformDirty;
- mutable Matrix4 mTransform;
- mutable Matrix4 mTransformInv;
- };
- }
|