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]); } } }
public unsafe static long $Invoke24(long instance, long *args) { return(GCHandledObjects.ObjectToGCHandle(BuffController.DeduceBuffAssetOffset((BuffTypeVO)GCHandledObjects.GCHandleToObject(*args), (SmartEntity)GCHandledObjects.GCHandleToObject(args[1])))); }