private void UpdateEffectTargetPos(SImpactEffect pImpactEffect)
 {
     if (pImpactEffect == null)
     {
         return;
     }
     if (pImpactEffect.IsLineEffect())
     {
         uint uEffect = pImpactEffect.GetEffect();
         if (uEffect != 0 && m_Character.GetRenderInterface() != null && pImpactEffect.GetCreatorID() != MacroDefine.INVALID_ID)
         {
             CObject_Character pCreator = (CObject_Character)(CObjectManager.Instance.FindServerObject((int)pImpactEffect.GetCreatorID()));
             if (pCreator != null)
             {
                 Vector3 fvPos = Vector3.zero;
                 if (pCreator.GetRenderInterface() != null && pImpactEffect.GetCreatorLocator().Length > 0)
                 {
                     pCreator.GetRenderInterface().GetLocator(pImpactEffect.GetCreatorLocator(), ref fvPos);
                 }
                 else
                 {
                     fvPos = pCreator.GetPosition();
                 }
                 m_Character.GetRenderInterface().SetEffectExtraTransformInfos(uEffect, ref fvPos);
             }
         }
     }
 }
    //// 没用到 public void RemoveLogicEvent(int nLogicCount)
    ////{
    ////    _LOGIC_EVENT pLogicEvent;
    ////    for (int i = 0; i < m_listLogicEvent.Count; i++)
    ////    {
    ////        pLogicEvent = m_listLogicEvent[i];
    ////        if (pLogicEvent.m_nSenderLogicCount == nLogicCount)
    ////        {
    ////            m_listLogicEvent.RemoveAt(i);
    ////            break;
    ////        }
    ////    }
    ////}

    private void DoLogicEvent_Bullet(_LOGIC_EVENT pLogicEvent)
    {
        if (pLogicEvent != null)
        {
            _LOGIC_EVENT_BULLET pBulletInfo = pLogicEvent.m_bullet;
            CObject             pSender     = CObjectManager.Instance.FindServerObject((int)pLogicEvent.m_nSenderID);
            if (pSender != null)
            {
                UnityEngine.Vector3 fvSenderPos      = new UnityEngine.Vector3();
                UnityEngine.Vector3 fvSenderRot      = UnityEngine.Vector3.zero;
                CObject_Character   pCharacterSender = (CObject_Character)pSender;
                fvSenderPos    = pSender.GetPosition();
                fvSenderPos.y += 1.0f;                //temp code
                fvSenderRot.y  = pSender.GetFaceDir();
                if (pCharacterSender != null)
                {
                    if (pBulletInfo.m_pszSenderLocator.Length > 0 &&
                        pCharacterSender.GetRenderInterface() != null)
                    {
                        pCharacterSender.GetRenderInterface().GetLocator(pBulletInfo.m_pszSenderLocator, ref fvSenderPos);
                    }
                }

                SObject_BulletInit initBullet = new SObject_BulletInit();
                initBullet.m_fvPos           = fvSenderPos;
                initBullet.m_fvRot           = fvSenderRot;
                initBullet.m_idSend          = pLogicEvent.m_nSenderID;
                initBullet.m_nSendLogicCount = pLogicEvent.m_nSenderLogicCount;
                initBullet.m_nBulletID       = pBulletInfo.m_nBulletID;
                initBullet.m_bSingleTarget   = pBulletInfo.m_bHitTargetObj;
                if (pBulletInfo.m_bHitTargetObj)
                {
                    initBullet.m_fvTargetPos = new Vector3(-1.0f, -1.0f, -1.0f);
                    initBullet.m_idTarget    = (int)pBulletInfo.m_nTargetID;
                }
                else
                {
                    initBullet.m_fvTargetPos.x = pBulletInfo.m_fTargetX;
                    initBullet.m_fvTargetPos.z = pBulletInfo.m_fTargetZ;
                    initBullet.m_fvTargetPos.y = GFX.GfxUtility.getSceneHeight(pBulletInfo.m_fTargetX, pBulletInfo.m_fTargetZ);
                }

                CObject_Bullet pBullet = CObjectManager.Instance.NewBullet(-1);
                pBullet.Initial(initBullet);
            }
        }
    }
