Dual Stick Touch Control

Guys! I need your help again)
So i trying to implement dual stick touch controls to deploy my game on mobile. I create two sticks and they work fine but one in a time! When i trying to use 2 fingers on the screen they conflicting to each other and nothing work properly!

I think problem is in “PointerEventData” but i don’t know how to fix it… Or replace. If you have any ideas or maybe you now any GOOD text about that problem it would be great!

I used Stick.prefab from standard assets it has script:

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
		public static bool shoot;

		int pointerID;
		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)
		{
			if (pointerID == data.pointerId) {
				if (gameObject.name == "MobileJoystickAim") {
					shoot = true;
				}


				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 = Vector3.ClampMagnitude (new Vector3 (newPos.x, newPos.y, newPos.z), MovementRange) + m_StartPos;
				UpdateVirtualAxes (transform.position);
			}
		}


		public void OnPointerUp(PointerEventData data)
		{
			if (pointerID == data.pointerId) {
				transform.position = m_StartPos;
				UpdateVirtualAxes (m_StartPos);
				shoot = false;
			}
		}


		public void OnPointerDown(PointerEventData data) {
			pointerID = data.pointerId;
			Debug.Log("PointerID" + pointerID);
		}

		void OnDisable()
		{
			// remove the joysticks from the cross platform input
			if (m_UseX)
			{
				m_HorizontalVirtualAxis.Remove();
			}
			if (m_UseY)
			{
				m_VerticalVirtualAxis.Remove();
			}
		}
	}
}

@Karate_Master I fixed it by erasing the “!” at every #if !UNITY_EDITOR, but i think you have to type them back before building.