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)); }
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(); } } }
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); }
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); }