< Summary

Class:AvatarAnchorPoints
Assembly:AvatarAnchorPoints
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/Avatar/AvatarAnchorPoints/Implementation/AvatarAnchorPoints.cs
Covered lines:8
Uncovered lines:14
Coverable lines:22
Total lines:65
Line coverage:36.3% (8 of 22)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
AvatarAnchorPoints()0%110100%
AvatarAnchorPoints()0%110100%
Prepare(...)0%4.774063.64%
GetTransform(...)0%56700%
TryGetIdFromBoneName(...)0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/Avatar/AvatarAnchorPoints/Implementation/AvatarAnchorPoints.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Linq;
 3using UnityEngine;
 4
 5public class AvatarAnchorPoints : IAvatarAnchorPoints
 6{
 17    private static readonly Dictionary<AvatarAnchorPointIds, string> boneMapping = new Dictionary<AvatarAnchorPointIds, 
 8    {
 9        { AvatarAnchorPointIds.LeftHand, "Avatar_LeftHand" },
 10        { AvatarAnchorPointIds.RightHand, "Avatar_RightHand" },
 11    };
 12
 33913    private readonly Dictionary<AvatarAnchorPointIds, Transform> boneTransformMapping = new Dictionary<AvatarAnchorPoint
 14
 15    private Transform avatarTransform;
 16    private float nameTagY;
 17
 18    void IAvatarAnchorPoints.Prepare(Transform avatarTransform, Transform[] bones, float nameTagY)
 19    {
 520        this.avatarTransform = avatarTransform;
 521        this.nameTagY = nameTagY;
 22
 523        boneTransformMapping.Clear();
 24
 525        if(bones == null)
 026            return;
 27
 1028        foreach (var bone in bones)
 29        {
 030            if (TryGetIdFromBoneName(bone.name, out AvatarAnchorPointIds anchorPointId))
 31            {
 032                boneTransformMapping.Add(anchorPointId, bone);
 33            }
 34        }
 535    }
 36
 37    (Vector3 position, Quaternion rotation, Vector3 scale) IAvatarAnchorPoints.GetTransform(AvatarAnchorPointIds anchorP
 38    {
 039        if (anchorPointId == AvatarAnchorPointIds.Position && avatarTransform != null)
 40        {
 041            return (avatarTransform.position, avatarTransform.rotation, Vector3.one);
 42        }
 43
 044        if (anchorPointId == AvatarAnchorPointIds.NameTag && avatarTransform != null)
 45        {
 046            return (avatarTransform.position + Vector3.up * nameTagY, avatarTransform.rotation, Vector3.one);
 47        }
 48
 049        if (boneTransformMapping.TryGetValue(anchorPointId, out Transform bone))
 50        {
 051            if (bone != null)
 52            {
 053                return (bone.position, bone.rotation, bone.lossyScale);
 54            }
 55        }
 056        return (Vector3.zero, Quaternion.identity, Vector3.one);
 57    }
 58
 59    private static bool TryGetIdFromBoneName(string boneName, out AvatarAnchorPointIds id)
 60    {
 061        var result = boneMapping.FirstOrDefault(pair => pair.Value == boneName);
 062        id = result.Key;
 063        return !string.IsNullOrEmpty(result.Value);
 64    }
 65}