using UnityEngine; public class MovableContent : MonoBehaviour { [SerializeField] private float m_ClickHoldTime = 0.1f; private float m_timeHold = 0f; private bool m_EditingContent = false; private Transform m_CameraTransform; private float
using UnityEngine;
public class MovableContent : MonoBehaviour
{
[SerializeField]
private float m_ClickHoldTime = 0.1f;
private float m_timeHold = 0f;
private bool m_EditingContent = false;
private Transform m_CameraTransform;
private float m_MovePlaneDistance;
private void Start()
{
m_CameraTransform = Camera.main.transform;
StoreContent();
}
private void Update()
{
if (m_EditingContent)
{
Vector3 projection = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, m_MovePlaneDistance));
transform.position = projection;
}
}
private void StoreContent()
{
//if (!ContentStorageManager.Instance.contentList.Contains(this))
//{
// ContentStorageManager.Instance.contentList.Add(this);
//}
//ContentStorageManager.Instance.SaveContents();
}
public void RemoveContent()
{
//if (ContentStorageManager.Instance.contentList.Contains(this))
//{
// ContentStorageManager.Instance.contentList.Remove(this);
//}
//ContentStorageManager.Instance.SaveContents();
//Destroy(gameObject);
}
private void OnMouseDrag()
{
m_timeHold += Time.deltaTime;
if (m_timeHold >= m_ClickHoldTime && !m_EditingContent)
{
m_MovePlaneDistance = Vector3.Dot(transform.position - m_CameraTransform.position, m_CameraTransform.forward) / m_CameraTransform.forward.sqrMagnitude;
m_EditingContent = true;
}
}
private void OnMouseUp()
{
StoreContent();
m_timeHold = 0f;
m_EditingContent = false;
}
}