예제 #1
0
        public IEnumerator SetTheCorrectMaterialWhenLoadingMultipleTimes()
        {
            avatarModel = AvatarShapeTestHelpers.GetTestAvatarModel("test", "TestAvatar.json");
            avatarShape.avatarRenderer.ApplyModel(avatarModel, null, null);
            avatarShape.avatarRenderer.ApplyModel(avatarModel, null, null);
            avatarShape.avatarRenderer.ApplyModel(avatarModel, null, null);

            bool lastUpdateIsDone = false;

            avatarShape.avatarRenderer.ApplyModel(avatarModel, () => lastUpdateIsDone = true, null);

            yield return(new DCL.WaitUntil(() => lastUpdateIsDone));

            var             wearableControllers = AvatarRenderer_Mock.GetWearableMockControllers(avatarShape.avatarRenderer);
            List <Material> materials           = new List <Material>();

            foreach (var wearableControllerMock in wearableControllers.Values)
            {
                if (wearableControllerMock.category == WearableLiterals.Categories.EYES || wearableControllerMock.category == WearableLiterals.Categories.EYEBROWS || wearableControllerMock.category == WearableLiterals.Categories.MOUTH)
                {
                    continue;
                }

                materials.AddRange(wearableControllerMock.myAssetContainer.GetComponentsInChildren <Renderer>().SelectMany(x => x.materials).ToList());
            }

            Assert.IsTrue(materials.All(x => x.shader.name == "DCL/Toon Shader"));
        }
예제 #2
0
        public IEnumerator BeVisibleByDefault()
        {
            avatarModel.wearables = new List <string>()
            {
                SUNGLASSES_ID
            };

            yield return(avatarShape.ApplyChanges(JsonUtility.ToJson(avatarModel)));

            var sunglassesController = new WearableController_Mock(AvatarRenderer_Mock.GetWearableControllers(avatarShape.avatarRenderer)[SUNGLASSES_ID]);

            Assert.IsTrue(sunglassesController.myAssetRenderers.All(x => x.enabled));
        }
예제 #3
0
        public IEnumerator BeVisibleByDefault()
        {
            avatarModel.wearables = new List <string>()
            {
                SUNGLASSES_ID
            };

            avatarShape.UpdateFromModel(avatarModel);
            yield return(avatarShape.routine);

            var sunglassesController = new WearableController_Mock(AvatarRenderer_Mock.GetWearableControllers(avatarShape.avatarRenderer)[SUNGLASSES_ID]);

            Assert.IsTrue(sunglassesController.myAssetRenderers.All(x => x.enabled));
        }
예제 #4
0
        public IEnumerator NotBeHiddenByWrongGeneralHides()
        {
            var bandana = catalog.Get(BLUE_BANDANA_ID);

            bandana.hides         = new[] { "NonExistentCategory" };
            avatarModel.wearables = new List <string>()
            {
                SUNGLASSES_ID, BLUE_BANDANA_ID
            };
            yield return(avatarShape.ApplyChanges(JsonUtility.ToJson(avatarModel)));

            var sunglassesController = new WearableController_Mock(AvatarRenderer_Mock.GetWearableControllers(avatarShape.avatarRenderer)[SUNGLASSES_ID]);
            var bandanaController    = new WearableController_Mock(AvatarRenderer_Mock.GetWearableControllers(avatarShape.avatarRenderer)[BLUE_BANDANA_ID]);

            Assert.IsTrue(sunglassesController.myAssetRenderers.All(x => x.enabled));
            Assert.IsTrue(bandanaController.myAssetRenderers.All(x => x.enabled));
        }
예제 #5
0
        public IEnumerator HideBodyShapeProperly()
        {
            catalog.Get(SUNGLASSES_ID).hides = new[] { WearableLiterals.Misc.HEAD };
            avatarModel.wearables            = new List <string>()
            {
                SUNGLASSES_ID, BLUE_BANDANA_ID
            };
            yield return(avatarShape.ApplyChanges(JsonUtility.ToJson(avatarModel)));

            var bodyShapeAssetContainer = AvatarRenderer_Mock.GetBodyShapeController(avatarShape.avatarRenderer)?.myAssetContainer;

            Assert.IsNotNull(bodyShapeAssetContainer);

            var renderers = bodyShapeAssetContainer.GetComponentsInChildren <Renderer>();

            Assert.IsTrue(renderers.All(x => !x.enabled));
        }
