/// <summary> /// draw a specific person /// </summary> /// <param name="personIndex">the person to draw</param> /// <param name="state">the person state</param> void DrawPerson(uint personIndex, PlayerSelection.PersonIDState state) { OmekFramework.Common.BasicTypes.SpaceTypes.Vector3 personPositionFrmk; BeckonData.Persons[personIndex].CenterOfMass3D.Get(out personPositionFrmk); Vector3 personPosition = UnityConverter.ToUnity(personPositionFrmk); Vector2 screenPosition = WorldToScreenProjection(personPosition); int playerRectHalfSize = m_personRectSize / 2; if (UnityPlayerColorThemes.Instance != null) { GUI.color = UnityPlayerColorThemes.Instance.GetPlayerColorTheme((int)personIndex).m_radar; } else { GUI.color = BeckonManager.BeckonInstance.PersonProperties.GetPropertyOfPerson <Color32>(personIndex, m_radarColors, UnityPlayerManagement.IndexingScheme); } Rect playerRect = new Rect(screenPosition.x - playerRectHalfSize, screenPosition.y - playerRectHalfSize, m_personRectSize, m_personRectSize); if (m_personTexture != null) { GUI.DrawTexture(playerRect, m_personTexture, ScaleMode.ScaleToFit, true); } else { GUI.Label(playerRect, "", m_playerRectStyle); } }
/// <summary> /// check is a person should be drawn /// </summary> /// <param name="personIndex">the person index</param> /// <param name="state">the person state</param> /// <returns>true iff the person should be drawn</returns> bool ShouldDrawPerson(uint personIndex, PlayerSelection.PersonIDState state) { if (state == PlayerSelection.PersonIDState.NonPlayer && m_showNonPlayers == true) { return(true); } else if (m_personsToShow == null || m_personsToShow.Count == 0 || m_personsToShow.Contains((int)personIndex)) { return(true); } return(false); }
/// <summary> /// set Material and color according to person type /// </summary> /// <param name="playerMaskParam">contianig the playermask data</param> private void UpdatePlayerMaskState(PlayerMaskParams playerMaskParam) { PlayerSelection.PersonIDState state = BeckonManager.BeckonInstance.PlayerSelection.GetPersonIDState((int)playerMaskParam.personIndex); //State state = GetPersonState(playerMaskParam.personIndex); if (state != playerMaskParam.state) { playerMaskParam.state = state; if (playerMaskParam.playerMaskObj.renderer != null) { switch (state) { case PlayerSelection.PersonIDState.NonPlayer: if (m_nonPlayerMaterial != null) { playerMaskParam.playerMaskObj.renderer.material = m_nonPlayerMaterial; } break; case PlayerSelection.PersonIDState.Player: if (m_playerMaterial != null) { playerMaskParam.playerMaskObj.renderer.material = m_playerMaterial; } break; case PlayerSelection.PersonIDState.PointerControllingPlayer: if (m_cursorControlingPlayerMaterial != null) { playerMaskParam.playerMaskObj.renderer.material = m_cursorControlingPlayerMaterial; } break; } } } Color32 colorAssignment; if (UnityPlayerColorThemes.Instance != null) { colorAssignment = UnityPlayerColorThemes.Instance.GetPlayerColorTheme((int)playerMaskParam.personIndex).m_mask; } else { colorAssignment = BeckonManager.BeckonInstance.PersonProperties.GetPropertyOfPerson <Color32>(playerMaskParam.personIndex, m_maskColors, UnityPlayerManagement.IndexingScheme); } if (playerMaskParam.playerMask != null) { playerMaskParam.playerMask.maskColor = colorAssignment; } else { playerMaskParam.OnGUIPlayerMask.maskColor = colorAssignment; } if (playerMaskParam.playerMaskObj.renderer != null && m_TintPlayerMasksColors) { playerMaskParam.playerMaskObj.renderer.material.color = colorAssignment; } }