Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- namespace GameOver.HouseEditor
- {
- public class LineSelector : MonoBehaviour
- {
- public enum EDirection
- {
- Back,
- Forward,
- Left,
- Right,
- Up,
- Down
- }
- private static Material _lineMaterial;
- [SerializeField]
- private EDirection _direction;
- [SerializeField]
- private Color _color = Color.white;
- //[SerializeField]
- private float _lenght = 100f;
- private ArrowSelector _arrowSelector;
- private Vector3 _vectorDirection;
- private Transform _arrow;
- public float Length
- {
- get { return _lenght; }
- set {
- _lenght = value;
- SetDirection(_direction);
- }
- }
- public EDirection Direction
- {
- get { return _direction; }
- set { SetDirection(value); }
- }
- private void Awake()
- {
- _arrow = GetComponentsInChildren<Transform>()[1];
- SetDirection(_direction);
- }
- private void SetDirection(EDirection direction)
- {
- _direction = direction;
- switch (_direction)
- {
- case EDirection.Forward:
- _vectorDirection = Vector3.forward;
- break;
- case EDirection.Back:
- _vectorDirection = Vector3.back;
- break;
- case EDirection.Left:
- _vectorDirection = Vector3.left;
- break;
- case EDirection.Right:
- _vectorDirection = Vector3.right;
- break;
- case EDirection.Up:
- _vectorDirection = Vector3.up;
- break;
- case EDirection.Down:
- _vectorDirection = Vector3.down;
- break;
- }
- _arrow.transform.localPosition = _vectorDirection * _lenght;
- }
- private static void CreateLineMaterial()
- {
- if (!_lineMaterial)
- {
- Shader shader = Shader.Find("Hidden/Internal-Colored");
- _lineMaterial = new Material(shader);
- _lineMaterial.hideFlags = HideFlags.HideAndDontSave;
- _lineMaterial.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
- _lineMaterial.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
- _lineMaterial.SetInt("_Cull", (int)UnityEngine.Rendering.CullMode.Off);
- _lineMaterial.SetInt("_ZWrite", 0);
- }
- }
- public void OnRenderObject()
- {
- CreateLineMaterial();
- _lineMaterial.SetPass(0);
- GL.PushMatrix();
- GL.MultMatrix(transform.localToWorldMatrix);
- GL.Begin(GL.LINES);
- GL.Color(_color);
- GL.Vertex3(0, 0, 0);
- GL.Vertex(_vectorDirection * _lenght);
- GL.End();
- GL.PopMatrix();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement