Beispiel #1
0
        public static EClientEffectType ToClientEfcType(this EEnvironmentType infoType)
        {
            switch (infoType)
            {
            case EEnvironmentType.Wood:
                return(EClientEffectType.WoodHit);

            case EEnvironmentType.Steel:
                return(EClientEffectType.SteelHit);

            case EEnvironmentType.Soil:
                return(EClientEffectType.SoilHit);

            case EEnvironmentType.Stone:
                return(EClientEffectType.StoneHit);

            case EEnvironmentType.Glass:
                return(EClientEffectType.GlassHit);

            case EEnvironmentType.Water:
                return(EClientEffectType.WaterHit);

            default:
                return(EClientEffectType.DefaultHit);
            }
        }
Beispiel #2
0
 public void AddPenetrateInfo(EEnvironmentType type)
 {
     if (!_bulletEntity.hasPenetrateInfo)
     {
         _bulletEntity.AddPenetrateInfo(new System.Collections.Generic.List <EEnvironmentType>());
     }
     _bulletEntity.penetrateInfo.Layers.Add(type);
 }
 public float GetEnergyDecayFactorByEnvironmentType(EEnvironmentType environmentType)
 {
     if (!_factors.ContainsKey(environmentType))
     {
         return(0);
     }
     return(_factors[environmentType].EnergyDecay);
 }
Beispiel #4
0
        private static void CreateHitEmitEffect(
            ClientEffectContext context,
            IEntityIdGenerator entityIdGenerator,
            Vector3 hitPoint,
            Vector3 normal,
            EntityKey owner,
            EEnvironmentType environmentType)
        {
            int type = (int)EClientEffectType.End;
            AudioGrp_HitMatType audioGrpHitMatType = AudioGrp_HitMatType.Concrete;

            switch (environmentType)
            {
            case EEnvironmentType.Wood:
                type = (int)EClientEffectType.WoodHit;
                audioGrpHitMatType = AudioGrp_HitMatType.Wood;

                break;

            case EEnvironmentType.Steel:
                type = (int)EClientEffectType.SteelHit;
                audioGrpHitMatType = AudioGrp_HitMatType.Metal;
                break;

            case EEnvironmentType.Soil:
                type = (int)EClientEffectType.SoilHit;
                break;

            case EEnvironmentType.Stone:
                type = (int)EClientEffectType.StoneHit;
                break;

            case EEnvironmentType.Glass:
                type = (int)EClientEffectType.GlassHit;
                break;

            case EEnvironmentType.Water:
                type = (int)EClientEffectType.WaterHit;
                audioGrpHitMatType = AudioGrp_HitMatType.Water;

                break;

            default:
                type = (int)EClientEffectType.DefaultHit;
                break;
            }

            var effectEntity = CreateBaseEntity(context, entityIdGenerator, hitPoint, type);

            effectEntity.AddOwnerId(owner);
            effectEntity.AddNormal(normal);

            effectEntity.AddAudio((int)AudioClientEffectType.BulletHit);
            effectEntity.audio.AudioClientEffectArg1 = (int)audioGrpHitMatType;
            effectEntity.lifeTime.LifeTime           = SingletonManager.Get <ClientEffectCommonConfigManager>().DecayLifeTime;
            effectEntity.AddFlagImmutability(0);
            effectEntity.isFlagSyncNonSelf = false;
        }
        public void AddPenetrateInfo(EEnvironmentType type)
        {
            if (bulletEntity.bulletRuntime.Layers == null)
            {
                bulletEntity.bulletRuntime.Layers = new List <EEnvironmentType>();
            }

            bulletEntity.bulletRuntime.Layers.Add(type);
        }
 public void ReadBody(BinaryReader reader)
 {
     Offset           = FieldSerializeUtil.Deserialize(Offset, reader);
     HitPoint         = FieldSerializeUtil.Deserialize(HitPoint, reader);
     EnvironmentType  = (EEnvironmentType)FieldSerializeUtil.Deserialize((byte)0, reader);
     HitAudioId       = FieldSerializeUtil.Deserialize(HitAudioId, reader);
     needEffectEntity = FieldSerializeUtil.Deserialize((byte)0, reader) == 1;
     ChunkId          = FieldSerializeUtil.Deserialize(ChunkId, reader);
 }
        public void RewindTo(IEvent value)
        {
            HitEnvironmentEvent right = value as HitEnvironmentEvent;

            Offset           = right.Offset;
            HitPoint         = right.HitPoint;
            HitAudioId       = right.HitAudioId;
            EnvironmentType  = right.EnvironmentType;
            needEffectEntity = right.needEffectEntity;
            ChunkId          = right.ChunkId;
        }
Beispiel #8
0
        public static void CreateHitEnvironmentEffect(
            ClientEffectContext context,
            IEntityIdGenerator entityIdGenerator,
            Vector3 hitPoint,
            Vector3 normal,
            EntityKey owner,
            EEnvironmentType environmentType)
        {
            Logger.DebugFormat("CreateBulletHitEnvironmentEffet ", environmentType);

            CreateHitEmitEffect(context, entityIdGenerator, hitPoint, normal, owner, environmentType);

            Logger.DebugFormat("EnvType {0} ", environmentType);
        }
        public static void AdHitEnvironmentEffectEvent(PlayerEntity srcPlayer, Vector3 hitPoint, Vector3 offset,
                                                       EEnvironmentType environmentType, int hitAuidoId,
                                                       int chunkId = 0, bool needEffectEntity = true)
        {
            HitEnvironmentEvent e =
                (HitEnvironmentEvent)EventInfos.Instance.Allocate(EEventType.HitEnvironment, false);

            e.EnvironmentType = environmentType;
            e.Offset          = offset;
            e.HitAudioId      = hitAuidoId;
            e.HitPoint        = hitPoint.ShiftedToFixedVector3();
            e.ChunkId         = chunkId;

            e.needEffectEntity = needEffectEntity;

            srcPlayer.localEvents.Events.AddEvent(e);
        }
