//Protobuffer从MemoryStream进行反序列化
    public bool FromMemoryStream(MemoryStream protoMS)
    {
        ActionCommandInfoV1 pb = ProtoBuf.Serializer.Deserialize <ActionCommandInfoV1>(protoMS);

        FromPB(pb);
        return(true);
    }
 //从Protobuffer类型初始化
 public void FromPB(ActionCommandInfoV1 v)
 {
     if (v == null)
     {
         return;
     }
     m_CommandType  = v.CommandType;
     m_StartTime    = v.StartTime;
     m_DurationTime = v.DurationTime;
     m_AnimationTriggerCondition = v.AnimationTriggerCondition;
     m_EffectName     = v.EffectName;
     m_EffectBoneHook = v.EffectBoneHook;
     m_EffectPositionOffset.FromPB(v.EffectPositionOffset);
     m_EffectStayInLocalSpace = v.EffectStayInLocalSpace;
     m_EffectControlObjectId  = v.EffectControlObjectId;
     m_TranslateControlId     = v.TranslateControlId;
     m_TranslateOffset.FromPB(v.TranslateOffset);
     m_ActorAttackPart.Clear();
     for (int i = 0; i < v.ActorAttackPart.Count; i++)
     {
         m_ActorAttackPart.Add(v.ActorAttackPart[i]);
     }
     m_TranslateEase               = v.TranslateEase;
     m_AttackShowHitEffect         = v.AttackShowHitEffect;
     m_AttackHitEffectName         = v.AttackHitEffectName;
     m_AttackHitEffectDuration     = v.AttackHitEffectDuration;
     m_AttackFragmentCount         = v.AttackFragmentCount;
     m_AttackFragmentIntervalTime  = v.AttackFragmentIntervalTime;
     m_AttackDamageRadio           = v.AttackDamageRadio;
     m_BuffSelfActive              = v.BuffSelfActive;
     m_BuffTargetActive            = v.BuffTargetActive;
     m_AttackBehaviourBackDistance = v.AttackBehaviourBackDistance;
     m_AttackBehaviourAirHeight    = v.AttackBehaviourAirHeight;
     m_EffectRotationOffset.FromPB(v.EffectRotationOffset);
     m_FlashControlObjectId     = v.FlashControlObjectId;
     m_AttackStiffTime          = v.AttackStiffTime;
     m_AttackShake              = v.AttackShake;
     m_AttackFlash              = v.AttackFlash;
     m_AttackBehaviourBackSpeed = v.AttackBehaviourBackSpeed;
     m_AttackBehaviourAirSpeed  = v.AttackBehaviourAirSpeed;
     m_AttackBehaviourBack      = v.AttackBehaviourBack;
     m_AttackBehaviourAir       = v.AttackBehaviourAir;
     m_AttackBehaviourZoom      = v.AttackBehaviourZoom;
     m_SoundName                  = v.SoundName;
     m_Trigger                    = v.Trigger;
     m_TriggerIndex               = v.TriggerIndex;
     m_AttackHitDummy             = v.AttackHitDummy;
     m_AttackHitSound             = v.AttackHitSound;
     m_HitShakeCameraXRange       = v.HitShakeCameraXRange;
     m_HitShakeCameraYRange       = v.HitShakeCameraYRange;
     m_HitShakeCameraCount        = v.HitShakeCameraCount;
     m_HitShakeCameraDurationTime = v.HitShakeCameraDurationTime;
     m_HiddenWeaponMode           = v.HiddenWeaponMode;
     m_NextActionName             = v.NextActionName;
     m_TranslateWrapMode          = v.TranslateWrapMode;
     m_IsTriggerSecondAttack      = v.IsTriggerSecondAttack;
     m_IsHitGround                = v.IsHitGround;
     m_SkillActionName            = v.SkillActionName;
     m_WarningRes1                = v.WarningRes1;
     m_WarningRes2                = v.WarningRes2;
     m_WarningMaxScale.FromPB(v.WarningMaxScale);
     m_WarningScaleMode = v.WarningScaleMode;
     m_WarningLockAxle  = v.WarningLockAxle;
     m_WarningPositionOffset.FromPB(v.WarningPositionOffset);
     m_IsEffectFollow  = v.IsEffectFollow;
     m_IsWarningTarget = v.IsWarningTarget;
     m_AttackBehaviourAirDurationTime = v.AttackBehaviourAirDurationTime;
     m_IsColliderDestroy       = v.IsColliderDestroy;
     m_IsAttackRangeFollow     = v.IsAttackRangeFollow;
     m_IsAnimationLoop         = v.IsAnimationLoop;
     m_TranslateAngle          = v.TranslateAngle;
     m_IsAttackRangeShade      = v.IsAttackRangeShade;
     m_AttackInterval          = v.AttackInterval;
     m_IsShowAttackRect        = v.IsShowAttackRect;
     m_EffectBulletLaunchAngle = v.EffectBulletLaunchAngle;
     m_EffectBulletSpeed       = v.EffectBulletSpeed;
     m_EffectBulletLaunchTimeIntervalRange.FromPB(v.EffectBulletLaunchTimeIntervalRange);
     m_EffectBulletMaxCout = v.EffectBulletMaxCout;
     m_EffectBulletLifeTimeInteralRange.FromPB(v.EffectBulletLifeTimeInteralRange);
     m_EffectBulletType = v.EffectBulletType;
     m_EffectBulletInitPosList.Clear();
     for (int i = 0; i < v.EffectBulletInitPosList.Count; i++)
     {
         m_EffectBulletInitPosList.Add(new ActionV3WraperV1());
     }
     for (int i = 0; i < v.EffectBulletInitPosList.Count; i++)
     {
         m_EffectBulletInitPosList[i].FromPB(v.EffectBulletInitPosList[i]);
     }
     m_EffectBulletLaunchMaxCount  = v.EffectBulletLaunchMaxCount;
     m_EffectBulletIsFollow        = v.EffectBulletIsFollow;
     m_AttackBehaviourAirDownSpeed = v.AttackBehaviourAirDownSpeed;
     m_EffectDirectionLockType     = v.EffectDirectionLockType;
     m_IsIrregularityEffect        = v.IsIrregularityEffect;
     m_EffectSize.FromPB(v.EffectSize);
     m_AttackRangePostion.FromPB(v.AttackRangePostion);
     m_AttackRangeSize.FromPB(v.AttackRangeSize);
     m_AttackShape = v.AttackShape;
     m_AttackCircleOrigin.FromPB(v.AttackCircleOrigin);
     m_AttackCircleRadius = v.AttackCircleRadius;
     m_AttackCircleAngle  = v.AttackCircleAngle;
 }
    //转化成Protobuffer类型函数
    public ActionCommandInfoV1 ToPB()
    {
        ActionCommandInfoV1 v = new ActionCommandInfoV1();

        v.CommandType  = m_CommandType;
        v.StartTime    = m_StartTime;
        v.DurationTime = m_DurationTime;
        v.AnimationTriggerCondition = m_AnimationTriggerCondition;
        v.EffectName             = m_EffectName;
        v.EffectBoneHook         = m_EffectBoneHook;
        v.EffectPositionOffset   = m_EffectPositionOffset.ToPB();
        v.EffectStayInLocalSpace = m_EffectStayInLocalSpace;
        v.EffectControlObjectId  = m_EffectControlObjectId;
        v.TranslateControlId     = m_TranslateControlId;
        v.TranslateOffset        = m_TranslateOffset.ToPB();
        for (int i = 0; i < (int)m_ActorAttackPart.Count; i++)
        {
            v.ActorAttackPart.Add(m_ActorAttackPart[i]);
        }
        v.TranslateEase               = m_TranslateEase;
        v.AttackShowHitEffect         = m_AttackShowHitEffect;
        v.AttackHitEffectName         = m_AttackHitEffectName;
        v.AttackHitEffectDuration     = m_AttackHitEffectDuration;
        v.AttackFragmentCount         = m_AttackFragmentCount;
        v.AttackFragmentIntervalTime  = m_AttackFragmentIntervalTime;
        v.AttackDamageRadio           = m_AttackDamageRadio;
        v.BuffSelfActive              = m_BuffSelfActive;
        v.BuffTargetActive            = m_BuffTargetActive;
        v.AttackBehaviourBackDistance = m_AttackBehaviourBackDistance;
        v.AttackBehaviourAirHeight    = m_AttackBehaviourAirHeight;
        v.EffectRotationOffset        = m_EffectRotationOffset.ToPB();
        v.FlashControlObjectId        = m_FlashControlObjectId;
        v.AttackStiffTime             = m_AttackStiffTime;
        v.AttackShake = m_AttackShake;
        v.AttackFlash = m_AttackFlash;
        v.AttackBehaviourBackSpeed = m_AttackBehaviourBackSpeed;
        v.AttackBehaviourAirSpeed  = m_AttackBehaviourAirSpeed;
        v.AttackBehaviourBack      = m_AttackBehaviourBack;
        v.AttackBehaviourAir       = m_AttackBehaviourAir;
        v.AttackBehaviourZoom      = m_AttackBehaviourZoom;
        v.SoundName                           = m_SoundName;
        v.Trigger                             = m_Trigger;
        v.TriggerIndex                        = m_TriggerIndex;
        v.AttackHitDummy                      = m_AttackHitDummy;
        v.AttackHitSound                      = m_AttackHitSound;
        v.HitShakeCameraXRange                = m_HitShakeCameraXRange;
        v.HitShakeCameraYRange                = m_HitShakeCameraYRange;
        v.HitShakeCameraCount                 = m_HitShakeCameraCount;
        v.HitShakeCameraDurationTime          = m_HitShakeCameraDurationTime;
        v.HiddenWeaponMode                    = m_HiddenWeaponMode;
        v.NextActionName                      = m_NextActionName;
        v.TranslateWrapMode                   = m_TranslateWrapMode;
        v.IsTriggerSecondAttack               = m_IsTriggerSecondAttack;
        v.IsHitGround                         = m_IsHitGround;
        v.SkillActionName                     = m_SkillActionName;
        v.WarningRes1                         = m_WarningRes1;
        v.WarningRes2                         = m_WarningRes2;
        v.WarningMaxScale                     = m_WarningMaxScale.ToPB();
        v.WarningScaleMode                    = m_WarningScaleMode;
        v.WarningLockAxle                     = m_WarningLockAxle;
        v.WarningPositionOffset               = m_WarningPositionOffset.ToPB();
        v.IsEffectFollow                      = m_IsEffectFollow;
        v.IsWarningTarget                     = m_IsWarningTarget;
        v.AttackBehaviourAirDurationTime      = m_AttackBehaviourAirDurationTime;
        v.IsColliderDestroy                   = m_IsColliderDestroy;
        v.IsAttackRangeFollow                 = m_IsAttackRangeFollow;
        v.IsAnimationLoop                     = m_IsAnimationLoop;
        v.TranslateAngle                      = m_TranslateAngle;
        v.IsAttackRangeShade                  = m_IsAttackRangeShade;
        v.AttackInterval                      = m_AttackInterval;
        v.IsShowAttackRect                    = m_IsShowAttackRect;
        v.EffectBulletLaunchAngle             = m_EffectBulletLaunchAngle;
        v.EffectBulletSpeed                   = m_EffectBulletSpeed;
        v.EffectBulletLaunchTimeIntervalRange = m_EffectBulletLaunchTimeIntervalRange.ToPB();
        v.EffectBulletMaxCout                 = m_EffectBulletMaxCout;
        v.EffectBulletLifeTimeInteralRange    = m_EffectBulletLifeTimeInteralRange.ToPB();
        v.EffectBulletType                    = m_EffectBulletType;
        for (int i = 0; i < (int)m_EffectBulletInitPosList.Count; i++)
        {
            v.EffectBulletInitPosList.Add(m_EffectBulletInitPosList[i].ToPB());
        }
        v.EffectBulletLaunchMaxCount  = m_EffectBulletLaunchMaxCount;
        v.EffectBulletIsFollow        = m_EffectBulletIsFollow;
        v.AttackBehaviourAirDownSpeed = m_AttackBehaviourAirDownSpeed;
        v.EffectDirectionLockType     = m_EffectDirectionLockType;
        v.IsIrregularityEffect        = m_IsIrregularityEffect;
        v.EffectSize         = m_EffectSize.ToPB();
        v.AttackRangePostion = m_AttackRangePostion.ToPB();
        v.AttackRangeSize    = m_AttackRangeSize.ToPB();
        v.AttackShape        = m_AttackShape;
        v.AttackCircleOrigin = m_AttackCircleOrigin.ToPB();
        v.AttackCircleRadius = m_AttackCircleRadius;
        v.AttackCircleAngle  = m_AttackCircleAngle;

        return(v);
    }