protected void setShowBloodColor(bool bIsHaveTower, U3D_Render.EntityView ev) { Int32 uID = ev.ID; if (bIsHaveTower) { if (dicMonsterBlood.ContainsKey(ev) && !dicMonsterBlood[ev]) { return; } //GfxBloodManager.SetBloodColor(uID, false); USpeedUI.Blood.UBloodManager.Instance.ChangeBloodColor(uID, false); dicMonsterBlood[ev] = false; } else { if (dicMonsterBlood.ContainsKey(ev) && dicMonsterBlood[ev]) { return; } //GfxBloodManager.SetBloodColor(uID, true); USpeedUI.Blood.UBloodManager.Instance.ChangeBloodColor(uID, true); dicMonsterBlood[ev] = true; } return; }
private void SwitchBossBloodTarget(U3D_Render.EntityView target) { if (target != null && target.gameObject) { bossBloodTarget = target.gameObject.transform; } }
/// <summary> /// 切换观察当前距离最近的可见英雄 /// </summary> private void SwitchNearbyViewHero() { if (SoldierCamera.MainInstance().CurrentCamera == null) { return; } ICollection <int> entityList = DataCenter.LogicDataCenter.warOBDataManager.GetCurMainCampPlayerList(); Transform camTrans = SoldierCamera.MainInstance().CurrentCamera.transform; float nearbyDis = float.MaxValue; U3D_Render.EntityView nearbyEv = null; foreach (int evID in entityList) { U3D_Render.EntityView ev = EntityFactory.getEntityViewByID(evID); if (U3D_Render.EntityView.isNullOrEmpty(ev) || ev.gameObject == null) { continue; } float dis = Vector3.SqrMagnitude(ev.gameObject.transform.position - camTrans.position); if (Mathf.Abs(dis) < nearbyDis) { nearbyDis = dis; nearbyEv = ev; } } ViewTargetHero(nearbyEv); }
private void CameraDeadHandler(bool enabled, CameraStateParam stateParam) { if (enabled) { if (isSurvivalMode) { HandleModeForceSwitch(CameraMode.UserControl); } else { HandleModeForceSwitch(CameraMode.DeadControl); } } else { if (EntityFactory.MainHeroView != null) { this.soldier = EntityFactory.MainHeroView; if (SwitchLookAtSoliderEvent != null) { SwitchLookAtSoliderEvent(EntityFactory.MainHeroView); } NormalFocusPosCheckTime = NormalFocusPosMaxCheckTime + 1; //旧的死亡模式 } RefreshCameraMode(); } }
// 移动对象 public bool moveObject(ref U3D_Render.EntityView ev, UnityEngine.Vector3 loc, UnityEngine.Vector3 newloc) { int oldIndex = loc2index(loc); int newIndex = loc2index(newloc); if (oldIndex < 0 || newIndex < 0) { return(false); } if (oldIndex != newIndex) { if (!index2node(oldIndex).removeObject(ref ev)) { return(false); } GridNode pNode = index2node(newIndex); if (pNode == null) { return(false); } pNode.insertObject(ref ev); return(true); } return(true); }
//响应Mask消息 public void ResponseEntityMaskPropEvent(EntityNumPropEventArgs e) { if (e.data.nPropID == (int)ENTITY_PROPERTY.PROPERTY_MASK) { U3D_Render.EntityView ev = e.objev; if (ev != null) { //GfxBloodManager.ChangeMask(ev); USpeedUI.Blood.UBloodManager.Instance.ChangeMask(ev); //TopNameManager.ChangeMask(ev); } } //处理死亡 if (e.data.nPropID == (int)ENTITY_PROPERTY.PROPERTY_HP) { if (null == e.objev) { return; } int CurHp = e.objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_HP); if (CurHp <= 0) { //e.objev.StateMachine.ChangeState((int)EntityState.Dead, IntPtr.Zero); } } }
// 获取主角阵营英雄列表(包含主角) public static U3D_Render.EntityView geNextPlayer(bool isNext = true) { if (m_friendPlayerList != null && m_friendPlayerList.Count > 0) { if (isNext) { m_PlayerListIndex++; } else { m_PlayerListIndex--; } if (m_PlayerListIndex < 0) { m_PlayerListIndex = m_friendPlayerList.Count; } m_PlayerListIndex = m_PlayerListIndex % (m_friendPlayerList.Count + 1); if (m_PlayerListIndex == 0) { return(MainHeroView); } else { uint id = m_friendPlayerList[m_PlayerListIndex - 1]; U3D_Render.EntityView attachev = EntityFactory.getEntityViewByID((int)id); if (attachev != null && attachev.CampFlag == CampFlag.CampFlag_Friend && attachev.gameObject && attachev.gameObject.transform && attachev.StateMachine != null && attachev.StateMachine.GetState() != EntityState.Dead && attachev.StateMachine.GetState() != EntityState.Floating) { return(attachev); } } } return(null); }
public static U3D_Render.EntityView getFriendPlayer(bool getNext) { if (getNext) { m_friendPlayerListIndex++; } for (int i = 0; i < m_friendPlayerList.Count; i++) { int index = (m_friendPlayerListIndex + i) % m_friendPlayerList.Count; uint id = m_friendPlayerList[index]; U3D_Render.EntityView attachev = EntityFactory.getEntityViewByID((int)id); if (attachev != null && attachev.gameObject && attachev.gameObject.transform && attachev.StateMachine != null && attachev.StateMachine.GetState() != EntityState.Dead && attachev.StateMachine.GetState() != EntityState.Floating) { m_friendPlayerListIndex = index; return(attachev); } } //切到英雄自己 if (EntityFactory.MainHeroView != null && EntityFactory.MainHeroView.gameObject != null) { m_friendPlayerListIndex = 0; return(EntityFactory.MainHeroView); } return(null); }
public static void setHeroProperty(U3D_Render.EntityView objev) { int heroID = objev.ID; int nMaxHp = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MAX_HP); int nCurHp = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_HP); int nTempHp = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SHIELD); int nLevel = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_LEVEL); int nCamp = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_CAMP); EntityView objMaster = EntityFactory.getPlayerViewByID(EntityFactory.MainHeroID); int nMainHeroCamp = (objMaster != null ? objMaster.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_CAMP) : 0); if (nCamp == nMainHeroCamp) { nCamp = 2; } else { nCamp = 3; } SetCamType(heroID, nCamp); SetMaxValue(heroID, nMaxHp); SetCurValue(heroID, nCurHp); SetLevel(heroID, nLevel); SetTempValue(heroID, nTempHp); //设置血量数字信息 string bloodInfo = nCurHp + "/" + nMaxHp; SetBloodInfo(heroID, bloodInfo); }
public void OnPlayerItemClick(PlayerCombatData item) { U3D_Render.EntityView ev = EntityFactory.getEntityViewByID(item.nEntityID); if (ev == null) { return; } CurrentPlayer = item; BottomView.ResetView(); SetNumPromps(ev); SetSpellData(); SetPersonBuyGoodsInfo(); RestoreAllSpellCD(); // 切换镜头 SoldierCamera.MainInstance <SoldierCamera>().SwitchOBSoliderTarget(ev); #if ENABLE_YUNYING_MODE SoldierCamera.MainInstance <SoldierCamera>().EnterOB_yunying(CameraMode.YUNYING_OBHeroLock); #else SoldierCamera.MainInstance <SoldierCamera>().EnableOBMode(true); #endif }
private static void RefershQuadTreeNode() { U3D_Render.EntityView heroView = EntityFactory.getMainPlayer(); if (null == heroView) { return; } if (!heroView.StateMachine) { return; } Vector3 pos = heroView.StateMachine.transform.position; Vector2 pos2D = Vector2.zero; Vector2 Dir2D = Vector2.zero; pos2D.x = pos.x; pos2D.y = pos.z; GenerateActiveQuadParent(quadTreeRoot, 0.0f, pos2D, Vector2.zero, CellSize, ref ActiveLeafList, ref ActiveParent, ref unUsedLeafList, ref unUsedParent); ActiveLeafList.Sort(CompareFunc); //GetActiveNode(ref ActiveLeafList); int currShowCount = GetActiveNodeCount(ActiveLeafList); currShowCount = Mathf.Min(currSkinShowCount, currShowCount); for (int i = 0; i < currShowCount; i++) { U3D_Render.SkinCtrl.EntitySkinControl instance = ActiveLeafList[i]; if (!instance || !instance.isActiveAndEnabled) { continue; } instance.OnNotCull(); } for (int i = currShowCount; i < ActiveLeafList.Count; i++) { U3D_Render.SkinCtrl.EntitySkinControl instance = ActiveLeafList[i]; if (!instance || !instance.isActiveAndEnabled) { continue; } instance.OnCull(); } foreach (U3D_Render.SkinCtrl.EntitySkinControl instance in unUsedLeafList) { if (!instance || !instance.isActiveAndEnabled) { continue; } instance.OnCull(); } }
/// <summary> /// 创建一个头顶名称 /// </summary> /// <param name="entry">实体</param> /// <param name="entryId">实体ID</param> /// <param name="text">内容</param> /// <param name="col">颜色</param> /// <returns></returns> public static TopName CreateTopName(GameObject entry, int entryId, string text, Color col) { if (SFGFxMovieManager.Instance == null) { Trace.LogError("SFGFxMovieManager没有初始化,请不要在Awake或Start中创建!"); return(null); } if (!bInit) { Trace.LogError("GfxLableManager必须初始化!"); return(null); } //有可能TopNameMovie还没有创建完成. if (TopNameMovie.Instance == null) { //Trace.LogError("TopNameMovie尚未创建完成,请等待创建完成后再调用。"); return(null); } if (m_TopNameMap.ContainsKey(entryId)) { Trace.LogWarning(entryId + "已经有头顶名,返回已有的实例"); return(m_TopNameMap[entryId]); } U3D_Render.EntityView objev = EntityFactory.getEntityViewByID(entryId); if (!objev.IsValid) { Trace.LogWarning("实体视图无效!id=" + entryId); return(null); } ENTITY_TYPE entityType = objev.Type; MovieNode trs = new MovieNode(); TopName t = GetTopName(ref trs); if (t == null) { return(t); } t.Init(entry, entryId, text, col); t.CreateBillBorad(); t.ChangeMovieNode(trs); m_TopNameMap.Add(entryId, t); index++; ChangeMask(EntityFactory.getEntityViewByID(entryId), true); //if (!go) //{ // go = GameObject.CreatePrimitive(PrimitiveType.Plane); // go.renderer.material.SetTexture("_MainTex", TopNameMovie.TopNameRenderTexture); //} return(t); }
public static bool Play(ref U3D_Render.EntityView ev, int effectID, cmd_creature_skillview cmdInfo) { //光效开关 if (!Initialize.Instance || !OptimitzedControlPlane.Instance.EnabledLightingEffect) { return(true); } LightEffectParam param = new LightEffectParam(); param.nFeedbackID = cmdInfo.nFeedBackID; param.bIsHero = ev.IsHero; param.nSrcEntityID = ev.ID; param.nTargetEntityID = cmdInfo.nTargetEntityID; param.srcObject = ev.gameObject; param.nCreatorSide = cmdInfo.nCreatorSide; if (cmdInfo.nSrcEntityID > 0) { param.nSrcEntityID = cmdInfo.nSrcEntityID; param.srcObject = EntityFactory.getEntityGameObjectByID(cmdInfo.nSrcEntityID); } param.fDistance = cmdInfo.fDistance; param.fAttackRange = cmdInfo.fAttackRange; param.speed = cmdInfo.fPASD; if (cmdInfo.nTargetEntityID != 0) { param.targetObject = EntityFactory.getEntityGameObjectByID(cmdInfo.nTargetEntityID); } param.targetPos = new Vector3(cmdInfo.fTargetPos_x, cmdInfo.fTargetPos_y, cmdInfo.fTargetPos_z); if (cmdInfo.bFlyToTargetPos != 0) { param.nEffectFlag |= (int)LightEffectParam.EFFECT_FLAG.FlyToTargetPos; } param.sourcePos = new Vector3(cmdInfo.fSrcPos_x, cmdInfo.fSrcPos_y, cmdInfo.fSrcPos_z); if (cmdInfo.bFromSrcPos != 0) { param.nEffectFlag |= (int)LightEffectParam.EFFECT_FLAG.CustomSourcePos; } LightingEffectManager manager = ev.LightingEffectManager; if (manager == null) { return(false); } // 开始光效 manager.AddLighting(effectID, param); // 输出光效信息 if (manager.showLog) { Trace.Log("Add Lighting" + effectID + ". Entity Id=" + ev.ID + " SrcID=" + param.nSrcEntityID); Trace.Log("TargetID=" + cmdInfo.nTargetEntityID + ". TargetPos=(" + cmdInfo.fTargetPos_x + "," + cmdInfo.fTargetPos_y + "," + cmdInfo.fTargetPos_z + ")."); } return(true); }
public void SwitchLookAtOBSolider(bool isNext) { U3D_Render.EntityView newSoldier = EntityFactory.geNextPlayer(isNext); if (newSoldier != null) //主角死的时候才会切换 { this.soldier = newSoldier; } }
/// <summary> /// Mask-不移动 /// </summary> /// <param name="ev"></param> private void Mask_Not_Move(U3D_Render.EntityView ev) { int mas = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MASK); int flag = (int)ENTITY_MASKFLAG.MASKFLAG_NOT_MOVE; bNotMove = (mas & flag) == flag; }
/// <summary> /// Mask--转向 /// </summary> /// <param name="ev"></param> private void Mask_Turn(U3D_Render.EntityView ev) { int mas = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MASK); int flag = (int)ENTITY_MASKFLAG.MASKFLAG_NOT_TURN; bNotTurnWhenAttackMask = (mas & flag) == flag; }
private void ResetData() { m_MaxValue = 100; m_CurValue = 100; m_TempValue = 0; m_MpValue = 100; m_MpMaxValue = 100; m_CamType = 0; m_Level = 0; m_RoleName = ""; m_StyleInfo = null; m_Entity = null; m_Sequence = null; m_BloodType = BloodStyleType.Player; m_bDead = false; m_bVisible = true; m_bEnable = true; m_IsOutOfVisibleDistance = false; m_IsClosed = false; m_FinalVisible = true; if (null != m_BloodImg) { m_BloodImg.fillAmount = 1; } if (null != m_BloodTempImg) { m_BloodTempImg.fillAmount = 0; } if (null != m_BloodShieldImg) { m_BloodShieldImg.fillAmount = 0; } if (null != m_MpImg) { m_MpImg.fillAmount = 1; } if (null != m_RoleNameTex) { m_RoleNameTex.text = ""; } if (null != m_LevelTex) { m_LevelTex.text = ""; } if (null != m_BloodNumTex) { m_BloodNumTex.text = ""; } foreach (UBlood_DebuffProgressBar bar in DebuffList) { bar.Clear(); } }
/// <summary> /// Mask--可见性 /// </summary> /// <param name="ev"></param> /// <param name="bUseInitMask">使用初始化时候的Mask</param> /// <returns></returns> private void Mask_Visible(U3D_Render.EntityView ev, bool bUseInitMask = false) { int mas = 0; if (bUseInitMask) { mas = ev.InitMaskFlag; } else { mas = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MASK); if (!bFirstVisibleMask) { bFirstVisibleMask = true; return; } } bool bHideFriend = (mas & (int)ENTITY_MASKFLAG.MASKFLAG_HIDE_FRIEND) == (int)ENTITY_MASKFLAG.MASKFLAG_HIDE_FRIEND; bool bHideEnemy = (mas & (int)ENTITY_MASKFLAG.MASKFLAG_HIDE_ENEMY) == (int)ENTITY_MASKFLAG.MASKFLAG_HIDE_ENEMY; //两者都不隐藏 if (!bHideFriend && !bHideEnemy) { // setAlpha(1.0f); m_MaskVisible = true; } //对友方隐藏 else if (bHideFriend && !bHideEnemy) { if (ev.CampFlag == SPELL.CampFlag.CampFlag_Friend || ev.CampFlag == SPELL.CampFlag.CampFlag_Self) { //setAlpha(0.5f); m_MaskVisible = false; } } //对非友方隐藏 else if (!bHideFriend && bHideEnemy) { if (ev.CampFlag != SPELL.CampFlag.CampFlag_Friend && ev.CampFlag != SPELL.CampFlag.CampFlag_Self) { //setAlpha(0.5f); m_MaskVisible = false; } } //对两者都隐藏 else { //setAlpha(1.0f); m_MaskVisible = false; } UpdateVisible(); }
// 移动对象 public static bool MoveObject(ref U3D_Render.EntityView ev, UnityEngine.Vector3 newloc) { if (m_finder == null) { return(false); } return(m_finder.MoveObject(ref ev, newloc)); }
internal void insertObject(ref U3D_Render.EntityView ev) { UID id = ev.ID; m_allObjList[id] = ev; m_campObjList[getCampIndex(ev.CampFlag)][id] = ev; ++nChildCount; }
protected int getMonsterSchemeId() { U3D_Render.EntityView ev = EntityFactory.getEntityViewByID(this.m_ID); if (ev == null) { return(0); } return(ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_VOCATION)); }
/// <summary> /// 观察指定英雄 /// </summary> /// <param name="entityID">实体ID</param> public void ViewTargetHero(int entityID) { U3D_Render.EntityView ev = EntityFactory.getEntityViewByID(entityID); if (!DataCenter.LogicDataCenter.warOBDataManager.CheckEntityViewVisible(ev)) { return; } ViewTargetHero(ev); }
private bool isCanCreateEffect_OnView(int entityID) { U3D_Render.EntityView ev = EntityFactory.getEntityViewByID(entityID); if (U3D_Render.EntityView.isNullOrEmpty(ev)) { return(false); } return(ev.StateMachine.m_OnViewVisible); }
public int getMonsterSubType() { U3D_Render.EntityView ev = EntityFactory.getEntityViewByID(this.m_ID); if (ev == null) { return(0); } return(ev.Flag); }
private bool isCanCreateEffect_Single(int effectID, int entityID, bool bIgnore, LightEffectParam param) { if (!isValid) { return(false); } /*主要是看同一个物体上是不是会有同一个光效,如果有同一个光效,就重新播放一次*/ Dictionary <int, List <LightingEffectBehavior> > tables = null; //已经有这个ID了 if (m_EntityBindEffectHostID.TryGetValue(entityID, out tables)) { List <LightingEffectBehavior> effect = null; //这个光效已经有了 if (tables.TryGetValue(effectID, out effect)) { //如果这个配置,忽略这个单一光效优化 if (bIgnore) { U3D_Render.EntityView ev = EntityFactory.getEntityViewByID(entityID); if (null != ev) { //如果是玩家,则优化有效,如果是怪物,则继续跳过 if (ev.Type == ENTITY_TYPE.TYPE_PLAYER_ROLE) { return(true); } } } if (effect != null) { while (true) { if (effect.Count <= 0) { break; } if (effect[0] != null) { if (effect[0].RePlay(param)) { return(false); } } effect.RemoveAt(0); } } return(true); } return(true); } return(true); }
void OnSelectedTarget(int entityID) { m_entityID = entityID; m_entityView = EntityFactory.getEntityViewByID(entityID); m_BillBoard.gameObject.SetActive(true); transform.gameObject.name = "SelectedTargetTips:" + entityID; CurrentHeightOffset = minHeightOffset; CurrentSpeedAcclect = SpeedAcclect; CurrentSpeed = floatSpeed; bUp = true; }
/// <summary> /// 一般更新 /// </summary> private static void NormalUpdate() { InvalidList.Clear(); if (null != m_BloodMap) { foreach (GfxBlood var in m_BloodMap.Values) { GfxBlood gba = var; U3D_Render.EntityView view = EntityFactory.getEntityViewByID(gba.ID); if (view == null) { InvalidList.Enqueue(gba); continue; } if (!gba.Entry) { InvalidList.Enqueue(gba); continue; } if (!gba.Entry.activeSelf || !view.StateMachine.GetVisible())//实体没有被激活或者不可见 { if (gba.GetEnable()) { gba.SetEnable(false); } } else//正常的实体 { if (!gba.GetEnable()) { gba.SetEnable(true); } gba.OnUpdate(); } } } while (InvalidList.Count > 0) { //移除无效的Blood节点 GfxBlood b = InvalidList.Dequeue(); if (OptimitzedControlPlane.Instance.EnityCreateOptimize) { CacheBlood(b); } else { GfxBloodManager.Destroy(b); } } InvalidList.Clear(); }
// 移除对象 public static bool RemoveObject(ref U3D_Render.EntityView ev) { if (m_finder == null) { return(false); } bool bFlag = m_finder.RemoveObject(ref ev); return(bFlag); }
// 移除对象 public bool removeObject(ref U3D_Render.EntityView ev, UnityEngine.Vector3 loc) { GridNode pNode = index2node(loc2index(loc)); if (pNode != null) { return(pNode.removeObject(ref ev)); } return(false); }
public static bool CheckDistance(U3D_Render.EntityView from, U3D_Render.EntityView to, int distance) { if (from == null || to == null || from.gameObject == null || to.gameObject == null) { return(false); } float maxDistance = (float)(distance * distance); float diff = (from.gameObject.transform.position - to.gameObject.transform.position).sqrMagnitude; return(diff <= maxDistance); }