GameFramework.EntityController.TryInitImpactInfo C# (CSharp) Method

TryInitImpactInfo() private method

private TryInitImpactInfo ( ImpactInfo impactInfo, TableConfig cfg, int seq, int curObjId, int srcObjId, object>.Dictionary args ) : bool
impactInfo ImpactInfo
cfg TableConfig
seq int
curObjId int
srcObjId int
args object>.Dictionary
return bool
        private bool TryInitImpactInfo(ImpactInfo impactInfo, TableConfig.Skill cfg, int seq, int curObjId, int srcObjId, Dictionary<string, object> args)
        {
            bool ret = false;
            EntityInfo srcNpc = null;
            EntityViewModel srcView = GetEntityViewById(srcObjId);
            if (null != srcView && null != srcView.Entity) {
                srcNpc = srcView.Entity;
            }
            impactInfo.StartTime = TimeUtility.GetLocalMilliseconds();
            impactInfo.ImpactSenderId = srcObjId;
            if (cfg.type == (int)SkillOrImpactType.Skill) {
                impactInfo.SenderPosition = null != srcNpc ? srcNpc.GetMovementStateInfo().GetPosition3D() : ScriptRuntime.Vector3.Zero;
                impactInfo.SkillId = cfg.id;
                impactInfo.DurationTime = cfg.duration > 0 ? cfg.duration : impactInfo.ConfigData.duration;
                impactInfo.TargetType = cfg.targetType;
                impactInfo.DamageData.CopyFrom(cfg.damageData);
                impactInfo.DamageData.Merge(impactInfo.ConfigData.damageData);
                impactInfo.ImpactToTarget = cfg.impact;
                ret = true;
            } else {
                ImpactInfo srcImpactInfo = null;
                EntityViewModel myView = GetEntityViewById(curObjId);
                if (null != myView && null != myView.Entity) {
                    srcImpactInfo = myView.Entity.GetSkillStateInfo().GetImpactInfoBySeq(seq);
                }
                if (null != srcImpactInfo) {
                    //如果当前技能配置有数据则继承当前配置数据,否则继承源impact记录的数据。
                    impactInfo.SenderPosition = srcImpactInfo.SenderPosition;
                    impactInfo.SkillId = srcImpactInfo.SkillId;
                    impactInfo.DurationTime = srcImpactInfo.DurationTime > 0 ? srcImpactInfo.DurationTime : impactInfo.ConfigData.duration;
                    impactInfo.TargetType = srcImpactInfo.TargetType;
                    impactInfo.DamageData.CopyFrom(srcImpactInfo.DamageData);
                    impactInfo.DamageData.Merge(impactInfo.ConfigData.damageData);
                    impactInfo.ImpactToTarget = cfg.impact != 0 ? cfg.impact : srcImpactInfo.ImpactToTarget;
                    ret = true;
                }
            }
            return ret;
        }