123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- using System.Runtime.InteropServices;
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.UI;
- namespace TriLibCore.Samples
- {
- /// <summary>Represents a Class used to add paste capabilities to WebGL projects.</summary>
- public class PasteManager : MonoBehaviour
- {
- #if UNITY_WEBGL && !UNITY_EDITOR
- [DllImport("__Internal")]
- private static extern void PasteManagerSetup();
- #endif
- /// <summary>The Paste Manager Singleton instance.</summary>
- public static PasteManager Instance { get; private set; }
- /// <summary>Checks if the Singleton instance exists.</summary>
- public static void CheckInstance()
- {
- if (Instance == null)
- {
- Instance = new GameObject("PasteManager").AddComponent<PasteManager>();
- }
- }
- #if UNITY_WEBGL && !UNITY_EDITOR
- private void Start()
- {
- PasteManagerSetup();
- }
- #endif
- /// <summary>Called when the user pastes the given value in the Web-Browser.</summary>
- /// <param name="value">The pasted value.</param>
- public void Paste(string value)
- {
- var currentCurrentSelectedGameObject = EventSystem.current.currentSelectedGameObject;
- if (currentCurrentSelectedGameObject != null)
- {
- var inputField = currentCurrentSelectedGameObject.GetComponentInChildren<InputField>();
- if (inputField != null)
- {
- var newText = $"{inputField.text.Substring(0, inputField.selectionAnchorPosition)}{value}{inputField.text.Substring(inputField.selectionFocusPosition)}";
- inputField.text = newText;
- }
- }
- }
- }
- }
|