| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #include "BsHandleSliderLine.h"
- #include "BsHandleManager.h"
- #include "BsHandleSliderManager.h"
- #include "BsCapsule.h"
- #include "BsLineSegment3.h"
- #include "BsSphere.h"
- namespace BansheeEngine
- {
- const float HandleSliderLine::CAPSULE_RADIUS = 0.2f;
- const float HandleSliderLine::SPHERE_RADIUS = 0.5f;
- HandleSliderLine::HandleSliderLine(const Vector3& direction, float length, float snapValue, bool fixedScale)
- :HandleSlider(fixedScale, snapValue), mLength(length)
- {
- mDirection = Vector3::normalize(direction);
- Vector3 start = Vector3::ZERO;
- Vector3 end = start + mDirection * length;
- Vector3 sphereCenter = start + mDirection * std::max(0.0f, length - SPHERE_RADIUS * 2);
- HandleSliderManager& sliderManager = HandleManager::instance().getSliderManager();
- sliderManager._registerCapsuleCollider(Capsule(LineSegment3(start, end), CAPSULE_RADIUS), this);
- sliderManager._registerSphereCollider(Sphere(sphereCenter, SPHERE_RADIUS), this);
- }
- HandleSliderLine::~HandleSliderLine()
- {
- HandleSliderManager& sliderManager = HandleManager::instance().getSliderManager();
- sliderManager._unregisterSlider(this);
- }
- Vector3 HandleSliderLine::updateDelta(const Vector3& oldValue) const
- {
- return oldValue;
- // TODO - Don't forget to consider currently active transform (and also custom handle transform)
- // - Both position and direction need to consider it
- }
- }
|