Beispiel #10
0
        public static EffectTypeInfo ToClientEfcInfo(this EEnvironmentType infoType)
        {
            EffectTypeInfo etype = new EffectTypeInfo();

            switch (infoType)
            {
            case EEnvironmentType.Wood:
                etype.DefaultId = EClientEffectDefaultIds.WoodHit;
                etype.AudioType = AudioGrp_HitMatType.Wood;
                break;

            case EEnvironmentType.Steel:
                etype.DefaultId = EClientEffectDefaultIds.SteelHit;
                etype.AudioType = AudioGrp_HitMatType.Metal;
                break;

            case EEnvironmentType.Soil:
                etype.DefaultId = EClientEffectDefaultIds.SoilHit;
                break;

            case EEnvironmentType.Stone:
                etype.DefaultId = EClientEffectDefaultIds.StoneHit;
                break;

            case EEnvironmentType.Glass:
                etype.DefaultId = EClientEffectDefaultIds.GlassHit;
                break;

            case EEnvironmentType.Water:
                etype.DefaultId = EClientEffectDefaultIds.WaterHit;
                etype.AudioType = AudioGrp_HitMatType.Water;

                break;

            default:
                etype.DefaultId = EClientEffectDefaultIds.DefaultHit;
                etype.AudioType = AudioGrp_HitMatType.Concrete;
                break;
            }

            return(etype);
        }
Beispiel #11
0
        public static AudioGrp_HitMatType ToAudioGrpHitMatType(this EEnvironmentType enviromentType)
        {
            switch (enviromentType)
            {
            case EEnvironmentType.Wood:
                return(AudioGrp_HitMatType.Wood);

            case EEnvironmentType.Glass:

            case EEnvironmentType.Stone:
            case EEnvironmentType.Concrete:
            case EEnvironmentType.Soil:
                return(AudioGrp_HitMatType.Concrete);

            case EEnvironmentType.Water:
                return(AudioGrp_HitMatType.Water);

            default:
                return(AudioGrp_HitMatType.Concrete);
            }
        }
        public static void CreateHitEnvironmentEffect(Vector3 hitPoint, Vector3 normal,
                                                      EEnvironmentType environmentType, int hitAudioId,
                                                      bool needEffectEntity, int chunkId, Transform parent = null)
        {
            EffectTypeInfo effectTypeInfo = environmentType.ToClientEfcInfo();

            if (needEffectEntity)
            {
                ClientEffectEmitter clientEffectObj =
                    LocalObjectGenerator.EffectLocal.GetClientEffectEmitter(EEffectObjectClassify.EnvHit);
                IEffectBehavior effectBehavior;
                if (chunkId > 0)
                {
                    var chunkBehavior = ObjectAllocatorHolder <ChunkEffectBehavior> .Allocate();

                    //ChunkEffectBehavior  b1 =ObjectAllocatorHolder<ChunkEffectBehavior>.Allocate();
                    chunkBehavior.Initialize(normal, hitPoint, (int)effectTypeInfo.AudioType, hitAudioId,
                                             AudioClientEffectType.WeaponEnvHit, chunkId, parent);
                    effectBehavior = chunkBehavior;
                }
                else
                {
                    var noramlEffect = ObjectAllocatorHolder <NormalEffectBehavior> .Allocate();

                    //NormalEffectBehavior b2 = ObjectAllocatorHolder<>.Allocate();
                    noramlEffect.Initialize(normal, hitPoint, (int)effectTypeInfo.AudioType, hitAudioId,
                                            AudioClientEffectType.WeaponEnvHit);
                    effectBehavior = noramlEffect;
                }
                clientEffectObj.Initialize((int)effectTypeInfo.DefaultId, effectBehavior);
            }
            else //应对于空手情况
            {
                GameAudioMedia.PlayHitEnvironmentAudio(effectTypeInfo.AudioType, hitAudioId, hitPoint);
            }
        }
Beispiel #13
0
 public void ReadBody(BinaryReader reader)
 {
     Offset          = FieldSerializeUtil.Deserialize(Offset, reader);
     HitPoint        = FieldSerializeUtil.Deserialize(HitPoint, reader);
     EnvironmentType = (EEnvironmentType)FieldSerializeUtil.Deserialize((byte)0, reader);
 }
Beispiel #14
0
        public static void AdHitEnvironmentEffectEvent(PlayerEntity srcPlayer, Vector3 hitPoint, Vector3 offset, EEnvironmentType environmentType)
        {
            HitEnvironmentEvent e = (HitEnvironmentEvent)EventInfos.Instance.Allocate(EEventType.HitEnvironment, false);

            e.EnvironmentType = environmentType;
            e.Offset          = offset;

            e.HitPoint = hitPoint;
            srcPlayer.localEvents.Events.AddEvent(e);
        }