Playvoi/Assets/FacebookSDK/Examples/Mobile/Scripts/UIInputHelper.cs
2025-10-30 22:48:16 +03:00

91 lines
3.8 KiB
C#

/**
* Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
*
* You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
* copy, modify, and distribute this software in source code or binary form for use
* in connection with the web services and APIs provided by Facebook.
*
* As with any software that integrates with the Facebook platform, your use of
* this software is subject to the Facebook Developer Principles and Policies
* [http://developers.facebook.com/policy/]. This copyright notice shall be
* included in all copies or substantial portions of the software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
using System;
using UnityEngine;
using UnityEngine.EventSystems;
using Facebook.Unity;
public class UIInputHelper : MonoBehaviour
{
private FBSDKEventBindingManager eventBindingManager { get; set; }
private Boolean isOldEventSystem { get; set; } = false;
private void Start()
{
EventSystem sceneEventSystem = FindObjectOfType<EventSystem>();
isOldEventSystem = !(sceneEventSystem == null);
if (!isOldEventSystem)
{
var eventSystem = new GameObject("EventSystem", typeof(EventSystem), typeof(StandaloneInputModule));
DontDestroyOnLoad(eventSystem);
}
}
void Update()
{
if (isOldEventSystem)
{
if (Input.GetMouseButtonDown(0) || (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began))
{
try
{
if (EventSystem.current.IsPointerOverGameObject() ||
(Input.touchCount > 0 && EventSystem.current.IsPointerOverGameObject(Input.touches[0].fingerId))
)
{
if (null != EventSystem.current.currentSelectedGameObject)
{
string name = EventSystem.current.currentSelectedGameObject.name;
GameObject go = EventSystem.current.currentSelectedGameObject;
if (null != go.GetComponent<UnityEngine.UI.Button>() &&
null != eventBindingManager)
{
var eventBindings = eventBindingManager.eventBindings;
FBSDKEventBinding matchedBinding = null;
if (null != eventBindings)
{
foreach (var eventBinding in eventBindings)
{
if (FBSDKViewHiearchy.CheckGameObjectMatchPath(go, eventBinding.path))
{
matchedBinding = eventBinding;
break;
}
}
}
if (null != matchedBinding)
{
FB.LogAppEvent(matchedBinding.eventName);
}
}
}
}
}
catch (Exception)
{
return;
}
}
}
}
}