protected override IEnumerator SetUp()
    {
        yield return(base.SetUp());

        var entity = TestHelpers.CreateSceneEntity(scene);

        AvatarModifierArea.Model model = new AvatarModifierArea.Model
        {
            area = new BoxTriggerArea {
                box = new Vector3(10, 10, 10)
            },
        };
        avatarModifierArea = TestHelpers.EntityComponentCreate <AvatarModifierArea, AvatarModifierArea.Model>(scene, entity, model, CLASS_ID_COMPONENT.AVATAR_MODIFIER_AREA);
        yield return(avatarModifierArea.routine);

        model.modifiers    = new[] { MOCK_MODIFIER_KEY };
        mockAvatarModifier = Substitute.For <AvatarModifier>();
        avatarModifierArea.modifiers.Add(MOCK_MODIFIER_KEY, mockAvatarModifier);

        //now that the modifier has been added we trigger the Update again so it gets taken into account
        yield return(TestHelpers.EntityComponentUpdate(avatarModifierArea, model));
    }
Example #2
0
    public override IEnumerator ApplyChanges(string newJson)
    {
        // Clean up
        RemoveAllModifiers();
        OnAvatarEnter = null;
        OnAvatarExit  = null;

        // Update
        model = SceneController.i.SafeFromJson <Model>(newJson);
        if (model.modifiers != null)
        {
            // Add all listeners
            foreach (string modifierKey in model.modifiers)
            {
                AvatarModifier modifier = this.modifiers[modifierKey];
                OnAvatarEnter += modifier.ApplyModifier;
                OnAvatarExit  += modifier.RemoveModifier;
            }
        }

        yield break;
    }