< Summary

Class:BIWGizmos
Assembly:BuilderInWorld
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/Scripts/Gizmos/BIWGizmos.cs
Covered lines:25
Uncovered lines:44
Coverable lines:69
Total lines:149
Line coverage:36.2% (25 of 69)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
BIWGizmos()0%110100%
Initialize(...)0%110100%
GetActiveAxisVector()0%20400%
ForceRelativeScaleRatio()0%110100%
GetGizmoType()0%110100%
SetTargetTransform(...)0%110100%
OnBeginDrag(...)0%2100%
OnDrag(...)0%20400%
OnEndDrag()0%6200%
RaycastHit(...)0%2100%
GetHitPointToAxisValue(...)0%12300%
SetPreviousAxisValue(...)0%2100%
SetPositionToTarget()0%3.333066.67%
Update()0%6200%
GetCameraPlaneDistance(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/Scripts/Gizmos/BIWGizmos.cs

#LineLine coverage
 1using DCL;
 2using DCL.Builder;
 3using DCL.Configuration;
 4using UnityEngine;
 5
 6public abstract class BIWGizmos : MonoBehaviour, IBIWGizmos
 7{
 998    [SerializeField] private string gizmoType = string.Empty;
 9    [SerializeField] protected BIWGizmosAxis axisX;
 10    [SerializeField] protected BIWGizmosAxis axisY;
 11    [SerializeField] protected BIWGizmosAxis axisZ;
 12
 9613    public bool initialized => initializedValue;
 18114    public GameObject currentGameObject { get; private set; }
 19215    public bool initializedValue { get; private set; }
 16
 17    protected float snapFactor = 0;
 18
 9919    protected bool worldOrientedGizmos = true;
 20    private Transform targetTransform = null;
 21
 22    protected Camera builderCamera;
 23    protected Transform cameraHolderTransform;
 24
 25    private Vector3 relativeScaleRatio;
 26    protected bool startDragging = false;
 27    internal float previousAxisValue;
 28
 029    public IBIWGizmosAxis activeAxis { internal set; get; }
 30
 31    public abstract void SetSnapFactor(SnapInfo snapInfo);
 32    public abstract float TransformEntity(Transform targetTransform, IBIWGizmosAxis axis, float axisValue);
 33
 34    public virtual void Initialize(Camera camera, Transform cameraHolderTransform)
 35    {
 9636        this.currentGameObject = gameObject;
 9637        initializedValue = true;
 9638        relativeScaleRatio = transform.localScale / GetCameraPlaneDistance(cameraHolderTransform, transform.position);
 9639        builderCamera = camera;
 9640        this.cameraHolderTransform = cameraHolderTransform;
 9641        axisX.SetGizmo(this);
 9642        axisY.SetGizmo(this);
 9643        axisZ.SetGizmo(this);
 9644    }
 45
 46    public Vector3 GetActiveAxisVector()
 47    {
 048        if (activeAxis == axisX)
 049            return Vector3.right;
 050        if (activeAxis == axisY)
 051            return  Vector3.up;
 052        if (activeAxis == axisZ)
 053            return  Vector3.back;
 54
 055        return Vector3.zero;
 56    }
 57
 19258    public void ForceRelativeScaleRatio() { relativeScaleRatio = new Vector3(BIWSettings.GIZMOS_RELATIVE_SCALE_RATIO, BI
 59
 6560    public string GetGizmoType() { return gizmoType; }
 61
 62    public virtual void SetTargetTransform(Transform entityTransform)
 63    {
 164        targetTransform = entityTransform;
 165        SetPositionToTarget();
 166    }
 67
 68    public virtual void OnBeginDrag(IBIWGizmosAxis axis, Transform entityTransform)
 69    {
 070        startDragging = true;
 071        targetTransform = entityTransform;
 072        activeAxis = axis;
 073        axis.SetColorHighlight();
 074    }
 75
 76    public float OnDrag(Vector3 hitPoint, Vector2 mousePosition)
 77    {
 078        float axisValue = GetHitPointToAxisValue(activeAxis, hitPoint, mousePosition);
 79
 080        if (startDragging)
 81        {
 082            startDragging = false;
 083            previousAxisValue = axisValue;
 84        }
 85
 086        float transformValue = axisValue - previousAxisValue;
 087        if (Mathf.Abs(transformValue) >= snapFactor)
 88        {
 089            if (snapFactor > 0)
 90            {
 091                float sign = Mathf.Sign(transformValue);
 092                transformValue = transformValue + (Mathf.Abs(transformValue) % snapFactor) * -sign;
 93            }
 94
 095            SetPreviousAxisValue(axisValue, transformValue);
 096            return TransformEntity(targetTransform, activeAxis, transformValue);
 97        }
 098        return 0;
 99    }
 100
 101    public void OnEndDrag()
 102    {
 0103        Environment.i.platform.physicsSyncController.MarkDirty();
 0104        activeAxis?.SetColorDefault();
 0105    }
 106
 107    public virtual bool RaycastHit(Ray ray, out Vector3 hitPoint)
 108    {
 0109        Vector3 hitPos = ray.GetPoint(Vector3.Distance(ray.origin, activeAxis.axisTransform.position));
 0110        Vector3 hitOffset = (hitPos - activeAxis.axisTransform.position);
 0111        hitPoint = activeAxis.axisTransform.position + Vector3.Project(hitOffset, activeAxis.axisTransform.forward);
 0112        return true;
 113    }
 114
 115    internal virtual float GetHitPointToAxisValue(IBIWGizmosAxis axis, Vector3 hitPoint, Vector2 mousePosition)
 116    {
 0117        Vector3 dir = (hitPoint - axis.axisTransform.position).normalized;
 0118        float sign = Vector3.Angle(dir, axis.axisTransform.forward) == 180 ? -1 : 1;
 0119        return Vector3.Distance(activeAxis.axisTransform.position, hitPoint) * sign;
 120    }
 121
 0122    internal virtual void SetPreviousAxisValue(float axisValue, float transformValue) { previousAxisValue = axisValue - 
 123
 124    private void SetPositionToTarget()
 125    {
 1126        if (!targetTransform)
 0127            return;
 128
 1129        transform.position = targetTransform.position;
 1130        if (!worldOrientedGizmos)
 0131            transform.rotation = targetTransform.rotation;
 1132    }
 133
 134    private void Update()
 135    {
 0136        SetPositionToTarget();
 0137        if (!builderCamera)
 0138            return;
 139
 0140        float dist = GetCameraPlaneDistance(cameraHolderTransform, transform.position);
 0141        transform.localScale = relativeScaleRatio * dist;
 0142    }
 143
 144    private static float GetCameraPlaneDistance(Transform cameraTransform, Vector3 objectPosition)
 145    {
 96146        Plane plane = new Plane(cameraTransform.forward, cameraTransform.position);
 96147        return plane.GetDistanceToPoint(objectPosition);
 148    }
 149}