Example #1
0
    public int ReplaySpine(int uid, int templateId, Transform host, string uibase, int depthValue = 2001, Action finishCallback = null, string layer = "UI", float xOffset = 0f, float yOffset = 0f, float xScale = 1f, float yScale = 1f, bool stencilMask = false, FXMaskLayer.MaskState maskState = FXMaskLayer.MaskState.None)
    {
        if (this.IsLockWhenDeleteAllSpine)
        {
            return(0);
        }
        if (!SystemConfig.IsUIFXOn)
        {
            return(0);
        }
        if (templateId <= 0)
        {
            return(0);
        }
        if (host == null)
        {
            return(0);
        }
        if (uid <= 0 || !this.m_fxSpines.ContainsKey(uid))
        {
            return(this.PlaySpine(templateId, host, uibase, depthValue, finishCallback, layer, xOffset, yOffset, xScale, yScale, stencilMask, maskState));
        }
        ActorFXSpine actorFXSpine = this.m_fxSpines.get_Item(uid);

        if (actorFXSpine != null)
        {
            actorFXSpine.PlaySpine();
            return(uid);
        }
        this.m_fxSpines.Remove(uid);
        return(this.PlaySpine(templateId, host, uibase, depthValue, finishCallback, layer, xOffset, yOffset, xScale, yScale, stencilMask, maskState));
    }
Example #2
0
 public void DeleteSpine(int uid, bool isCallback = true)
 {
     if (uid <= 0)
     {
         return;
     }
     if (this.m_fxSpines.ContainsKey(uid))
     {
         ActorFXSpine actorFXSpine = this.m_fxSpines.get_Item(uid);
         this.m_fxSpines.Remove(uid);
         if (actorFXSpine != null)
         {
             actorFXSpine.FXFinished(isCallback);
             actorFXSpine.PoolRecycle();
         }
     }
 }
Example #3
0
    private void JustPlaySpine(int uid, int templateId, Transform host, string uibase, int depthValue, Action finishCallback, string layer, float xOffset, float yOffset, float xScale, float yScale, bool stencilMask, FXMaskLayer.MaskState maskState = FXMaskLayer.MaskState.None)
    {
        FXSpine fXSpine = DataReader <FXSpine> .Get(templateId);

        if (fXSpine == null || string.IsNullOrEmpty(fXSpine.name))
        {
            return;
        }
        if (host == null)
        {
            return;
        }
        ActorFXSpine actorFXSpine = FXSpinePool.Instance.Get(templateId);

        if (actorFXSpine == null)
        {
            return;
        }
        actorFXSpine.get_transform().set_name(templateId.ToString());
        if (maskState != FXMaskLayer.MaskState.None)
        {
            FXMaskLayer fXMaskLayer = actorFXSpine.get_gameObject().AddUniqueComponent <FXMaskLayer>();
            fXMaskLayer.state = maskState;
        }
        this.m_fxSpines.set_Item(uid, actorFXSpine);
        actorFXSpine.get_transform().set_parent(host);
        actorFXSpine.get_transform().set_localPosition(new Vector3(xOffset, yOffset, 0f));
        actorFXSpine.get_transform().set_localRotation(Quaternion.get_identity());
        actorFXSpine.get_transform().set_localScale(new Vector3(xScale, yScale, 1f));
        LayerSystem.SetGameObjectLayer(actorFXSpine.get_gameObject(), layer, 1);
        DepthOfFX depthOfFX = actorFXSpine.get_gameObject().AddMissingComponent <DepthOfFX>();

        depthOfFX.SortingOrder       = depthValue;
        actorFXSpine._uid            = uid;
        actorFXSpine._dataSpine      = fXSpine;
        actorFXSpine._uibase         = uibase;
        actorFXSpine._depth          = depthValue;
        actorFXSpine._stencilMask    = stencilMask;
        actorFXSpine._finishCallback = finishCallback;
        actorFXSpine.AwakeSelf();
        actorFXSpine.get_gameObject().SetActive(true);
        actorFXSpine.PlaySpine();
        this.DoSetShader(actorFXSpine, stencilMask, fXSpine);
        this.PlaySound(fXSpine);
    }
Example #4
0
    private void DoSetShader(ActorFXSpine actorSpine, bool stencilMask, FXSpine dataSpine)
    {
        if (actorSpine == null)
        {
            return;
        }
        using (Dictionary <int, ActorFXSpine> .ValueCollection.Enumerator enumerator = this.m_fxSpines.get_Values().GetEnumerator())
        {
            while (enumerator.MoveNext())
            {
                ActorFXSpine current = enumerator.get_Current();
                if (!(current == null))
                {
                    if (current._dataSpine != null && actorSpine._dataSpine != null)
                    {
                        if (current._uid != actorSpine._uid)
                        {
                            if (!(current.myRenderer == null) && !(actorSpine.myRenderer == null))
                            {
                                if (current.myRenderer.get_sharedMaterial() == null)
                                {
                                    Debug.Log("tspine.myRenderer.sharedMaterial is null");
                                }
                                else if (!(current.myRenderer.get_sharedMaterial().get_mainTexture() == null))
                                {
                                    if (current._dataSpine.id == actorSpine._dataSpine.id && current._stencilMask == actorSpine._stencilMask)
                                    {
                                        actorSpine.myRenderer.set_sharedMaterial(current.myRenderer.get_sharedMaterial());
                                        return;
                                    }
                                    if (current._dataSpine.name == actorSpine._dataSpine.name && current._dataSpine.blendWay == actorSpine._dataSpine.blendWay && current._dataSpine.BrightnessRatio == actorSpine._dataSpine.BrightnessRatio && current._stencilMask == actorSpine._stencilMask && (current._dataSpine.blendWay != 0 || current._dataSpine.rgbEffect == actorSpine._dataSpine.rgbEffect))
                                    {
                                        actorSpine.myRenderer.set_sharedMaterial(current.myRenderer.get_sharedMaterial());
                                        return;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        Material material = actorSpine.GetComponent <MeshRenderer>().get_material();
        Shader   shader;

        if (stencilMask)
        {
            if (dataSpine.blendWay == 0)
            {
                shader = ShaderManager.Find("Hsh(Mobile)/UI/UIStencilAlphaBlended");
            }
            else
            {
                shader = ShaderManager.Find("Hsh(Mobile)/UI/UIStencilAdd");
            }
        }
        else
        {
            int blendWay = dataSpine.blendWay;
            if (blendWay != 1)
            {
                if (blendWay != 2)
                {
                    if (dataSpine.rgbEffect == 0)
                    {
                        shader = ShaderManager.Find("Hsh(Mobile)/UI/UISpineAlphaBlended");
                    }
                    else
                    {
                        shader = ShaderManager.Find("Hsh(Mobile)/FX/ParticleAlphaBlended");
                    }
                }
                else
                {
                    shader = ShaderManager.Find("Particles/Additive");
                }
            }
            else
            {
                shader = ShaderManager.Find("Hsh(Mobile)/UI/UISpineAdd");
            }
        }
        material.set_shader(shader);
        material.SetFloat(ShaderPIDManager._BrightnessRatio, dataSpine.BrightnessRatio);
    }