Esempio n. 1
0
        private void CheckExplosionEffect(ClientEffectEntity entity)
        {
            PlayerEntity player    = AllContexts.player.flagSelfEntity;
            Vector3      playerPos = player.position.Value;
            Vector3      pos       = entity.position.Value;

            Transform tran;

            if (player.appearanceInterface.Appearance.IsFirstPerson)
            {
                var root = player.RootGo();
                tran = BoneMount.FindChildBoneFromCache(root, BoneName.CharacterHeadBoneName);
            }
            else
            {
                var root = player.RootGo();
                tran = BoneMount.FindChildBoneFromCache(root, BoneName.CharacterHeadBoneName);
            }
            if (null != tran)
            {
                playerPos = tran.position;
            }

            //距离
            float dis = Vector3.Distance(playerPos, pos);

            if (dis < 9)
            {
                player.AudioController().PlayDizzyAudio(dis, 9);
            }
        }
Esempio n. 2
0
 public static void OnDestroy(ClientEffectEntity entity)
 {
     if (entity.hasEffectType && entity.effectType.Value == (int)EClientEffectType.BulletDrop)
     {
         _bulletDropEntities.Remove(entity);
     }
 }
Esempio n. 3
0
        public static void CreateDecalVolume(ClientEffectEntity entity,
                                             Contexts contexts,
                                             Vector3 position,
                                             Vector3 forward,
                                             Vector3 head,
                                             int sprayPrintSpriteId)
        {
            CreateDebugGameObject();
            _decal = GameObject.CreatePrimitive(PrimitiveType.Cube);
            MeshRenderer meshRen = _decal.GetComponent <MeshRenderer>();

            meshRen.enabled = false;
            _decal.GetComponent <BoxCollider>().enabled = false;
            _decal.transform.localScale = Vector3.one;

            DecalVolume dv = _decal.AddComponent <DecalVolume>();

            dv.Volume.m_origin = Vector3.zero;
            dv.Volume.m_size   = new Vector3(1.2f, 1.2f, 1.2f);

            _decal.transform.position = position;
            _decal.transform.Rotate(head, Space.Self);
            var bundleName = AssetBundleConstant.Icon_Spray;
            var assetName  = string.Format("Spray_{0}", sprayPrintSpriteId);

            _logger.DebugFormat(assetName);
            var assetManager = contexts.session.commonSession.AssetManager;

            AssetInfo assetInfo = new AssetInfo(bundleName, assetName);

            assetManager.LoadAssetAsync(assetName, assetInfo, (source, unityObj) =>
            {
                DecalVolumeParam param = new DecalVolumeParam();
                param.meshRen          = meshRen;
                if (unityObj != null && unityObj.AsObject != null)
                {
                    if (unityObj.AsObject is Texture2D)
                    {
                        param.texture = unityObj.AsObject as Texture2D;
                    }
                    else if (unityObj.AsObject is Sprite)
                    {
                        Sprite sprite = unityObj.AsObject as Sprite;
                        param.texture = sprite.texture;
                    }
                    else
                    {
                        _logger.DebugFormat("unityObj.AsObject is null !");
                        return;
                    }
                    assetManager.LoadAssetAsync(param, new AssetInfo("shaders", "MaterialForDecal"), OnDecalMaterialLoadSus);
                    dv.Create(forward, 0);
                }
                else
                {
                    _logger.DebugFormat("bundleName : " + bundleName + " assetName : " + assetName);
                }
            });
            entity.assets.LoadedAssets.Add(assetInfo, new UnityObject(_decal, assetInfo));
        }