예제 #6
0
        public IEnumerator BeRetrievedWithoutPoolableObject()
        {
            avatarModel.wearables = new List <string>()
            {
                SUNGLASSES_ID, BLUE_BANDANA_ID
            };
            yield return(avatarShape.ApplyChanges(JsonUtility.ToJson(avatarModel)));

            var sunglassesAssetContainer = AvatarRenderer_Mock.GetWearableController(avatarShape.avatarRenderer, SUNGLASSES_ID)?.myAssetContainer;
            var bandanaAssetContainer    = AvatarRenderer_Mock.GetWearableController(avatarShape.avatarRenderer, BLUE_BANDANA_ID)?.myAssetContainer;

            var sunglassesPoolableObject = PoolManager.i.GetPoolable(sunglassesAssetContainer);
            var bandanaPoolableObject    = PoolManager.i.GetPoolable(bandanaAssetContainer);

            Assert.IsNull(sunglassesPoolableObject);
            Assert.IsNull(bandanaPoolableObject);
        }
예제 #7
0
        public IEnumerator BeUnequipedProperly()
        {
            avatarModel.wearables = new List <string>()
            {
                SUNGLASSES_ID
            };
            yield return(avatarShape.ApplyChanges(JsonUtility.ToJson(avatarModel)));

            avatarModel.wearables = new List <string>()
            {
            };
            yield return(avatarShape.ApplyChanges(JsonUtility.ToJson(avatarModel)));

            var wearableControllers = AvatarRenderer_Mock.GetWearableControllers(avatarShape.avatarRenderer);

            Assert.IsFalse(wearableControllers.ContainsKey(SUNGLASSES_ID));
        }
예제 #8
0
        public IEnumerator NotBeHiddenByOverrideHides()
        {
            var sunglasses = catalog.Get(SUNGLASSES_ID);
            var bandana    = catalog.Get(BLUE_BANDANA_ID);

            bandana.GetRepresentation(WearableLiterals.BodyShapes.MALE).overrideHides = new[] { sunglasses.category };
            avatarModel.wearables = new List <string>()
            {
                SUNGLASSES_ID, BLUE_BANDANA_ID
            };
            yield return(avatarShape.ApplyChanges(JsonUtility.ToJson(avatarModel)));

            var sunglassesController = new WearableController_Mock(AvatarRenderer_Mock.GetWearableControllers(avatarShape.avatarRenderer)[SUNGLASSES_ID]);
            var bandanaController    = new WearableController_Mock(AvatarRenderer_Mock.GetWearableControllers(avatarShape.avatarRenderer)[BLUE_BANDANA_ID]);

            Assert.IsTrue(sunglassesController.myAssetRenderers.All(x => x.enabled));
            Assert.IsTrue(bandanaController.myAssetRenderers.All(x => x.enabled));
        }
예제 #9
0
        public IEnumerator ProcessVisibilityFalseWhenSetBeforeLoading()
        {
            //Clean hides/replaces to avoid interferences
            CleanWearableHidesAndReplaces(SUNGLASSES_ID);
            CleanWearableHidesAndReplaces(BLUE_BANDANA_ID);

            avatarModel.wearables = new List <string>()
            {
                SUNGLASSES_ID, BLUE_BANDANA_ID
            };
            avatarRenderer.SetVisibility(false);

            bool ready = false;

            avatarRenderer.ApplyModel(avatarModel, () => ready = true, null);
            yield return(new DCL.WaitUntil(() => ready));

            Assert.IsTrue(AvatarRenderer_Mock.GetBodyShapeController(avatarRenderer).myAssetRenderers.All(x => !x.enabled));
        }
