You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
4.6 KiB
134 lines
4.6 KiB
using System; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
|
|
|
|
namespace UnityStandardAssets.CrossPlatformInput |
|
{ |
|
public abstract class VirtualInput |
|
{ |
|
public Vector3 virtualMousePosition { get; private set; } |
|
|
|
|
|
protected Dictionary<string, CrossPlatformInputManager.VirtualAxis> m_VirtualAxes = |
|
new Dictionary<string, CrossPlatformInputManager.VirtualAxis>(); |
|
// Dictionary to store the name relating to the virtual axes |
|
protected Dictionary<string, CrossPlatformInputManager.VirtualButton> m_VirtualButtons = |
|
new Dictionary<string, CrossPlatformInputManager.VirtualButton>(); |
|
protected List<string> m_AlwaysUseVirtual = new List<string>(); |
|
// list of the axis and button names that have been flagged to always use a virtual axis or button |
|
|
|
|
|
public bool AxisExists(string name) |
|
{ |
|
return m_VirtualAxes.ContainsKey(name); |
|
} |
|
|
|
public bool ButtonExists(string name) |
|
{ |
|
return m_VirtualButtons.ContainsKey(name); |
|
} |
|
|
|
|
|
public void RegisterVirtualAxis(CrossPlatformInputManager.VirtualAxis axis) |
|
{ |
|
// check if we already have an axis with that name and log and error if we do |
|
if (m_VirtualAxes.ContainsKey(axis.name)) |
|
{ |
|
Debug.LogError("There is already a virtual axis named " + axis.name + " registered."); |
|
} |
|
else |
|
{ |
|
// add any new axes |
|
m_VirtualAxes.Add(axis.name, axis); |
|
|
|
// if we dont want to match with the input manager setting then revert to always using virtual |
|
if (!axis.matchWithInputManager) |
|
{ |
|
m_AlwaysUseVirtual.Add(axis.name); |
|
} |
|
} |
|
} |
|
|
|
|
|
public void RegisterVirtualButton(CrossPlatformInputManager.VirtualButton button) |
|
{ |
|
// check if already have a buttin with that name and log an error if we do |
|
if (m_VirtualButtons.ContainsKey(button.name)) |
|
{ |
|
Debug.LogError("There is already a virtual button named " + button.name + " registered."); |
|
} |
|
else |
|
{ |
|
// add any new buttons |
|
m_VirtualButtons.Add(button.name, button); |
|
|
|
// if we dont want to match to the input manager then always use a virtual axis |
|
if (!button.matchWithInputManager) |
|
{ |
|
m_AlwaysUseVirtual.Add(button.name); |
|
} |
|
} |
|
} |
|
|
|
|
|
public void UnRegisterVirtualAxis(string name) |
|
{ |
|
// if we have an axis with that name then remove it from our dictionary of registered axes |
|
if (m_VirtualAxes.ContainsKey(name)) |
|
{ |
|
m_VirtualAxes.Remove(name); |
|
} |
|
} |
|
|
|
|
|
public void UnRegisterVirtualButton(string name) |
|
{ |
|
// if we have a button with this name then remove it from our dictionary of registered buttons |
|
if (m_VirtualButtons.ContainsKey(name)) |
|
{ |
|
m_VirtualButtons.Remove(name); |
|
} |
|
} |
|
|
|
|
|
// returns a reference to a named virtual axis if it exists otherwise null |
|
public CrossPlatformInputManager.VirtualAxis VirtualAxisReference(string name) |
|
{ |
|
return m_VirtualAxes.ContainsKey(name) ? m_VirtualAxes[name] : null; |
|
} |
|
|
|
|
|
public void SetVirtualMousePositionX(float f) |
|
{ |
|
virtualMousePosition = new Vector3(f, virtualMousePosition.y, virtualMousePosition.z); |
|
} |
|
|
|
|
|
public void SetVirtualMousePositionY(float f) |
|
{ |
|
virtualMousePosition = new Vector3(virtualMousePosition.x, f, virtualMousePosition.z); |
|
} |
|
|
|
|
|
public void SetVirtualMousePositionZ(float f) |
|
{ |
|
virtualMousePosition = new Vector3(virtualMousePosition.x, virtualMousePosition.y, f); |
|
} |
|
|
|
|
|
public abstract float GetAxis(string name, bool raw); |
|
|
|
public abstract bool GetButton(string name); |
|
public abstract bool GetButtonDown(string name); |
|
public abstract bool GetButtonUp(string name); |
|
|
|
public abstract void SetButtonDown(string name); |
|
public abstract void SetButtonUp(string name); |
|
public abstract void SetAxisPositive(string name); |
|
public abstract void SetAxisNegative(string name); |
|
public abstract void SetAxisZero(string name); |
|
public abstract void SetAxis(string name, float value); |
|
public abstract Vector3 MousePosition(); |
|
} |
|
}
|
|
|