Esempio n. 4
0
        public void Initialize(ClientEffectEntity entity)
        {
            var go = (GameObject)entity.assets.FirstAsset;

            go.transform.localScale = Ssjj2AssetsUtility.LocalScale;
            go.transform.position   = entity.position.Value;
            if (entity.hasAttachParent)
            {
                var player = _contexts.player.GetEntityWithEntityKey(entity.attachParent.ParentKey);
                if (null != player && player.hasBones)
                {
                    go.transform.parent   = player.bones.Spine;
                    go.transform.position = player.position.Value + entity.attachParent.Offset;
                    if (!go.activeSelf)
                    {
                        go.SetActive(true);
                    }
                }
                else
                {
                    go.SetActive(false);
                    Logger.ErrorFormat("no player with key {0}, or the player has no bones", entity.attachParent);
                }
            }
        }
Esempio n. 5
0
        public override void Initialize(ClientEffectEntity entity)
        {
            var clip     = (GameObject)entity.assets.LoadedAssets[Asset];
            var position = entity.position.Value;
            var yaw      = entity.effectRotation.Yaw;

            clip.transform.position   = position;
            clip.transform.rotation   = Quaternion.Euler(new Vector3(0, yaw + 90, 0));
            clip.transform.localScale = Vector3.one;
            clip.SetActive(true);
        }
Esempio n. 6
0
        public override void Initialize(ClientEffectEntity entity)
        {
            base.Initialize(entity);
            var go = (GameObject)entity.assets.LoadedAssets[Asset];

            try
            {
//                go.SendMessage("ApplyTriggerMask", _layerMask);
            }
            catch (Exception e)
            {
                Debug.LogFormat("ApplyTrigger error {0}", e.Message);
            }
        }
Esempio n. 7
0
        public virtual void Initialize(ClientEffectEntity entity)
        {
            var go = (GameObject)entity.assets.LoadedAssets[Asset];

            var position = entity.position.Value;

            if (entity.hasEffectRotation)
            {
                var yaw = entity.effectRotation.Yaw;
            }
            go.transform.position   = position;
            go.transform.rotation   = Quaternion.identity;
            go.transform.localScale = Vector3.one;
            if (!go.activeSelf)
            {
                go.SetActive(true);
            }
        }
        public override void Initialize(ClientEffectEntity entity)
        {
            base.Initialize(entity);
            var go = (GameObject)entity.assets.LoadedAssets[Asset];

            if (null != go && entity.hasAttachParent)
            {
                var owner = AllContexts.player.GetEntityWithEntityKey(entity.attachParent.ParentKey);
                if (null == owner)
                {
                    Logger.ErrorFormat("on player with entity key {0} !", entity.attachParent.ParentKey);
                    return;
                }
                if (!owner.hasAppearanceInterface)
                {
                    Logger.Error("owner has no appearance interface !");
                    return;
                }
                var appearance    = owner.appearanceInterface.Appearance;
                var characterBone = owner.characterBoneInterface.CharacterBone;
                var muzzleTrans   = characterBone.GetLocation(SpecialLocation.MuzzleEffectPosition, appearance.IsFirstPerson ? CharacterView.FirstPerson : CharacterView.ThirdPerson);
                if (null != muzzleTrans)
                {
                    go.transform.parent        = muzzleTrans;
                    go.transform.localPosition = Vector3.zero;
                    go.transform.forward       = muzzleTrans.forward;
                }
                else
                {
                    Logger.Error("muzzle effect anchor transform doesn't exist !");
                }
            }
            else
            {
                if (null == go)
                {
                    Logger.ErrorFormat("no {0} in loadedassets : load fialed ?", Asset);
                }
                else
                {
                    Logger.Error("entity has no parent component");
                }
            }
        }
Esempio n. 9
0
        public static void CreateBasicDecal(ClientEffectEntity entity,
                                            Contexts contexts,
                                            Vector3 position,
                                            Vector3 forward,
                                            Vector3 head,
                                            int sprayPrintSpriteId)
        {
            CreateDebugGameObject();
            var assetManager = contexts.session.commonSession.AssetManager;

            string     bundleNameSpray = AssetBundleConstant.Prefab_Spray;
            DecalParam decalParam      = new DecalParam();
            AssetInfo  assetInfo       = new AssetInfo(bundleNameSpray, "Decal-Combined");

            decalParam.entity             = entity;
            decalParam.contexts           = contexts;
            decalParam.position           = position;
            decalParam.forward            = forward;
            decalParam.head               = head;
            decalParam.sprayPrintSpriteId = sprayPrintSpriteId;
            decalParam.assetInfo          = assetInfo;
            _logger.DebugFormat("CreateBasicDecal");
            assetManager.LoadAssetAsync(decalParam, assetInfo, OnLoadSuccess);
        }
