mirror of
https://github.com/imperialsushi/gutterball-3.git
synced 2025-06-15 05:07:42 +00:00
New Version 1.42
Moving cam replay. Fixed the bugs. New Version 1.42 Moving cam replay. Fixed the bugs. New Version 1.42 Moving cam replay, Fixed the bugs.
This commit is contained in:
parent
dcb7df5fd1
commit
1c033119df
7079 changed files with 186851 additions and 48991 deletions
|
@ -0,0 +1,370 @@
|
|||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using System.Collections;
|
||||
|
||||
|
||||
namespace TMPro
|
||||
{
|
||||
|
||||
public enum TextContainerAnchors { TopLeft = 0, Top = 1, TopRight = 2, Left = 3, Middle = 4, Right = 5, BottomLeft = 6, Bottom = 7, BottomRight = 8, Custom = 9 };
|
||||
|
||||
|
||||
[RequireComponent(typeof(RectTransform))]
|
||||
[AddComponentMenu("Layout/Text Container")]
|
||||
public class TextContainer : UIBehaviour
|
||||
{
|
||||
|
||||
#pragma warning disable 0618 // Disabled warning related to deprecated properties. This is for backwards compatibility.
|
||||
|
||||
public bool hasChanged
|
||||
{
|
||||
get { return m_hasChanged; }
|
||||
set { m_hasChanged = value; }
|
||||
}
|
||||
private bool m_hasChanged;
|
||||
|
||||
|
||||
// Pivot / Transform Position
|
||||
public Vector2 pivot
|
||||
{
|
||||
get { return m_pivot; }
|
||||
set { /*Debug.Log("Pivot has changed.");*/ if (m_pivot != value) { m_pivot = value; m_anchorPosition = GetAnchorPosition(m_pivot); m_hasChanged = true; OnContainerChanged(); } }
|
||||
}
|
||||
[SerializeField]
|
||||
private Vector2 m_pivot;
|
||||
|
||||
|
||||
public TextContainerAnchors anchorPosition
|
||||
{
|
||||
get { return m_anchorPosition; }
|
||||
set { /*Debug.Log("Anchor has changed.");*/ if (m_anchorPosition != value) { m_anchorPosition = value; m_pivot = GetPivot(m_anchorPosition); m_hasChanged = true; OnContainerChanged(); } }
|
||||
}
|
||||
[SerializeField]
|
||||
private TextContainerAnchors m_anchorPosition = TextContainerAnchors.Middle;
|
||||
|
||||
|
||||
// Rect which defines the Rectangle
|
||||
public Rect rect
|
||||
{
|
||||
get { return m_rect; }
|
||||
set { /*Debug.Log("Rectangle has changed.");*/ if (m_rect != value) { m_rect = value; /*m_size = new Vector2(m_rect.width, m_rect.height);*/ m_hasChanged = true; OnContainerChanged(); } }
|
||||
}
|
||||
[SerializeField]
|
||||
private Rect m_rect;
|
||||
|
||||
|
||||
public Vector2 size
|
||||
{
|
||||
get { return new Vector2(m_rect.width, m_rect.height); }
|
||||
set { /*Debug.Log("Size has changed.");*/ if (new Vector2(m_rect.width, m_rect.height) != value) { SetRect(value); m_hasChanged = true; m_isDefaultWidth = false; m_isDefaultHeight = false; OnContainerChanged(); } }
|
||||
}
|
||||
|
||||
|
||||
// Sets the width of the Text Container.
|
||||
public float width
|
||||
{
|
||||
get { return m_rect.width; }
|
||||
set { /*Debug.Log("Width has changed.");*/ SetRect(new Vector2(value, m_rect.height)); m_hasChanged = true; m_isDefaultWidth = false; OnContainerChanged(); }
|
||||
}
|
||||
|
||||
|
||||
// Sets the height of the Text Container.
|
||||
public float height
|
||||
{
|
||||
get { return m_rect.height; }
|
||||
set { SetRect(new Vector2(m_rect.width, value)); m_hasChanged = true; m_isDefaultHeight = false; OnContainerChanged(); }
|
||||
}
|
||||
|
||||
|
||||
// Used to determine if the user has changed the width of the Text Container.
|
||||
public bool isDefaultWidth
|
||||
{
|
||||
get { return m_isDefaultWidth; }
|
||||
}
|
||||
private bool m_isDefaultWidth;
|
||||
|
||||
// Used to determine if the user has changed the height of the Text Container.
|
||||
public bool isDefaultHeight
|
||||
{
|
||||
get { return m_isDefaultHeight; }
|
||||
}
|
||||
private bool m_isDefaultHeight;
|
||||
|
||||
|
||||
public bool isAutoFitting
|
||||
{
|
||||
get { return m_isAutoFitting; }
|
||||
set { m_isAutoFitting = value; }
|
||||
}
|
||||
private bool m_isAutoFitting = false;
|
||||
|
||||
|
||||
// Corners of the Text Container
|
||||
public Vector3[] corners
|
||||
{
|
||||
get { return m_corners; }
|
||||
}
|
||||
private Vector3[] m_corners = new Vector3[4];
|
||||
|
||||
|
||||
public Vector3[] worldCorners
|
||||
{
|
||||
get { return m_worldCorners; }
|
||||
}
|
||||
private Vector3[] m_worldCorners = new Vector3[4];
|
||||
|
||||
|
||||
//public Vector3 normal
|
||||
//{
|
||||
// get { return m_normal; }
|
||||
//}
|
||||
//private Vector3 m_normal;
|
||||
|
||||
|
||||
// The margin offset from the Rectangle Bounds
|
||||
public Vector4 margins
|
||||
{
|
||||
get { return m_margins; }
|
||||
set { if (m_margins != value) { /*Debug.Log("Margins have changed.");*/ m_margins = value; m_hasChanged = true; OnContainerChanged(); } }
|
||||
}
|
||||
[SerializeField]
|
||||
private Vector4 m_margins;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// The RectTransform used by the object
|
||||
/// </summary>
|
||||
public RectTransform rectTransform
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_rectTransform == null) m_rectTransform = GetComponent<RectTransform>();
|
||||
|
||||
return m_rectTransform;
|
||||
}
|
||||
}
|
||||
private RectTransform m_rectTransform;
|
||||
|
||||
|
||||
//private Transform m_transform;
|
||||
//private bool m_isAddingRectTransform;
|
||||
private static Vector2 k_defaultSize = new Vector2(100, 100);
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public TextMeshPro textMeshPro
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_textMeshPro == null) m_textMeshPro = GetComponent<TextMeshPro>();
|
||||
return m_textMeshPro;
|
||||
}
|
||||
}
|
||||
private TextMeshPro m_textMeshPro;
|
||||
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
Debug.LogWarning("The Text Container component is now Obsolete and can safely be removed from [" + gameObject.name + "].", this);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected override void OnEnable()
|
||||
{
|
||||
//Debug.Log("Text Container OnEnable() called.");
|
||||
|
||||
OnContainerChanged();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected override void OnDisable()
|
||||
{
|
||||
//Debug.Log("OnDisable() called.");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
void OnContainerChanged()
|
||||
{
|
||||
//Debug.Log("OnContainerChanged");
|
||||
|
||||
UpdateCorners();
|
||||
//UpdateWorldCorners();
|
||||
|
||||
if (this.m_rectTransform != null)
|
||||
{
|
||||
m_rectTransform.sizeDelta = this.size;
|
||||
m_rectTransform.hasChanged = true;
|
||||
}
|
||||
|
||||
if (this.textMeshPro != null)
|
||||
{
|
||||
m_textMeshPro.SetVerticesDirty();
|
||||
m_textMeshPro.margin = m_margins;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#if UNITY_EDITOR
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected override void OnValidate()
|
||||
{
|
||||
//Debug.Log("OnValidate() called.");
|
||||
m_hasChanged = true;
|
||||
OnContainerChanged();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
void LateUpdate()
|
||||
{
|
||||
// Used by the Run Time Text Input Component ... This will have to be changed.
|
||||
if (m_transform.hasChanged)
|
||||
UpdateWorldCorners();
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Callback from Unity to handle RectTransform changes.
|
||||
/// </summary>
|
||||
protected override void OnRectTransformDimensionsChange()
|
||||
{
|
||||
// Required to add a RectTransform to objects created in previous releases.
|
||||
if (this.rectTransform == null) m_rectTransform = gameObject.AddComponent<RectTransform>();
|
||||
|
||||
if (m_rectTransform.sizeDelta != k_defaultSize)
|
||||
this.size = m_rectTransform.sizeDelta;
|
||||
|
||||
pivot = m_rectTransform.pivot;
|
||||
|
||||
m_hasChanged = true;
|
||||
OnContainerChanged();
|
||||
}
|
||||
|
||||
|
||||
private void SetRect(Vector2 size)
|
||||
{
|
||||
m_rect = new Rect(m_rect.x, m_rect.y, size.x, size.y);
|
||||
//UpdateCorners();
|
||||
}
|
||||
|
||||
private void UpdateCorners()
|
||||
{
|
||||
m_corners[0] = new Vector3(-m_pivot.x * m_rect.width, (- m_pivot.y) * m_rect.height);
|
||||
m_corners[1] = new Vector3(-m_pivot.x * m_rect.width, (1 - m_pivot.y) * m_rect.height);
|
||||
m_corners[2] = new Vector3((1 - m_pivot.x) * m_rect.width, (1 - m_pivot.y) * m_rect.height);
|
||||
m_corners[3] = new Vector3((1 - m_pivot.x) * m_rect.width, (- m_pivot.y) * m_rect.height);
|
||||
//Debug.Log("Pivot " + m_pivot + " Corners 0: " + m_corners[0] + " 1: " + m_corners[1] + " 2: " + m_corners[2] + " 3: " + m_corners[3]);
|
||||
|
||||
if (m_rectTransform != null)
|
||||
m_rectTransform.pivot = m_pivot;
|
||||
}
|
||||
|
||||
|
||||
//private void UpdateWorldCorners()
|
||||
//{
|
||||
// if (m_transform == null)
|
||||
// return;
|
||||
|
||||
// Vector3 position = m_transform.position;
|
||||
// m_worldCorners[0] = position + m_transform.TransformDirection(m_corners[0]);
|
||||
// m_worldCorners[1] = position + m_transform.TransformDirection(m_corners[1]);
|
||||
// m_worldCorners[2] = position + m_transform.TransformDirection(m_corners[2]);
|
||||
// m_worldCorners[3] = position + m_transform.TransformDirection(m_corners[3]);
|
||||
|
||||
// m_normal = Vector3.Cross(worldCorners[1] - worldCorners[0], worldCorners[3] - worldCorners[0]);
|
||||
//}
|
||||
|
||||
|
||||
//public Vector3[] GetWorldCorners()
|
||||
//{
|
||||
// UpdateWorldCorners();
|
||||
|
||||
// return m_worldCorners;
|
||||
//}
|
||||
|
||||
|
||||
Vector2 GetPivot(TextContainerAnchors anchor)
|
||||
{
|
||||
Vector2 pivot = Vector2.zero;
|
||||
|
||||
switch (anchor)
|
||||
{
|
||||
case TextContainerAnchors.TopLeft:
|
||||
pivot = new Vector2(0, 1);
|
||||
break;
|
||||
case TextContainerAnchors.Top:
|
||||
pivot = new Vector2(0.5f, 1);
|
||||
break;
|
||||
case TextContainerAnchors.TopRight:
|
||||
pivot = new Vector2(1, 1);
|
||||
break;
|
||||
case TextContainerAnchors.Left:
|
||||
pivot = new Vector2(0, 0.5f);
|
||||
break;
|
||||
case TextContainerAnchors.Middle:
|
||||
pivot = new Vector2(0.5f, 0.5f);
|
||||
break;
|
||||
case TextContainerAnchors.Right:
|
||||
pivot = new Vector2(1, 0.5f);
|
||||
break;
|
||||
case TextContainerAnchors.BottomLeft:
|
||||
pivot = new Vector2(0, 0);
|
||||
break;
|
||||
case TextContainerAnchors.Bottom:
|
||||
pivot = new Vector2(0.5f, 0);
|
||||
break;
|
||||
case TextContainerAnchors.BottomRight:
|
||||
pivot = new Vector2(1, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
return pivot;
|
||||
}
|
||||
|
||||
|
||||
// Method which returns the Anchor position based on pivot value.
|
||||
TextContainerAnchors GetAnchorPosition(Vector2 pivot)
|
||||
{
|
||||
|
||||
if (pivot == new Vector2(0, 1))
|
||||
return TextContainerAnchors.TopLeft;
|
||||
else if (pivot == new Vector2(0.5f, 1))
|
||||
return TextContainerAnchors.Top;
|
||||
else if (pivot == new Vector2(1f, 1))
|
||||
return TextContainerAnchors.TopRight;
|
||||
else if (pivot == new Vector2(0, 0.5f))
|
||||
return TextContainerAnchors.Left;
|
||||
else if (pivot == new Vector2(0.5f, 0.5f))
|
||||
return TextContainerAnchors.Middle;
|
||||
else if (pivot == new Vector2(1, 0.5f))
|
||||
return TextContainerAnchors.Right;
|
||||
else if (pivot == new Vector2(0, 0))
|
||||
return TextContainerAnchors.BottomLeft;
|
||||
else if (pivot == new Vector2(0.5f, 0))
|
||||
return TextContainerAnchors.Bottom;
|
||||
else if (pivot == new Vector2(1, 0))
|
||||
return TextContainerAnchors.BottomRight;
|
||||
else
|
||||
return TextContainerAnchors.Custom;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue