Skip to content

Commit

Permalink
perf: Improve testproject DrawRay.cs performance (Unity-Technologies#…
Browse files Browse the repository at this point in the history
…2166)

Achieves a more GC friendly DrawRay debug code through caching the gameobject transform, reducing the engine calls to getTransform

Co-authored-by: Gustavo Santos <gustappsantos@gmail.com>
  • Loading branch information
Jesse Olmer and gustavopsantos authored Aug 30, 2022
1 parent 6a46c38 commit 91ee96d
Showing 1 changed file with 12 additions and 9 deletions.
21 changes: 12 additions & 9 deletions testproject/Assets/Scripts/DrawRay.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,26 @@
[RequireComponent(typeof(LineRenderer))]
public class DrawRay : MonoBehaviour
{
private const float k_RayLength = 10;

private Transform m_Transform;
private LineRenderer m_LineRenderer;

private void Awake()
{
m_LineRenderer = GetComponent<LineRenderer>();
TryGetComponent(out m_Transform);
TryGetComponent(out m_LineRenderer);
m_LineRenderer.SetPosition(0, transform.position);
}

private void FixedUpdate()
{
if (Physics.Raycast(new Ray(transform.position, transform.forward * 10), out RaycastHit hit, 10, Physics.DefaultRaycastLayers))
{
m_LineRenderer.SetPosition(1, hit.point);
}
else
{
m_LineRenderer.SetPosition(1, transform.position + transform.forward * 10);
}
var ray = new Ray(m_Transform.position, m_Transform.forward * k_RayLength);

var point = Physics.Raycast(ray, out var hit, k_RayLength, Physics.DefaultRaycastLayers)
? hit.point
: m_Transform.position + m_Transform.forward * k_RayLength;

m_LineRenderer.SetPosition(1, point);
}
}

0 comments on commit 91ee96d

Please sign in to comment.