예제 #10
0
        public IEnumerator BeHiddenByGeneralHides()
        {
            var sunglasses = catalog.Get(SUNGLASSES_ID);
            var bandana    = catalog.Get(BLUE_BANDANA_ID);

            bandana.hides         = new[] { sunglasses.category };
            avatarModel.wearables = new List <string>()
            {
                SUNGLASSES_ID, BLUE_BANDANA_ID
            };
            avatarShape.UpdateFromModel(avatarModel);
            yield return(avatarShape.routine);

            var sunglassesController = new WearableController_Mock(AvatarRenderer_Mock.GetWearableControllers(avatarShape.avatarRenderer)[SUNGLASSES_ID]);
            var bandanaController    = new WearableController_Mock(AvatarRenderer_Mock.GetWearableControllers(avatarShape.avatarRenderer)[BLUE_BANDANA_ID]);

            Assert.IsTrue(sunglassesController.myAssetRenderers.All(x => !x.enabled));
            Assert.IsTrue(bandanaController.myAssetRenderers.All(x => x.enabled));
        }
예제 #11
0
        public IEnumerator BeUnequipedProperly()
        {
            avatarModel.wearables = new List <string>()
            {
                SUNGLASSES_ID
            };
            avatarShape.UpdateFromModel(avatarModel);
            yield return(avatarShape.routine);

            avatarModel.wearables = new List <string>()
            {
            };
            avatarShape.UpdateFromModel(avatarModel);
            yield return(avatarShape.routine);

            var wearableControllers = AvatarRenderer_Mock.GetWearableControllers(avatarShape.avatarRenderer);

            Assert.IsFalse(wearableControllers.ContainsKey(SUNGLASSES_ID));
        }
예제 #12
0
        public IEnumerator SetTheCorrectMaterial()
        {
            avatarModel = AvatarTestHelpers.GetTestAvatarModel("test", "TestAvatar.json");
            yield return(avatarShape.ApplyChanges(JsonUtility.ToJson(avatarModel)));

            var             wearableControllers = AvatarRenderer_Mock.GetWearableMockControllers(avatarShape.avatarRenderer);
            List <Material> materials           = new List <Material>();

            foreach (var wearableControllerMock in wearableControllers.Values)
            {
                if (wearableControllerMock.category == WearableLiterals.Categories.EYES || wearableControllerMock.category == WearableLiterals.Categories.EYEBROWS || wearableControllerMock.category == WearableLiterals.Categories.MOUTH)
                {
                    continue;
                }

                materials.AddRange(wearableControllerMock.myAssetContainer.GetComponentsInChildren <Renderer>().SelectMany(x => x.materials).ToList());
            }

            Assert.IsTrue(materials.All(x => x.shader.name == "DCL/Toon Shader"));
        }
예제 #13
0
        public IEnumerator ProcessHideListProperly_HeadShowing()
        {
            //Clean hides/replaces to avoid interferences
            CleanWearableHidesAndReplaces(SUNGLASSES_ID);
            CleanWearableHidesAndReplaces(BLUE_BANDANA_ID);

            avatarModel.wearables = new List <string>()
            {
                SUNGLASSES_ID
            };

            bool ready = false;

            avatarRenderer.ApplyModel(avatarModel, () => ready = true, null);
            yield return(new DCL.WaitUntil(() => ready));

            Assert.IsTrue(AvatarRenderer_Mock.GetBodyShapeController(avatarRenderer).headRenderer.enabled);
            Assert.IsTrue(AvatarRenderer_Mock.GetBodyShapeController(avatarRenderer).eyebrowsRenderer.enabled);
            Assert.IsTrue(AvatarRenderer_Mock.GetBodyShapeController(avatarRenderer).eyesRenderer.enabled);
            Assert.IsTrue(AvatarRenderer_Mock.GetBodyShapeController(avatarRenderer).mouthRenderer.enabled);
        }
예제 #14
0
        public IEnumerator BeUnequipedProperlyMultipleTimes()
        {
            List <GameObject> containers = new List <GameObject>();

            for (int i = 0; i < 6; i++)
            {
                avatarModel.wearables = new List <string>()
                {
                    SUNGLASSES_ID
                };
                yield return(avatarShape.ApplyChanges(JsonUtility.ToJson(avatarModel)));

                containers.Add(AvatarRenderer_Mock.GetWearableController(avatarShape.avatarRenderer, SUNGLASSES_ID)?.myAssetContainer);

                avatarModel.wearables = new List <string>()
                {
                };
                yield return(avatarShape.ApplyChanges(JsonUtility.ToJson(avatarModel)));
            }

            Assert.IsTrue(containers.All(x => x == null));
        }