protected override void OnUpdate() { EntityArray entities = RoleGroup.GetEntityArray(); var roleStateArray = RoleGroup.GetComponentArray <RoleState>(); var mainRoleGOE = RoleMgr.GetInstance().GetMainRole(); float3 mainRolePos = float3.zero; if (mainRoleGOE != null) { mainRolePos = m_world.GetEntityManager().GetComponentData <Position>(mainRoleGOE.Entity).Value; } for (int i = 0; i < roleStateArray.Length; i++) { var roleState = roleStateArray[i]; var entity = entities[i]; bool isNeedReqLooksInfo = false; bool isNeedHideLooks = false; //其它玩家离主角近时就要请求该玩家的角色外观信息 var curPos = m_world.GetEntityManager().GetComponentData <Position>(entity).Value; float distance = Vector3.Distance(curPos, mainRolePos); Debug.Log("distance : " + distance); if (!roleState.hasLooks) { isNeedReqLooksInfo = distance <= 400; // bool isMainRole = m_world.GetEntityManager().HasComponent(entity, typeof(UnityMMO.MainRoleTag)); // if (isMainRole) // { // isNeedReqLooksInfo = true; // } // else // { // //其它玩家离主角近时就要请求该玩家的角色外观信息 // var curPos = m_world.GetEntityManager().GetComponentData<Position>(entity).Value; // float distance = Vector3.Distance(curPos, mainRolePos); // Debug.Log("distance : "+distance); // isNeedReqLooksInfo = distance <= 200; // } } else { isNeedHideLooks = distance >= 300; } if (isNeedReqLooksInfo) { roleState.hasLooks = true; RoleLooksNetRequest.Create(PostUpdateCommands, roleState.roleUid, entity); } } }
protected override void OnUpdate() { var entities = RoleGroup.ToEntityArray(Allocator.TempJob); var uidArray = RoleGroup.ToComponentDataArray <UID>(Allocator.TempJob); var looksInfoArray = RoleGroup.ToComponentDataArray <LooksInfo>(Allocator.TempJob); var mainRoleGOE = RoleMgr.GetInstance().GetMainRole(); float3 mainRolePos = float3.zero; if (mainRoleGOE != null) { mainRolePos = m_world.GetEntityManager().GetComponentObject <Transform>(mainRoleGOE.Entity).localPosition; } for (int i = 0; i < looksInfoArray.Length; i++) { var uid = uidArray[i]; var looksInfo = looksInfoArray[i]; var entity = entities[i]; bool isNeedReqLooksInfo = false; bool isNeedHideLooks = false; //其它玩家离主角近时就要请求该玩家的角色外观信息 var curPos = m_world.GetEntityManager().GetComponentObject <Transform>(entity).localPosition; float distance = Vector3.Distance(curPos, mainRolePos); if (looksInfo.CurState == LooksInfo.State.None) { isNeedReqLooksInfo = distance <= 400; } else { isNeedHideLooks = distance >= 300; } // Debug.Log("isNeedReqLooksInfo : "+isNeedReqLooksInfo.ToString()+" looksInfo.CurState:"+looksInfo.CurState.ToString()); if (isNeedReqLooksInfo) { looksInfo.CurState = LooksInfo.State.Loading; // looksInfoArray[i] = looksInfo; EntityManager.SetComponentData <LooksInfo>(entities[i], looksInfo); RoleLooksNetRequest.Create(PostUpdateCommands, uid.Value, entity); } } entities.Dispose(); looksInfoArray.Dispose(); uidArray.Dispose(); }
protected override void OnUpdate() { EntityArray entities = RoleGroup.GetEntityArray(); var roleStateArray = RoleGroup.GetComponentArray <RoleState>(); var looksInfoArray = RoleGroup.GetComponentDataArray <LooksInfo>(); var mainRoleGOE = RoleMgr.GetInstance().GetMainRole(); float3 mainRolePos = float3.zero; if (mainRoleGOE != null) { mainRolePos = m_world.GetEntityManager().GetComponentObject <Transform>(mainRoleGOE.Entity).localPosition; } for (int i = 0; i < looksInfoArray.Length; i++) { var roleState = roleStateArray[i]; var looksInfo = looksInfoArray[i]; var entity = entities[i]; bool isNeedReqLooksInfo = false; bool isNeedHideLooks = false; //其它玩家离主角近时就要请求该玩家的角色外观信息 var curPos = m_world.GetEntityManager().GetComponentObject <Transform>(entity).localPosition; float distance = Vector3.Distance(curPos, mainRolePos); if (looksInfo.CurState == LooksInfo.State.None) { isNeedReqLooksInfo = distance <= 400; } else { isNeedHideLooks = distance >= 300; } // Debug.Log("isNeedReqLooksInfo : "+isNeedReqLooksInfo.ToString()+" looksInfo.CurState:"+looksInfo.CurState.ToString()); if (isNeedReqLooksInfo) { roleState.hasLooks = true; looksInfo.CurState = LooksInfo.State.Loading; looksInfoArray[i] = looksInfo; RoleLooksNetRequest.Create(PostUpdateCommands, roleState.roleUid, entity); } } }