Exemplo n.º 1
0
        public static IEnumerator TestShapeOnPointerEventCollider(DecentralandEntity entity)
        {
            Renderer[] renderers = entity.meshesInfo.renderers;

            Assert.IsTrue(renderers.Length > 0);

            var onClickComponentModel = new OnClick.Model()
            {
                type = OnClick.NAME,
                uuid = "onClick"
            };
            var onClickComponent = TestHelpers.EntityComponentCreate <OnClick, OnClick.Model>(entity.scene, entity, onClickComponentModel, CLASS_ID_COMPONENT.UUID_CALLBACK);

            yield return(onClickComponent.routine);

            Collider onPointerEventCollider;

            for (int i = 0; i < renderers.Length; i++)
            {
                Assert.IsTrue(renderers[i].transform.childCount > 0, "OnClick collider should exist as this mesh's child");

                onPointerEventCollider = renderers[i].transform.GetChild(0).GetComponent <Collider>();
                Assert.IsTrue(onPointerEventCollider != null);
                Assert.IsTrue(onPointerEventCollider.gameObject.layer == PhysicsLayers.onPointerEventLayer);

                // check the onClick collide enabled state is the same as the renderer's state
                Assert.IsTrue(onPointerEventCollider.enabled == renderers[i].enabled);
            }

            entity.scene.EntityComponentRemove(
                entity.entityId,
                onClickComponent.name
                );
            yield return(null);
        }
    IEnumerator Start()
    {
        yield return(InitScene());

        string entityId = "1";

        var entity = TestHelpers.CreateSceneEntity(scene, entityId);

        string shapeId = TestHelpers.CreateAndSetShape(scene, entityId, DCL.Models.CLASS_ID.GLTF_SHAPE,
                                                       JsonConvert.SerializeObject(new
        {
            src = DCL.Helpers.Utils.GetTestsAssetsPath() + "/GLB/Lantern/Lantern.glb"
        }));

        LoadWrapper_GLTF gltfShape = GLTFShape.GetLoaderForEntity(entity) as LoadWrapper_GLTF;

        yield return(new DCL.WaitUntil(() => gltfShape.alreadyLoaded, 7f));

        TestHelpers.SetEntityTransform(scene, entity, new Vector3(8, -1, 8), Quaternion.identity, new Vector3(0.5f, 0.5f, 0.5f));

        var onClickComponentModel = new OnClick.Model()
        {
            type   = OnClick.NAME,
            uuid   = "pointerevent-1",
            button = this.button.ToString()
        };
        var onClickComponent = TestHelpers.EntityComponentCreate <OnClick, OnClick.Model>(scene, entity, onClickComponentModel, CLASS_ID_COMPONENT.UUID_CALLBACK);

        scene.sceneLifecycleHandler.SetInitMessagesDone();

        OnPointerEvent.enableInteractionHoverFeedback = true;
    }
        public IEnumerator BeDestroyedCorrectlyWhenReceivingComponentDestroyMessage()
        {
            var        shape  = TestHelpers.CreateEntityWithBoxShape(scene, Vector3.zero, true);
            IDCLEntity entity = shape.attachedEntities.First();

            yield return(shape.routine);

            string onPointerId = "pointerevent-1";
            var    model       = new OnClick.Model()
            {
                type = OnClick.NAME,
                uuid = onPointerId
            };

            TestHelpers.EntityComponentCreate <OnClick, OnClick.Model>(scene, entity,
                                                                       model, CLASS_ID_COMPONENT.UUID_CALLBACK);

            model.type = OnPointerDown.NAME;

            TestHelpers.EntityComponentCreate <OnPointerDown, OnPointerDown.Model>(scene, entity,
                                                                                   model, CLASS_ID_COMPONENT.UUID_CALLBACK);

            model.type = OnPointerUp.NAME;

            TestHelpers.EntityComponentCreate <OnPointerUp, OnPointerUp.Model>(scene, entity,
                                                                               model, CLASS_ID_COMPONENT.UUID_CALLBACK);

            Assert.IsTrue(entity.components.ContainsKey(CLASS_ID_COMPONENT.UUID_ON_CLICK));
            Assert.IsTrue(entity.components.ContainsKey(CLASS_ID_COMPONENT.UUID_ON_UP));
            Assert.IsTrue(entity.components.ContainsKey(CLASS_ID_COMPONENT.UUID_ON_DOWN));

            scene.EntityComponentRemove(entity.entityId, OnPointerDown.NAME);
            scene.EntityComponentRemove(entity.entityId, OnPointerUp.NAME);
            scene.EntityComponentRemove(entity.entityId, OnClick.NAME);

            Assert.IsFalse(entity.components.ContainsKey(CLASS_ID_COMPONENT.UUID_ON_CLICK));
            Assert.IsFalse(entity.components.ContainsKey(CLASS_ID_COMPONENT.UUID_ON_UP));
            Assert.IsFalse(entity.components.ContainsKey(CLASS_ID_COMPONENT.UUID_ON_DOWN));
        }