Exemplo n.º 1
0
        public IEnumerator FailsGracefully()
        {
            //Arrange
            WearableItem unexistentWearableItem = new WearableItem
            {
                representations = new [] { new WearableItem.Representation
                                           {
                                               mainFile = "NothingHere",
                                               contents = new [] { new ContentServerUtils.MappingPair {
                                                                       file = "NothingHere", hash = "NothingHere"
                                                                   } },
                                               bodyShapes = new [] { WearableLiterals.BodyShapes.FEMALE, WearableLiterals.BodyShapes.MALE }
                                           } }
            };
            WearableController wearable = new WearableController(unexistentWearableItem);

            toCleanUp.Add(wearable);

            //Act
            bool succeeded = false;
            bool failed    = false;

            RendereableAssetLoadHelper.LoadingType cacheLoadingType = RendereableAssetLoadHelper.loadingType;
            RendereableAssetLoadHelper.loadingType = RendereableAssetLoadHelper.LoadingType.ASSET_BUNDLE_ONLY;
            wearable.Load(WearableLiterals.BodyShapes.FEMALE, wearableHolder, x => succeeded = true, x => failed = true);
            yield return(new WaitUntil(() => succeeded || failed));

            RendereableAssetLoadHelper.loadingType = cacheLoadingType;

            //Assert
            Assert.IsFalse(succeeded);
            Assert.IsTrue(failed);
        }
Exemplo n.º 2
0
        public IEnumerator SetAnimatorBonesProperly()
        {
            //Arrange
            SkinnedMeshRenderer skinnedMeshRenderer = CreateTestGameObject("_SMR_Holder").AddComponent <SkinnedMeshRenderer>();

            skinnedMeshRenderer.rootBone = CreateTestGameObject("_rootBone").transform;
            skinnedMeshRenderer.bones    = new Transform[5];
            for (var i = 0; i < skinnedMeshRenderer.bones.Length; i++)
            {
                skinnedMeshRenderer.bones[i] = CreateTestGameObject($"_rootBone_{i}").transform;
            }
            catalog.TryGetValue(SUNGLASSES_ID, out WearableItem wereableItem);
            WearableController wearable = new WearableController(wereableItem);

            toCleanUp.Add(wearable);
            wearable.Load(WearableLiterals.BodyShapes.FEMALE, wearableHolder, null, null);
            yield return(new WaitUntil(() => wearable.isReady));

            //Act
            wearable.SetAnimatorBones(skinnedMeshRenderer);

            //Assert
            SkinnedMeshRenderer wearableSMR = wearable.assetContainer.GetComponentInChildren <SkinnedMeshRenderer>();

            Assert.AreEqual(skinnedMeshRenderer.rootBone, wearableSMR.rootBone);
            for (int index = 0; index < wearableSMR.bones.Length; index++)
            {
                Assert.AreEqual(skinnedMeshRenderer.bones[index], wearableSMR.bones[index]);
            }
        }
Exemplo n.º 3
0
        private void ProcessWearable(string wearableId)
        {
            var wearable = ResolveWearable(wearableId);

            if (wearable == null)
            {
                return;
            }

            switch (wearable.category)
            {
            case WearableLiterals.Categories.EYES:
                eyesController = new FacialFeatureController(wearable, bodyShapeController.bodyShapeType);
                break;

            case WearableLiterals.Categories.EYEBROWS:
                eyebrowsController = new FacialFeatureController(wearable, bodyShapeController.bodyShapeType);
                break;

            case WearableLiterals.Categories.MOUTH:
                mouthController = new FacialFeatureController(wearable, bodyShapeController.bodyShapeType);
                break;

            case WearableLiterals.Categories.BODY_SHAPE:
                break;

            default:
                var wearableController = new WearableController(ResolveWearable(wearableId), bodyShapeController.id);
                wearablesController.Add(wearableId, wearableController);
                wearableController.Load(transform, OnWearableLoadingSuccess, OnWearableLoadingFail);
                break;
            }
        }
Exemplo n.º 4
0
        void OnWearableLoadingFail(WearableController wearableController, int retriesCount = MAX_RETRIES)
        {
            if (retriesCount <= 0)
            {
                Debug.LogError($"Avatar: {model.name}  -  Failed loading wearable: {wearableController.id}");
                CleanupAvatar();
                OnFailEvent?.Invoke();
                return;
            }

            wearableController.Load(transform, OnWearableLoadingSuccess, x => OnWearableLoadingFail(x, retriesCount - 1));
        }
    private IEnumerator LoadWearable(string wearableId, string bodyShapeId, Vector3 wearablePosition)
    {
        catalog.TryGetValue(wearableId, out WearableItem wearableItem);
        Assert.NotNull(wearableItem);
        WearableController wearable = new WearableController(wearableItem);

        toCleanUp.Add(wearable);
        bool succeeded = false;
        bool failed    = false;

        wearable.Load(bodyShapeId, CreateTestGameObject(wearable.id, wearablePosition).transform, x => succeeded = true, x => failed = true);
        yield return(new WaitUntil(() => succeeded || failed));

        Assert.IsTrue(succeeded);
        wearable.SetAssetRenderersEnabled(true);
        wearable.SetupDefaultMaterial(avatarMaterial, skinColor, hairColor);
    }
Exemplo n.º 6
0
        public IEnumerator LoadSuccessfully()
        {
            //Arrange
            WearableController wearable = new WearableController(catalog.GetOrDefault(SUNGLASSES_ID), WearableLiterals.BodyShapes.FEMALE);

            toCleanUp.Add(wearable);

            //Act
            bool succeeded = false;
            bool failed    = false;

            wearable.Load(wearableHolder, x => succeeded = true, x => failed = true);
            yield return(new WaitUntil(() => succeeded || failed));

            //Assert
            Assert.IsTrue(succeeded);
            Assert.IsFalse(failed);
        }
Exemplo n.º 7
0
        public IEnumerator UpdateVisibilityProperly_True()
        {
            //Arrange
            WearableController wearable = new WearableController(catalog.GetOrDefault(SUNGLASSES_ID), WearableLiterals.BodyShapes.FEMALE);

            toCleanUp.Add(wearable);
            wearable.Load(wearableHolder, null, null);
            yield return(new WaitUntil(() => wearable.isReady));

            SkinnedMeshRenderer skinnedMeshRenderer = wearable.assetContainer.GetComponentInChildren <SkinnedMeshRenderer>();

            skinnedMeshRenderer.enabled = false;

            //Act
            wearable.UpdateVisibility(new HashSet <string>());

            //Assert
            Assert.IsTrue(skinnedMeshRenderer.enabled);
        }
Exemplo n.º 8
0
        public IEnumerator UpdateVisibilityProperly_False()
        {
            //Arrange
            catalog.TryGetValue(SUNGLASSES_ID, out WearableItem wereableItem);
            WearableController wearable = new WearableController(wereableItem);

            toCleanUp.Add(wearable);
            wearable.Load(WearableLiterals.BodyShapes.FEMALE, wearableHolder, null, null);
            yield return(new WaitUntil(() => wearable.isReady));

            SkinnedMeshRenderer skinnedMeshRenderer = wearable.assetContainer.GetComponentInChildren <SkinnedMeshRenderer>();

            skinnedMeshRenderer.enabled = true;

            //Act
            wearable.UpdateVisibility(new HashSet <string> {
                wearable.wearable.category
            });

            //Assert
            Assert.IsFalse(skinnedMeshRenderer.enabled);
        }