public void PlayEffectAudio(ClientEffectEmitter emitter, Vector3 Position) { switch (audioClientEffectType) { case AudioClientEffectType.WeaponEnvHit: GameAudioMedia.PlayHitEnvironmentAudio((AudioGrp_HitMatType)AudioClientEffectArg1, AudioClientEffectArg2, emitter.nodeObject.AudioMono); // AudioEntry.Logger.Info("Real Play Time:" +(_playerContext.flagSelfEntity.time.ClientTime - GlobalConst.BeforeAttackTime)); break; case AudioClientEffectType.WeaponPlayerHit: GameAudioMedia.PlayHitPlayerAudio((EBodyPart)AudioClientEffectArg1, AudioClientEffectArg2, Position); break; case AudioClientEffectType.BulletDrop: GameAudioMedia.PlayBulletDropAudio(AudioClientEffectArg1, (AudioGrp_FootMatType)AudioClientEffectArg2, Position); break; case AudioClientEffectType.ThrowExplosion: GameAudioMedia.PlayEventAudio(AudioClientEffectArg1, Position); break; } }
protected override void Free(ClientEffectEmitter emitter) { if (Parent) { emitter.nodeObject.transform.SetParent(emitter.PoolFolder); } }
public override void PlayEffect(ClientEffectEmitter emitter, GameObject effectGo) { this.effectGo = effectGo; emitter.nodeObject.transform.SetPositionAndRotation(CurrPosition, InitRocatioin); effectGo.SetActive(false); ShowEffectTime = MyGameTime.time + DelayDuration; }
protected override void Free(ClientEffectEmitter emitter) { if (Parent) { emitter.nodeObject.transform.SetParent(emitter.PoolFolder); } ObjectAllocatorHolder <ChunkEffectBehavior> .Free(this); ChunkEffectBehaviors.Remove(this); }
public override void PlayEffect(ClientEffectEmitter emitter, GameObject effectGo) { effectGo.SetActive(true); if (Parent) { emitter.nodeObject.transform.SetParent(Parent); } AudioData.PlayEffectAudio(emitter, Position); SetPosition(emitter); }
protected override void SetPosition(ClientEffectEmitter emitter) { if (Parent) { emitter.nodeObject.transform.forward = Parent.forward; emitter.nodeObject.transform.localPosition = new Vector3(0, 0, 0.05f); } else { emitter.nodeObject.transform.SetPositionAndRotation(Position, Quaternion.Euler(0, Yaw, 0)); } }
public override void FrameUpdate(ClientEffectEmitter emitter) { var nowTime = MyGameTime.time;; var interval = nowTime - lastUpdateTime; if (effectGo && ShowEffectTime <= nowTime) { effectGo.SetActive(true); effectGo = null; } // O(1) = O(0) + V(0) * t; CurrPosition.x = CurrPosition.x + Velocity.x * interval; CurrPosition.y = CurrPosition.y + Velocity.y * interval; CurrPosition.z = CurrPosition.z + Velocity.z * interval; emitter.nodeObject.transform.position = CurrPosition; emitter.nodeObject.transform.rotation = Quaternion.LookRotation(Velocity); // DebugUtil.MyLog("UpdatePos:{0},{1}",CurrPosition,interval.ToString("f3")); lastUpdateTime = nowTime; }
protected override void SetPosition(ClientEffectEmitter emitter) { emitter.nodeObject.transform.position = Position; }
protected override void Free(ClientEffectEmitter emitter) { base.Free(emitter); ObjectAllocatorHolder <HitPlayerEffectBehavior> .Free(this); }
protected abstract void SetPosition(ClientEffectEmitter emitter);
protected override void SetPosition(ClientEffectEmitter emitter) { emitter.nodeObject.transform.SetPositionAndRotation(Position + GlobalConst.offset * Normal, Quaternion.FromToRotation(Vector3.forward, Normal)); }
// public static object Allocate(EEffectBehaviorType eftType) // { // return Get(eftType).Allocate(); // } // // private static IObjectAllocator Get(EEffectBehaviorType eftType) // { // var allocator = Allocators[(byte) eftType]; // if (allocator == null) // { // allocator = ObjectAllocators.GetAllocator(effectBehaviorTypes[eftType]); // Allocators[(byte) eftType] = allocator; // } // // return allocator; // } // // public static void Free(EEffectBehaviorType eftType, IEffectBehavior effectBehavior) // { // Get(eftType).Free(effectBehavior); // } protected abstract void Free(ClientEffectEmitter emitter);
public virtual void PlayEffect(ClientEffectEmitter emitter, GameObject effectGo) { }
public virtual void Recycle(ClientEffectEmitter emitter) { emitter.nodeObject.transform.position = Vector3.zero; Free(emitter); }
// protected static readonly IObjectAllocator[] // Allocators = new IObjectAllocator[(byte) EEffectBehaviorType.Count]; // // protected static readonly Dictionary<EEffectBehaviorType, Type> effectBehaviorTypes = // new Dictionary<EEffectBehaviorType, Type> // { // {EEffectBehaviorType.HitPlayerEffect, typeof(HitPlayerEffectBehavior)}, // {EEffectBehaviorType.MovableEffect, typeof(MoveEffectBehavior)}, // {EEffectBehaviorType.ChunkedEffect, typeof(ChunkEffectBehavior)}, // {EEffectBehaviorType.NormalEffect, typeof(NormalEffectBehavior)}, // {EEffectBehaviorType.YawEffect, typeof(YawEffectBehavior)} // }; public virtual void FrameUpdate(ClientEffectEmitter emitter) { }
protected override void Free(ClientEffectEmitter emitter) { ObjectAllocatorHolder <MoveEffectBehavior> .Free(this); }