< Summary

Class:DCL.ECSComponents.AvatarModifierAreaComponentHandler
Assembly:DCL.ECSComponents.AvatarModifierArea
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/ECSComponents/AvatarModifierArea/Handler/AvatarModifierAreaComponentHandler.cs
Covered lines:22
Uncovered lines:3
Coverable lines:25
Total lines:66
Line coverage:88% (22 of 25)
Covered branches:0
Total branches:0
Covered methods:3
Total methods:4
Method coverage:75% (3 of 4)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
AvatarModifierAreaComponentHandler(...)0%110100%
OnComponentCreated(...)0%2100%
OnComponentRemoved(...)0%110100%
OnComponentModelUpdated(...)0%11.0911090.91%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/ECSComponents/AvatarModifierArea/Handler/AvatarModifierAreaComponentHandler.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using DCL.Controllers;
 3using DCL.ECS7.InternalComponents;
 4using DCL.ECSRuntime;
 5using DCL.Models;
 6using UnityEngine;
 7
 8namespace DCL.ECSComponents
 9{
 10    public class AvatarModifierAreaComponentHandler : IECSComponentHandler<PBAvatarModifierArea>
 11    {
 12        private readonly AvatarModifierFactory factory;
 13        private readonly IInternalECSComponent<InternalAvatarModifierArea> internalAvatarModifierArea;
 14
 415        public AvatarModifierAreaComponentHandler(
 16            IInternalECSComponent<InternalAvatarModifierArea> internalAvatarModifierArea,
 17            AvatarModifierFactory factory)
 18        {
 419            this.factory = factory;
 420            this.internalAvatarModifierArea = internalAvatarModifierArea;
 421        }
 22
 023        public void OnComponentCreated(IParcelScene scene, IDCLEntity entity) { }
 24
 25        public void OnComponentRemoved(IParcelScene scene, IDCLEntity entity)
 26        {
 427            internalAvatarModifierArea.RemoveFor(scene, entity, new InternalAvatarModifierArea()
 28            {
 29                removed = true
 30            });
 431        }
 32
 33        public void OnComponentModelUpdated(IParcelScene scene, IDCLEntity entity, PBAvatarModifierArea model)
 34        {
 435            if (model.Modifiers.Count == 0)
 036                return;
 37
 438            var internalComponentModel = internalAvatarModifierArea.GetFor(scene, entity)?.model ?? new InternalAvatarMo
 39
 440            internalComponentModel.area = ProtoConvertUtils.PBVectorToUnityVector(model.Area);
 41
 442            internalComponentModel.OnAvatarEnter = null;
 443            internalComponentModel.OnAvatarExit = null;
 1644            foreach (AvatarModifierType modifierKey in model.Modifiers)
 45            {
 446                var modifier = factory.GetOrCreateAvatarModifier(modifierKey);
 47
 448                internalComponentModel.OnAvatarEnter += modifier.ApplyModifier;
 449                internalComponentModel.OnAvatarExit += modifier.RemoveModifier;
 50            }
 51
 452            HashSet<string> excludedIds = new HashSet<string>();
 1253            foreach (string modelExcludeId in model.ExcludeIds)
 54            {
 55                // player ids are stored in lowercase in the datastore
 256                excludedIds.Add(modelExcludeId.ToLower());
 57            }
 458            internalComponentModel.excludedIds = excludedIds;
 59
 460            if (internalComponentModel.avatarsInArea?.Count == 0)
 061                internalComponentModel.avatarsInArea = new HashSet<GameObject>();
 62
 463            internalAvatarModifierArea.PutFor(scene, entity, internalComponentModel);
 464        }
 65    }
 66}