stuff less important than the shader

This commit is contained in:
klemek
2020-12-11 00:06:47 +01:00
parent 3e9752dcad
commit cd354b5133
41 changed files with 1618 additions and 437 deletions
+108 -90
View File
@@ -1,104 +1,122 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class Cable : MonoBehaviour
namespace UntitledLogicGame
{
#region Unity Properties
#endregion
#region Public Properties
public Anchor StartAnchor
public class Cable : MonoBehaviour
{
get => _startAnchor;
set
{
_startAnchor = value;
}
}
public Anchor EndAnchor
{
get => _endAnchor;
set
{
if (!value.IsInput)
{
_endAnchor = StartAnchor;
StartAnchor = value;
}
else
{
_endAnchor = value;
}
#region Unity Properties
if (StartAnchor.HasInputAnchor(EndAnchor))
#endregion
#region Public Properties
public Anchor StartAnchor
{
get => _startAnchor;
set
{
// Loop detected
Destroy(gameObject);
}
else
{
StartAnchor.Cables.Add(this);
EndAnchor.Cables = new List<Cable> { this };
_startAnchor = value;
if (value.IsInput)
{
if (value.Cables.Count > 0)
Destroy(value.Cables.First().gameObject);
}
}
}
}
public bool Activated => StartAnchor != null && !StartAnchor.IsInput && StartAnchor.Activated;
#endregion
#region Private Properties
private Anchor _startAnchor;
private Anchor _endAnchor;
private LineRenderer _line;
private bool? _lastActivated;
#endregion
#region Unity Methods
// Start is called before the first frame update
private void Start()
{
_line = GetComponent<LineRenderer>();
Utils.RandomName("Cable", gameObject);
}
// Update is called once per frame
private void Update()
{
if (_lastActivated == null || _lastActivated != Activated)
public Anchor EndAnchor
{
_line.startColor = Activated ? GameManager.Instance.ActivatedColor : GameManager.Instance.DeadColor;
_line.endColor = Activated ? GameManager.Instance.ActivatedColor : GameManager.Instance.DeadColor;
get => _endAnchor;
set
{
if (!value.IsInput)
{
_endAnchor = StartAnchor;
StartAnchor = value;
}
else
{
_endAnchor = value;
}
if (StartAnchor.HasInputAnchor(EndAnchor))
{
// Loop detected
Destroy(gameObject);
}
else
{
StartAnchor.Cables.Add(this);
if (EndAnchor.Cables.Count > 0)
Destroy(EndAnchor.Cables.First().gameObject);
EndAnchor.Cables = new List<Cable> { this };
}
}
}
public bool Activated => StartAnchor != null && !StartAnchor.IsInput && StartAnchor.Activated;
#endregion
#region Private Properties
private Anchor _startAnchor;
private Anchor _endAnchor;
private LineRenderer _line;
private bool? _lastActivated;
#endregion
#region Unity Methods
// Start is called before the first frame update
private void Start()
{
_line = GetComponent<LineRenderer>();
Utils.RandomName("Cable", gameObject);
}
var mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
mousePos.z = 0f;
var startPos = StartAnchor == null ? mousePos : StartAnchor.transform.position;
var endPos = EndAnchor == null ? mousePos : EndAnchor.transform.position;
_line.positionCount = 2;
_line.SetPosition(0, startPos);
_line.SetPosition(1, endPos);
// Update is called once per frame
private void Update()
{
if (_lastActivated == null || _lastActivated != Activated)
{
_line.startColor = Activated ? GameManager.Instance.ActivatedColor : GameManager.Instance.DeadColor;
_line.endColor = Activated ? GameManager.Instance.ActivatedColor : GameManager.Instance.DeadColor;
_lastActivated = Activated;
}
var startPos = StartAnchor == null ? MouseManager.MousePos : StartAnchor.transform.position;
var endPos = EndAnchor == null ? MouseManager.MousePos : EndAnchor.transform.position;
_line.positionCount = 2;
_line.SetPosition(0, startPos);
_line.SetPosition(1, endPos);
}
private void OnDestroy()
{
if(StartAnchor != null)
StartAnchor.Cables.Remove(this);
if (EndAnchor != null)
EndAnchor.Cables.Remove(this);
}
#endregion
#region Public Methods
public bool HasInputAnchor(Anchor target)
{
return StartAnchor.HasInputAnchor(target);
}
#endregion
#region Private Methods
#endregion
}
#endregion
#region Public Methods
public bool HasInputAnchor(Anchor target)
{
return StartAnchor.HasInputAnchor(target);
}
#endregion
#region Private Methods
#endregion
}
}