Esempio n. 10
0
 public BatchLoadHandler(ClientEffectEntity entity, AssetInfo[] assetInfos)
 {
     _entity     = entity;
     _assetInfos = assetInfos;
 }
Esempio n. 11
0
 public virtual void Render(ClientEffectEntity entity)
 {
 }
Esempio n. 12
0
        private void CheckFlash(ClientEffectEntity entity)
        {
            PlayerEntity player = AllContexts.player.flagSelfEntity;

            //闪光弹位置
            Vector3 pos = entity.position.Value;

            //水里1米
            if (SingletonManager.Get <MapConfigManager>().InWater(pos))
            {
                float wy = SingletonManager.Get <MapConfigManager>().WaterSurfaceHeight(pos);
                if (!float.IsNaN(wy) && wy - pos.y > 1)
                {
                    return;
                }
            }

            bool    isShow = false;
            float   alpha = 0, keepTime = 0, decayTime = 0;
            Vector3 playerPos = player.position.Value;

            //位置稍上抬
            pos.y += 0.1f;

            //玩家头部位置
            Transform tran;

            if (player.appearanceInterface.Appearance.IsFirstPerson)
            {
                var root = player.RootGo();
                tran = BoneMount.FindChildBoneFromCache(root, BoneName.CharacterHeadBoneName);
            }
            else
            {
                var root = player.RootGo();
                tran = BoneMount.FindChildBoneFromCache(root, BoneName.CharacterHeadBoneName);
            }
            if (null != tran)
            {
                playerPos = tran.position;
            }

            //距离
            float dis = Vector3.Distance(playerPos, pos);

            if (dis >= 40)
            {
                return;
            }

            float diffAngle = 0;

            //判断是否手上爆炸
            bool isHandBomb = entity.hasEffectRotation && entity.effectRotation.Yaw > 0;

            if (!(entity.ownerId.Value == player.entityKey.Value && isHandBomb))
            {
                //遮挡
                Vector3 hitPoint;
                bool    isHit = CommonMathUtil.Raycast(playerPos, pos, dis, _layerMask, out hitPoint);
                if (isHit)
                {
                    return;
                }

                //角度
                float yaw   = CommonMathUtil.TransComAngle(player.orientation.Yaw);
                float angle = CommonMathUtil.GetAngle(new Vector2(pos.x, pos.z), new Vector2(playerPos.x, playerPos.z));
                diffAngle = Mathf.Abs(angle - yaw);
                diffAngle = Mathf.Min(360 - diffAngle, diffAngle);
            }

            if (diffAngle <= 60)
            {
                if (dis < 20)
                {
                    isShow    = true;
                    alpha     = 1;
                    keepTime  = Mathf.Max(1.2f, 3 * Mathf.Pow(0.4f, dis / 30));
                    decayTime = alpha / 0.4f;
                }
                else if (dis < 40)
                {
                    isShow    = true;
                    alpha     = 1 - dis * 0.00025f;
                    keepTime  = 0;
                    decayTime = alpha / 0.4f;
                }
            }
            else if (diffAngle <= 90)
            {
                if (dis <= 20)
                {
                    isShow    = true;
                    alpha     = Mathf.Max(0, 1 - dis * 0.00025f);
                    keepTime  = 0;
                    decayTime = alpha / 0.4f;
                }
            }
            else if (diffAngle <= 180)
            {
                if (dis <= 10)
                {
                    isShow    = true;
                    alpha     = Mathf.Max(0, 0.8f - dis * 0.00025f);
                    keepTime  = 0;
                    decayTime = alpha / 0.5f;
                }
            }

            if (isShow)
            {
                ScreenFlashInfo screenFlashInfo = new ScreenFlashInfo();
                screenFlashInfo.IsShow            = true;
                screenFlashInfo.Alpha             = alpha;
                screenFlashInfo.KeepTime          = keepTime;
                screenFlashInfo.DecayTime         = decayTime;
                AllContexts.ui.uI.ScreenFlashInfo = screenFlashInfo;
                player.AudioController().PlayDizzyAudio(dis, 40);
                //      GameAudioMedia.PlayFlashDizzyAudio(pos,Math.Min(0,40-dis));
            }
        }