Exemplo n.º 3
0
    public void ChangeAction(int nSetID, float fSpeed, bool bLoop, float fFuseParam)
    {
        string lpszCharActionName = "";

        if (GetRenderInterface() != null)
        {
            lpszCharActionName = GetCharActionNameByActionSetID(nSetID);
            if (lpszCharActionName == null || lpszCharActionName.Length == 0)
            {
                return;
            }
        }

        m_nCurrentAnimationIndex = nSetID;

        if (GetRenderInterface() != null)
        {
            GetRenderInterface().EnterSkill(true, lpszCharActionName, bLoop, fFuseParam);
            GetRenderInterface().ChangeActionRate(fSpeed);
        }

        int i;

        for (i = 0; i < m_nPassengerCount; i++)
        {
            if (m_abPassengerAttacheds[i])
            {
                CObject_Character pObj = CObjectManager.Instance.FindServerObject((int)m_anPassengerIDs[i]) as CObject_Character;
                if (pObj != null && pObj.GetRenderInterface() != null)
                {
                    //pObj->Bus_ChangeAction(nSetID, fSpeed, bLoop, fFuseParam);
                    pObj.ChangeAction(nSetID, fSpeed, bLoop, fFuseParam);
                }
            }
        }
    }
 public void RemoveAllImpact()
 {
     foreach (SImpactEffect pImpactEffect in m_mapImpactEffect.Values)
     {
         uint uEffect = pImpactEffect.GetEffect();
         if (uEffect != 0 && m_Character.GetRenderInterface() != null)
         {
             m_Character.GetRenderInterface().DelEffect(uEffect);
         }
     }
     m_mapImpactEffect.Clear();
 }
Exemplo n.º 5
0
    public override void Initial(object pInit)
    {
        base.Initial(pInit);
        SObject_BulletInit pBulletInit = (SObject_BulletInit)(pInit);

        if (pBulletInit != null)
        {
            m_idSend = pBulletInit.m_idSend;
            if (pBulletInit.m_nBulletID != -1)
            {
                m_pBulletData = CDataBaseSystem.Instance.GetDataBase <_DBC_BULLET_DATA>((int)DataBaseStruct.DBC_BULLET_DATA).Search_Index_EQU((int)pBulletInit.m_nBulletID);
            }
            else
            {
                m_pBulletData = null;
            }
            m_nSendLogicCount = pBulletInit.m_nSendLogicCount;
            m_bSingleTarget   = pBulletInit.m_bSingleTarget;
            m_idTarget        = pBulletInit.m_idTarget;
            m_fvTargetPos     = pBulletInit.m_fvTargetPos;
        }
        else
        {
            m_idSend          = MacroDefine.UINT_MAX;
            m_pBulletData     = null;
            m_nSendLogicCount = -1;

            m_bSingleTarget = false;
            m_idTarget      = MacroDefine.INVALID_ID;
            m_fvTargetPos   = new Vector3(-1.0f, -1.0f, -1.0f);
        }

        if (m_pBulletData != null)
        {
            switch ((ENUM_BULLET_CONTRAIL_TYPE)m_pBulletData.m_nContrailType)
            {
            case ENUM_BULLET_CONTRAIL_TYPE.BULLET_CONTRAIL_TYPE_BEELINE:
            case ENUM_BULLET_CONTRAIL_TYPE.BULLET_CONTRAIL_TYPE_PARABOLA:
            {
                m_fvStartPos = GetPosition();
                if (m_pBulletData.m_szFlyEffect.Length != 0)
                {
                    ChangEffect(m_pBulletData.m_szFlyEffect, false);
                }
            }
            break;

            case ENUM_BULLET_CONTRAIL_TYPE.BULLET_CONTRAIL_TYPE_NONE:
            default:
            {
                //[无轨迹子弹击中效果需要由m_idTarget计算得来 2012/4/18 ZZY]
                //m_fvStartPos = m_fvTargetPos;
                if (m_idTarget != MacroDefine.INVALID_ID)
                {
                    CObject_Character character = (CObject_Character)CObjectManager.Instance.FindServerObject(m_idTarget);
                    if (character != null && character.GetRenderInterface() != null)
                    {
                        character.GetRenderInterface().GetLocator(m_pBulletData.m_szHitEffectLocator, ref m_fvStartPos);
                    }
                }
                else
                {
                    m_fvStartPos = m_fvTargetPos;
                }
                SetPosition(m_fvStartPos);
            }
            break;
            }
        }
        else
        {
            m_fvStartPos = GetPosition();
        }

        m_fStartToEndDist = (m_fvTargetPos - m_fvStartPos).magnitude;
        m_bAlreadyHit     = false;
    }