Exemplo n.º 1
0
        private void OnRemovingBuff(Buff buff, SmartEntity target)
        {
            string vFXAssetForTarget = GameUtils.GetVFXAssetForTarget(buff.BuffType, target);

            if (!string.IsNullOrEmpty(vFXAssetForTarget) && target.SizeComp != null)
            {
                Service.FXManager.StopParticlesAndRemoveAttachedFXFromEntity(target, BuffController.MakeFXAttachmentTag(buff.BuffType.BuffID));
            }
            if (!string.IsNullOrEmpty(buff.BuffType.ShaderName))
            {
                this.RestoreShadersAfterBuff(target);
                if (this.shaderSwappedBuffs.ContainsKey(target))
                {
                    this.shaderSwappedBuffs.Remove(target);
                }
            }
        }
Exemplo n.º 2
0
        private void OnAddedBuff(Buff buff, SmartEntity target)
        {
            bool flag = false;

            if (target.GameObjectViewComp == null || target.GameObjectViewComp.MainGameObject == null)
            {
                flag = true;
            }
            string vFXAssetForTarget = GameUtils.GetVFXAssetForTarget(buff.BuffType, target);

            if (!string.IsNullOrEmpty(vFXAssetForTarget))
            {
                SizeComponent sizeComp = target.SizeComp;
                if (sizeComp != null)
                {
                    if (!flag)
                    {
                        int     num               = (sizeComp.Width > sizeComp.Depth) ? sizeComp.Depth : sizeComp.Width;
                        string  assetName         = string.Format(vFXAssetForTarget, num);
                        Vector3 offset            = BuffController.DeduceBuffAssetOffset(buff.BuffType, target);
                        bool    pinToCenterOfMass = buff.BuffType.OffsetType == BuffAssetOffset.Top;
                        Service.FXManager.CreateAndAttachFXToEntity(target, assetName, BuffController.MakeFXAttachmentTag(buff.BuffType.BuffID), null, pinToCenterOfMass, offset, true);
                    }
                    else
                    {
                        this.AddEntityToRecheckVisualAfterLoadList(target, buff);
                    }
                }
            }
            if (!string.IsNullOrEmpty(buff.BuffType.ShaderName))
            {
                bool flag2 = false;
                if (this.shaderSwappedBuffs.ContainsKey(target))
                {
                    Buff buff2 = this.shaderSwappedBuffs[target];
                    if (buff2.VisualPriority <= buff.VisualPriority)
                    {
                        this.shaderSwappedBuffs[target] = buff;
                        flag2 = true;
                    }
                }
                else
                {
                    this.shaderSwappedBuffs.Add(target, buff);
                    flag2 = true;
                }
                if (!flag2)
                {
                    return;
                }
                if (!flag)
                {
                    Shader shader = Service.AssetManager.Shaders.GetShader(this.shaderSwappedBuffs[target].BuffType.ShaderName);
                    if (shader != null)
                    {
                        this.SwapShadersForAppliedBuff(target, shader);
                    }
                }
                else
                {
                    this.AddEntityToRecheckVisualAfterLoadList(target, this.shaderSwappedBuffs[target]);
                }
            }
        }
Exemplo n.º 3
0
 public unsafe static long $Invoke28(long instance, long *args)
 {
     return(GCHandledObjects.ObjectToGCHandle(BuffController.MakeFXAttachmentTag(Marshal.PtrToStringUni(*(IntPtr *)args))));
 }