//********************************** 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);
}
/** @} */
}