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); } } }
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(); }
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; }