//********************************** Banshee Engine (www.banshee3d.com) **************************************************// //**************** Copyright (c) 2016 Marko Pintera (marko.pintera@gmail.com). All rights reserved. **********************// using System; using System.Runtime.CompilerServices; using bs; namespace bs.Editor { /** @addtogroup Handles * @{ */ /// /// Base class for all handle sliders. A handle slider is geometry that the user can interact with by selecting or /// dragging (sliding) it while in scene view. Sliders generally output a one- or multi-dimensional delta value /// that signals the drag amount (and/or direction). Handle sliders are one of the building blocks for /// implementations. /// public class HandleSlider : ScriptObject { /// /// Possible states the slider can be in. /// public enum StateType { /// Slider is not being interacted with. Inactive, /// Slider is clicked on and being dragged. Active, /// Slider is being hovered over but isn't clicked on. Hover }; /// /// Creates a new handle slider. /// /// Handle that the slider belongs to. public HandleSlider(Handle parentHandle) { parentHandle.RegisterSlider(this); } /// /// World position of the slider. /// public Vector3 Position { get { Vector3 value; Internal_GetPosition(mCachedPtr, out value); return value; } set { Internal_SetPosition(mCachedPtr, ref value); } } /// /// World rotation of the slider. /// public Quaternion Rotation { get { Quaternion value; Internal_GetRotation(mCachedPtr, out value); return value; } set { Internal_SetRotation(mCachedPtr, ref value); } } /// /// Scale of the slider. /// public Vector3 Scale { get { Vector3 value; Internal_GetScale(mCachedPtr, out value); return value; } set { Internal_SetScale(mCachedPtr, ref value); } } /// /// State the slider is currently in. /// public StateType State { get { StateType value; Internal_GetState(mCachedPtr, out value); return value; } } /// /// Determines can the slider be interacted with. /// public bool Enabled { get { return Internal_GetEnabled(mCachedPtr); } set { Internal_SetEnabled(mCachedPtr, value); } } /// /// Destroys the slider, removing it from the scene. /// internal void Destroy() { Internal_Destroy(mCachedPtr); } [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_Destroy(IntPtr nativeInstance); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_GetPosition(IntPtr nativeInstance, out Vector3 value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_SetPosition(IntPtr nativeInstance, ref Vector3 value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_GetRotation(IntPtr nativeInstance, out Quaternion value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_SetRotation(IntPtr nativeInstance, ref Quaternion value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_GetScale(IntPtr nativeInstance, out Vector3 value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_SetScale(IntPtr nativeInstance, ref Vector3 value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern bool Internal_GetEnabled(IntPtr nativeInstance); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_SetEnabled(IntPtr nativeInstance, bool value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_GetState(IntPtr nativeInstance, out StateType value); } /** @} */ }