Esempio n. 13
0
 public override void Initialize(ClientEffectEntity entity)
 {
     base.Initialize(entity);
     CheckFlash(entity);
 }
Esempio n. 14
0
 public override void Initialize(ClientEffectEntity entity)
 {
     base.Initialize(entity);
     CheckExplosionEffect(entity);
 }
        public override void Initialize(ClientEffectEntity entity)
        {
            var offset = 0.001f;
            var normal = entity.normal.Value;
            var go     = entity.assets.FirstAsset;

            if (!go)
            {
                return;
            }
            go.transform.SetPositionAndRotation(entity.position.Value + offset * normal,
                                                Quaternion.FromToRotation(Vector3.forward, normal));
            go.transform.localScale = GlobalConst.LocalScale;
            if (entity.hasAttachParent)
            {
                switch ((EEntityType)entity.attachParent.ParentKey.EntityType)
                {
                case EEntityType.Vehicle:
                    var vehicle = AllContexts.vehicle.GetEntityWithEntityKey(entity.attachParent.ParentKey);
                    if (vehicle != null && vehicle.hasGameObject && null != vehicle.gameObject.UnityObject)
                    {
                        go.transform.SetParent(vehicle.gameObject.UnityObject.AsGameObject.transform, false);
                        go.transform.localPosition = entity.attachParent.Offset;
                    }
                    else
                    {
                        Logger.Error("vehicle gameobject does not exist");
                    }

                    break;
                    // case EEntityType.Player:
                    //     var player = AllContexts.player.GetEntityWithEntityKey(entity.attachParent.ParentKey);
                    //     if (player !=null && player.hasBones && null != player.bones.Spine)
                    //     {
                    //         go.transform.SetParent(player.bones.Spine.transform, false);
                    //         go.transform.localPosition = entity.attachParent.Offset;
                    //     }
                    //     else
                    //     {
                    //         Logger.Error("player sprine bones doesn't exist !");
                    //     }
                    //
                    //     break;
                    // case EEntityType.SceneObject:
                    //     var trunkId = entity.attachParent.FragmentId;
                    //     var sceneObj = AllContexts.sceneObject.GetEntityWithEntityKey(entity.attachParent.ParentKey);
                    //     if (null == sceneObj)
                    //     {
                    //         entity.isFlagDestroy = true;
                    //     }
                    //     else
                    //     {
                    //         if (sceneObj.hasRawGameObject && null != sceneObj.rawGameObject)
                    //         {
                    //             var fracturedObject = sceneObj.rawGameObject.Value.GetComponent<FracturedObject>();
                    //             if (trunkId > -1 && trunkId < fracturedObject.ListFracturedChunks.Count)
                    //             {
                    //                 var trunk = fracturedObject.ListFracturedChunks[trunkId];
                    //                 if (null != trunk)
                    //                 {
                    //                     var transform = trunk.transform;
                    //                     go.transform.SetParent(transform, false);
                    //                     go.transform.localPosition = entity.attachParent.Offset + normal * 0.01f;
                    //                 }
                    //             }
                    //         }
                    //         else
                    //         {
                    //             Logger.Error("target scene object has no rawgameobject");
                    //         }
                    //     }
                    //
                    //     break;
                }
            }
            go.SetActive(true);
        }