Exemplo n.º 1
0
    protected override void createItem(DecalDefinition itemDefinition, GameObject item, ItemGroup.LockedState lockedState)
    {
        CustomizationButton component = item.GetComponent <CustomizationButton>();
        bool canDrag = lockedState == ItemGroup.LockedState.Unlocked;
        Texture2DContentKey fabricPath = EquipmentPathUtil.GetFabricPath(itemDefinition.AssetName);

        component.Init(fabricPath, BreadcrumbType, itemDefinition.Id, canDrag);
    }
Exemplo n.º 2
0
    private CustomizerGestureModel processGesture(ITouch touch, CustomizerGestureModel gestureModel)
    {
        gestureModel.TouchDownStartPos = touch.position;
        gestureModel.TouchStartTime    = Time.time;
        if (isOverUI(touch))
        {
            PointerEventData pointerEventData = new PointerEventData(EventSystem.current);
            pointerEventData.position = touch.position;
            List <RaycastResult> list = new List <RaycastResult>();
            EventSystem.current.RaycastAll(pointerEventData, list);
            GameObject gameObject = null;
            float      num        = 0f;
            if (list != null && list.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    if (num <= list[i].index)
                    {
                        gameObject = list[i].gameObject;
                        num        = list[i].index;
                    }
                }
            }
            if (gameObject != null)
            {
                CustomizationButton component = gameObject.GetComponent <CustomizationButton>();
                if (component != null && component.CanDrag && component.GetTexture != null)
                {
                    switch (component.DraggableButtonType)
                    {
                    case DraggableButtonType.TEMPLATE:
                    {
                        TemplateIcon templateIcon = component as TemplateIcon;
                        gestureModel.TouchDownStartArea = AreaTouchedEnum.TEMPLATE_BUTTON;
                        gestureModel.DragIconTexture    = component.GetTexture;
                        gestureModel.TemplateData       = templateIcon.TemplateData;
                        gestureModel.IsEquippable       = templateIcon.CanSelect;
                        gestureModel.ItemDefinitionId   = templateIcon.DefinitionId;
                        gestureModel.IsEnabled          = templateIcon.IsEnabled;
                        break;
                    }

                    case DraggableButtonType.FABRIC:
                        gestureModel.TouchDownStartArea = AreaTouchedEnum.FABRIC_BUTTON;
                        gestureModel.DragIconTexture    = component.GetTexture;
                        gestureModel.ItemDefinitionId   = component.DefinitionId;
                        break;

                    case DraggableButtonType.DECAL:
                        gestureModel.TouchDownStartArea = AreaTouchedEnum.DECAL_BUTTON;
                        gestureModel.DragIconTexture    = component.GetTexture;
                        gestureModel.ItemDefinitionId   = component.DefinitionId;
                        break;
                    }
                }
            }
        }
        else if (isTouchBlockedByUIControls(touch))
        {
            gestureModel.TouchDownStartArea = AreaTouchedEnum.CLICK_BLOCKING_UI;
        }
        else
        {
            Ray ray = Camera.main.ScreenPointToRay(touch.position);
            if (Physics.Raycast(ray, out RaycastHit hitInfo))
            {
                GameObject gameObject2 = hitInfo.collider.gameObject;
                if (gameObject2.GetComponent <SkinnedMeshRenderer>() != null && gameObject2.GetComponent <SkinnedMeshRenderer>().sharedMaterial.shader.name.Contains("Equipment"))
                {
                    Texture2D texture2D = gameObject2.GetComponent <SkinnedMeshRenderer>().sharedMaterial.GetTexture(EquipmentShaderParams.DECALS_123_OPACITY_TEX) as Texture2D;
                    if (texture2D == null)
                    {
                        Log.LogErrorFormatted(this, "Unable to retrieve decal 123 map on item {0}. Property did not exist {1}.", gameObject2.name, EquipmentShaderParams.DECALS_123_OPACITY_TEX);
                        return(gestureModel);
                    }
                    Vector2 textureCoord = hitInfo.textureCoord;
                    textureCoord.Scale(new Vector2(texture2D.width, texture2D.height));
                    Color pixel = texture2D.GetPixel((int)textureCoord.x, (int)textureCoord.y);
                    if (Mathf.Abs(pixel.r) < Mathf.Epsilon && Mathf.Abs(pixel.g) < Mathf.Epsilon && Mathf.Abs(pixel.b) < Mathf.Epsilon)
                    {
                        gestureModel.TouchDownStartArea = AreaTouchedEnum.NOTHING;
                    }
                    else if (pixel.r > pixel.g && pixel.r > pixel.b)
                    {
                        gestureModel.TouchDownStartArea = AreaTouchedEnum.RED_CHANNEL;
                        gestureModel.StartGameObject    = gameObject2;
                    }
                    else if (pixel.g > pixel.r && pixel.g > pixel.b)
                    {
                        gestureModel.TouchDownStartArea = AreaTouchedEnum.GREEN_CHANNEL;
                        gestureModel.StartGameObject    = gameObject2;
                    }
                    else
                    {
                        gestureModel.TouchDownStartArea = AreaTouchedEnum.BLUE_CHANNEL;
                        gestureModel.StartGameObject    = gameObject2;
                    }
                }
                else
                {
                    gestureModel.TouchDownStartArea = AreaTouchedEnum.PENGUIN_ROTATION_AREA;
                }
            }
            else
            {
                gestureModel.TouchDownStartArea = AreaTouchedEnum.PENGUIN_ROTATION_AREA;
            }
        }
        return(gestureModel);
    }