Make work with astra
This commit is contained in:
parent
21859bcfb3
commit
c8ee5045e2
2 changed files with 6338 additions and 4613 deletions
|
|
@ -1,118 +1,9 @@
|
|||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
namespace UnityStandardAssets.CrossPlatformInput
|
||||
{
|
||||
public class Joystick : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler
|
||||
{
|
||||
public enum AxisOption
|
||||
{
|
||||
// Options for which axes to use
|
||||
Both, // Use both
|
||||
OnlyHorizontal, // Only horizontal
|
||||
OnlyVertical // Only vertical
|
||||
}
|
||||
|
||||
public int MovementRange = 100;
|
||||
public AxisOption axesToUse = AxisOption.Both; // The options for the axes that the still will use
|
||||
public string horizontalAxisName = "Horizontal"; // The name given to the horizontal axis for the cross platform input
|
||||
public string verticalAxisName = "Vertical"; // The name given to the vertical axis for the cross platform input
|
||||
|
||||
Vector3 m_StartPos;
|
||||
bool m_UseX; // Toggle for using the x axis
|
||||
bool m_UseY; // Toggle for using the Y axis
|
||||
CrossPlatformInputManager.VirtualAxis m_HorizontalVirtualAxis; // Reference to the joystick in the cross platform input
|
||||
CrossPlatformInputManager.VirtualAxis m_VerticalVirtualAxis; // Reference to the joystick in the cross platform input
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
CreateVirtualAxes();
|
||||
}
|
||||
|
||||
void Start()
|
||||
{
|
||||
m_StartPos = transform.position;
|
||||
}
|
||||
|
||||
void UpdateVirtualAxes(Vector3 value)
|
||||
{
|
||||
var delta = m_StartPos - value;
|
||||
delta.y = -delta.y;
|
||||
delta /= MovementRange;
|
||||
if (m_UseX)
|
||||
{
|
||||
m_HorizontalVirtualAxis.Update(-delta.x);
|
||||
}
|
||||
|
||||
if (m_UseY)
|
||||
{
|
||||
m_VerticalVirtualAxis.Update(delta.y);
|
||||
}
|
||||
}
|
||||
|
||||
void CreateVirtualAxes()
|
||||
{
|
||||
// set axes to use
|
||||
m_UseX = (axesToUse == AxisOption.Both || axesToUse == AxisOption.OnlyHorizontal);
|
||||
m_UseY = (axesToUse == AxisOption.Both || axesToUse == AxisOption.OnlyVertical);
|
||||
|
||||
// create new axes based on axes to use
|
||||
if (m_UseX)
|
||||
{
|
||||
m_HorizontalVirtualAxis = new CrossPlatformInputManager.VirtualAxis(horizontalAxisName);
|
||||
CrossPlatformInputManager.RegisterVirtualAxis(m_HorizontalVirtualAxis);
|
||||
}
|
||||
if (m_UseY)
|
||||
{
|
||||
m_VerticalVirtualAxis = new CrossPlatformInputManager.VirtualAxis(verticalAxisName);
|
||||
CrossPlatformInputManager.RegisterVirtualAxis(m_VerticalVirtualAxis);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void OnDrag(PointerEventData data)
|
||||
{
|
||||
Vector3 newPos = Vector3.zero;
|
||||
|
||||
if (m_UseX)
|
||||
{
|
||||
int delta = (int)(data.position.x - m_StartPos.x);
|
||||
delta = Mathf.Clamp(delta, - MovementRange, MovementRange);
|
||||
newPos.x = delta;
|
||||
}
|
||||
|
||||
if (m_UseY)
|
||||
{
|
||||
int delta = (int)(data.position.y - m_StartPos.y);
|
||||
delta = Mathf.Clamp(delta, -MovementRange, MovementRange);
|
||||
newPos.y = delta;
|
||||
}
|
||||
transform.position = new Vector3(m_StartPos.x + newPos.x, m_StartPos.y + newPos.y, m_StartPos.z + newPos.z);
|
||||
UpdateVirtualAxes(transform.position);
|
||||
}
|
||||
|
||||
|
||||
public void OnPointerUp(PointerEventData data)
|
||||
{
|
||||
transform.position = m_StartPos;
|
||||
UpdateVirtualAxes(m_StartPos);
|
||||
}
|
||||
|
||||
|
||||
public void OnPointerDown(PointerEventData data) { }
|
||||
|
||||
void OnDisable()
|
||||
{
|
||||
// remove the joysticks from the cross platform input
|
||||
if (m_UseX)
|
||||
{
|
||||
m_HorizontalVirtualAxis.Remove();
|
||||
}
|
||||
if (m_UseY)
|
||||
{
|
||||
m_VerticalVirtualAxis.Remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fileFormatVersion: 2
|
||||
guid: 7d3269566d48b8447bb48d2259e28f8b
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
|
|
|
|||
|
|
@ -1,9 +1,134 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1caf40fc8bebb6b43b2550c05ca791d6
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue