< Summary

Class:DCL.MapRenderer
Assembly:MapRenderer
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/MapRenderer/MapRenderer.cs
Covered lines:97
Uncovered lines:125
Coverable lines:222
Total lines:501
Line coverage:43.6% (97 of 222)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
MapRenderer()0%110100%
Awake()0%110100%
Initialize()0%220100%
EnsurePools()0%3.043083.33%
SetParcelHighlightActive(...)0%2100%
GetParcelHighlightTransform()0%110100%
SetOtherPlayersIconActive(...)0%6200%
SetPlayerIconActive(...)0%2100%
SetHighlighSize(...)0%2100%
SetHighlightStyle(...)0%2100%
OnDestroy()0%110100%
Cleanup()0%550100%
CleanLandsHighlights()0%2.152066.67%
ClearLandHighlightsInfo()0%110100%
SelectLand(...)0%12300%
HighlightLands(...)0%42600%
CreateHighlightParcel(...)0%2100%
Update()0%3.192033.33%
UpdateCursorMapCoords()0%6200%
IsCursorOverMapChunk()0%6200%
UpdateParcelHighlight()0%90900%
UpdateParcelHold()0%12300%
OnKernelConfigChanged(...)0%2100%
CoordinatesAreInsideTheWorld(...)0%12300%
MapRenderer_OnSceneInfoUpdated(...)0%10.0410092.86%
SetPointOfInterestActive(...)0%6200%
IsEmptyParcel(...)0%220100%
OnOtherPlayersAdded(...)0%2100%
OnOtherPlayerRemoved(...)0%6200%
ConfigureUserIcon(...)0%2100%
OnCharacterMove(...)0%2.152066.67%
OnCharacterRotate(...)0%2100%
OnCharacterSetPosition(...)0%6200%
UpdateRendering(...)0%2100%
UpdateBackgroundLayer(...)0%2100%
UpdateSelectionLayer()0%2100%
UpdateOverlayLayer()0%2100%
ClickMousePositionParcel()0%6200%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/MapRenderer/MapRenderer.cs

#LineLine coverage
 1using DCL.Helpers;
 2using System.Collections.Generic;
 3using UnityEngine;
 4using UnityEngine.UI;
 5using UnityEngine.EventSystems;
 6using TMPro;
 7using KernelConfigurationTypes;
 8using Object = UnityEngine.Object;
 9
 10namespace DCL
 11{
 12    public class MapRenderer : MonoBehaviour
 13    {
 14        const int LEFT_BORDER_PARCELS = 25;
 15        const int RIGHT_BORDER_PARCELS = 31;
 16        const int TOP_BORDER_PARCELS = 31;
 17        const int BOTTOM_BORDER_PARCELS = 25;
 18        const int WORLDMAP_WIDTH_IN_PARCELS = 300;
 19        const string MINIMAP_USER_ICONS_POOL_NAME = "MinimapUserIconsPool";
 20        const int MINIMAP_USER_ICONS_MAX_PREWARM = 30;
 21        private const int MAX_CURSOR_PARCEL_DISTANCE = 40;
 22        private const int MAX_SCENE_CHARACTER_TITLE = 29;
 23        private const string EMPTY_PARCEL_NAME = "Empty parcel";
 24        private int NAVMAP_CHUNK_LAYER;
 25
 62926        public static MapRenderer i { get; private set; }
 27
 1328        [SerializeField] private float parcelHightlightScale = 1.25f;
 29        [SerializeField] private Button ParcelHighlightButton;
 30        [SerializeField] private MapParcelHighlight highlight;
 31        [SerializeField] private Image parcelHighlightImage;
 32        [SerializeField] private Image parcelHighlighImagePrefab;
 33        [SerializeField] private Image parcelHighlighWithContentImagePrefab;
 34        [SerializeField] private Image selectParcelHighlighImagePrefab;
 35
 2636        private Vector3Variable playerWorldPosition => CommonScriptableObjects.playerWorldPosition;
 2637        private Vector3Variable playerRotation => CommonScriptableObjects.cameraForward;
 1338        private List<RaycastResult> uiRaycastResults = new List<RaycastResult>();
 1339        private PointerEventData uiRaycastPointerEventData = new PointerEventData(EventSystem.current);
 40
 41        [HideInInspector] public Vector2Int cursorMapCoords;
 1342        [HideInInspector] public bool showCursorCoords = true;
 043        public Vector3 playerGridPosition => Utils.WorldToGridPositionUnclamped(playerWorldPosition.Get());
 44        public MapAtlas atlas;
 45        public TextMeshProUGUI highlightedParcelText;
 46        public Transform overlayContainer;
 47        public Transform overlayContainerPlayers;
 48        public Transform globalUserMarkerContainer;
 49        public RectTransform playerPositionIcon;
 50
 51        public static System.Action<int, int> OnParcelClicked;
 52        public static System.Action OnCursorFarFromParcel;
 53
 1354        public float scaleFactor = 1f;
 55
 56        // Used as a reference of the coordinates origin in-map and as a parcel width/height reference
 57        public RectTransform centeredReferenceParcel;
 58
 59        public MapSceneIcon scenesOfInterestIconPrefab;
 60        public GameObject userIconPrefab;
 61        public UserMarkerObject globalUserMarkerPrefab;
 62
 063        public MapGlobalUsersPositionMarkerController usersPositionMarkerController { private set; get; }
 64
 1365        private HashSet<MinimapMetadata.MinimapSceneInfo> scenesOfInterest = new HashSet<MinimapMetadata.MinimapSceneInf
 1366        private Dictionary<MinimapMetadata.MinimapSceneInfo, GameObject> scenesOfInterestMarkers = new Dictionary<Minima
 1367        private Dictionary<string, PoolableObject> usersInfoMarkers = new Dictionary<string, PoolableObject>();
 68
 69        private Vector2Int lastClickedCursorMapCoords;
 70        private Pool usersInfoPool;
 71
 72        private bool parcelHighlightEnabledValue = false;
 1373        private bool otherPlayersIconsEnabled = true;
 74
 1375        List<WorldRange> validWorldRanges = new List<WorldRange>
 76        {
 77            new WorldRange(-150, -150, 150, 150) // default range
 78        };
 79
 80        public bool parcelHighlightEnabled
 81        {
 82            set
 83            {
 084                parcelHighlightEnabledValue = value;
 085                parcelHighlightImage.gameObject.SetActive(parcelHighlightEnabledValue);
 086            }
 087            get { return parcelHighlightEnabledValue; }
 88        }
 89
 5290        private BaseDictionary<string, Player> otherPlayers => DataStore.i.player.otherPlayers;
 1391        private Dictionary<Vector2Int, Image> highlightedLands = new Dictionary<Vector2Int, Image>();
 1392        private List<Vector2Int> ownedLandsWithContent = new List<Vector2Int>();
 1393        private List<Vector2Int> ownedEmptyLands = new List<Vector2Int>();
 94        private Vector2Int lastSelectedLand;
 95
 96        private bool isInitialized = false;
 97
 98        [HideInInspector]
 99        public event System.Action<float, float> OnMovedParcelCursor;
 100
 101        private void Awake()
 102        {
 11103            i = this;
 11104            Initialize();
 11105        }
 106
 107        public void Initialize()
 108        {
 13109            if (isInitialized)
 2110                return;
 111
 11112            isInitialized = true;
 11113            EnsurePools();
 11114            atlas.InitializeChunks();
 11115            NAVMAP_CHUNK_LAYER = LayerMask.NameToLayer("NavmapChunk");
 116
 11117            MinimapMetadata.GetMetadata().OnSceneInfoUpdated += MapRenderer_OnSceneInfoUpdated;
 11118            otherPlayers.OnAdded += OnOtherPlayersAdded;
 11119            otherPlayers.OnRemoved += OnOtherPlayerRemoved;
 120
 11121            ParcelHighlightButton.onClick.AddListener(ClickMousePositionParcel);
 122
 11123            playerWorldPosition.OnChange += OnCharacterMove;
 11124            playerRotation.OnChange += OnCharacterRotate;
 125
 11126            highlight.SetScale(parcelHightlightScale);
 127
 11128            usersPositionMarkerController = new MapGlobalUsersPositionMarkerController(globalUserMarkerPrefab,
 129                globalUserMarkerContainer,
 130                MapUtils.CoordsToPosition);
 131
 11132            usersPositionMarkerController.SetUpdateMode(MapGlobalUsersPositionMarkerController.UpdateMode.BACKGROUND);
 133
 11134            KernelConfig.i.OnChange += OnKernelConfigChanged;
 11135        }
 136
 137        private void EnsurePools()
 138        {
 11139            usersInfoPool = PoolManager.i.GetPool(MINIMAP_USER_ICONS_POOL_NAME);
 140
 11141            if (usersInfoPool == null)
 142            {
 11143                usersInfoPool = PoolManager.i.AddPool(
 144                    MINIMAP_USER_ICONS_POOL_NAME,
 145                    Instantiate(userIconPrefab.gameObject, overlayContainerPlayers.transform),
 146                    maxPrewarmCount: MINIMAP_USER_ICONS_MAX_PREWARM,
 147                    isPersistent: true);
 148
 11149                if (!Configuration.EnvironmentSettings.RUNNING_TESTS)
 0150                    usersInfoPool.ForcePrewarm();
 151            }
 11152        }
 153
 0154        public void SetParcelHighlightActive(bool isAtive) => parcelHighlightImage.enabled = isAtive;
 155
 2156        public Vector3 GetParcelHighlightTransform() => parcelHighlightImage.transform.position;
 157
 158        public void SetOtherPlayersIconActive(bool isActive)
 159        {
 0160            otherPlayersIconsEnabled = isActive;
 161
 0162            foreach (PoolableObject poolableObject in usersInfoMarkers.Values)
 163            {
 0164                poolableObject.gameObject.SetActive(isActive);
 165            }
 0166        }
 167
 0168        public void SetPlayerIconActive(bool isActive) => playerPositionIcon.gameObject.SetActive(isActive);
 169
 0170        public void SetHighlighSize(Vector2Int size) { highlight.ChangeHighlighSize(size); }
 171
 0172        public void SetHighlightStyle(MapParcelHighlight.HighlighStyle style) { highlight.SetStyle(style); }
 173
 22174        public void OnDestroy() { Cleanup(); }
 175
 176        public void Cleanup()
 177        {
 15178            if (atlas != null)
 13179                atlas.Cleanup();
 180
 34181            foreach (var kvp in scenesOfInterestMarkers)
 182            {
 2183                if (kvp.Value != null)
 2184                    Destroy(kvp.Value);
 185            }
 186
 15187            CleanLandsHighlights();
 15188            ClearLandHighlightsInfo();
 189
 15190            scenesOfInterestMarkers.Clear();
 191
 15192            playerWorldPosition.OnChange -= OnCharacterMove;
 15193            playerRotation.OnChange -= OnCharacterRotate;
 15194            MinimapMetadata.GetMetadata().OnSceneInfoUpdated -= MapRenderer_OnSceneInfoUpdated;
 15195            otherPlayers.OnAdded -= OnOtherPlayersAdded;
 15196            otherPlayers.OnRemoved -= OnOtherPlayerRemoved;
 197
 15198            ParcelHighlightButton.onClick.RemoveListener(ClickMousePositionParcel);
 199
 15200            usersPositionMarkerController?.Dispose();
 201
 15202            KernelConfig.i.OnChange -= OnKernelConfigChanged;
 203
 15204            isInitialized = false;
 15205        }
 206
 207        public void CleanLandsHighlights()
 208        {
 30209            foreach (KeyValuePair<Vector2Int, Image> kvp in highlightedLands)
 210            {
 0211                Destroy(kvp.Value.gameObject);
 212            }
 213
 15214            highlightedLands.Clear (); //To Clear out the dictionary
 15215        }
 216
 217        public void ClearLandHighlightsInfo()
 218        {
 15219            ownedLandsWithContent.Clear (); //To Clear out the content lands
 15220            ownedEmptyLands.Clear (); //To Clear out the empty content
 15221        }
 222
 223        public void SelectLand(Vector2Int coordsToSelect, Vector2Int size )
 224        {
 0225            if (highlightedLands.ContainsKey(lastSelectedLand))
 226            {
 0227                Destroy(highlightedLands[lastSelectedLand].gameObject);
 0228                highlightedLands.Remove(lastSelectedLand);
 229            }
 230
 0231            HighlightLands(ownedEmptyLands, ownedLandsWithContent);
 232
 0233            if (highlightedLands.ContainsKey(coordsToSelect))
 234            {
 0235                Destroy(highlightedLands[coordsToSelect].gameObject);
 0236                highlightedLands.Remove(coordsToSelect);
 237            }
 238
 0239            CreateHighlightParcel(selectParcelHighlighImagePrefab, coordsToSelect, size);
 0240            lastSelectedLand = coordsToSelect;
 0241        }
 242
 243        public void HighlightLands(List<Vector2Int> landsToHighlight, List<Vector2Int> landsToHighlightWithContent)
 244        {
 0245            CleanLandsHighlights();
 246
 0247            foreach (Vector2Int coords in landsToHighlight)
 248            {
 0249                if (highlightedLands.ContainsKey(coords))
 250                    continue;
 251
 0252                CreateHighlightParcel(parcelHighlighImagePrefab, coords, Vector2Int.one);
 253            }
 254
 0255            foreach (Vector2Int coords in landsToHighlightWithContent)
 256            {
 0257                if (highlightedLands.ContainsKey(coords))
 258                    continue;
 259
 0260                if (!ownedLandsWithContent.Contains(coords))
 0261                    ownedLandsWithContent.Add(coords);
 0262                CreateHighlightParcel(parcelHighlighWithContentImagePrefab, coords, Vector2Int.one);
 263            }
 264
 0265            ownedEmptyLands = landsToHighlight;
 0266            ownedLandsWithContent = landsToHighlightWithContent;
 0267        }
 268
 269        private void CreateHighlightParcel(Image prefab, Vector2Int coords, Vector2Int size)
 270        {
 0271            var highlightItem = Instantiate(prefab, overlayContainer, true).GetComponent<Image>();
 0272            highlightItem.rectTransform.localScale = new Vector3(parcelHightlightScale * size.x, parcelHightlightScale *
 0273            highlightItem.rectTransform.SetAsLastSibling();
 0274            highlightItem.rectTransform.anchoredPosition = MapUtils.CoordsToPosition(coords);
 0275            highlightedLands.Add(coords, highlightItem);
 0276        }
 277
 278        void Update()
 279        {
 9280            if (!parcelHighlightEnabled)
 9281                return;
 282
 0283            UpdateCursorMapCoords();
 284
 0285            UpdateParcelHighlight();
 286
 0287            UpdateParcelHold();
 0288        }
 289
 290        void UpdateCursorMapCoords()
 291        {
 0292            if (!IsCursorOverMapChunk())
 0293                return;
 294
 295            const int OFFSET = -60; //Map is a bit off centered, we need to adjust it a little.
 0296            RectTransformUtility.ScreenPointToLocalPointInRectangle(atlas.chunksParent, Input.mousePosition, DataStore.i
 0297            mapPoint -= Vector2.one * OFFSET;
 0298            mapPoint -= (atlas.chunksParent.sizeDelta / 2f);
 0299            cursorMapCoords = Vector2Int.RoundToInt(mapPoint / MapUtils.PARCEL_SIZE);
 0300        }
 301
 302        bool IsCursorOverMapChunk()
 303        {
 0304            uiRaycastPointerEventData.position = Input.mousePosition;
 0305            EventSystem.current.RaycastAll(uiRaycastPointerEventData, uiRaycastResults);
 306
 0307            return uiRaycastResults.Count > 0 && uiRaycastResults[0].gameObject.layer == NAVMAP_CHUNK_LAYER;
 308        }
 309
 310        void UpdateParcelHighlight()
 311        {
 0312            if (!CoordinatesAreInsideTheWorld((int)cursorMapCoords.x, (int)cursorMapCoords.y))
 313            {
 0314                if (parcelHighlightImage.gameObject.activeSelf)
 0315                    parcelHighlightImage.gameObject.SetActive(false);
 316
 0317                return;
 318            }
 319
 0320            if (!parcelHighlightImage.gameObject.activeSelf)
 0321                parcelHighlightImage.gameObject.SetActive(true);
 322
 0323            string previousText = highlightedParcelText.text;
 0324            parcelHighlightImage.rectTransform.SetAsLastSibling();
 0325            parcelHighlightImage.rectTransform.anchoredPosition = MapUtils.CoordsToPosition(cursorMapCoords);
 0326            highlightedParcelText.text = showCursorCoords ? $"{cursorMapCoords.x}, {cursorMapCoords.y}" : string.Empty;
 327
 0328            if (highlightedParcelText.text != previousText && !Input.GetMouseButton(0))
 329            {
 0330                OnMovedParcelCursor?.Invoke(cursorMapCoords.x, cursorMapCoords.y);
 331            }
 332
 333            // ----------------------------------------------------
 334            // TODO: Use sceneInfo to highlight whole scene parcels and populate scenes hover info on navmap once we can
 335            // var sceneInfo = mapMetadata.GetSceneInfo(cursorMapCoords.x, cursorMapCoords.y);
 0336        }
 337
 338        void UpdateParcelHold()
 339        {
 0340            if (Vector2.Distance(lastClickedCursorMapCoords, cursorMapCoords) > MAX_CURSOR_PARCEL_DISTANCE / (scaleFacto
 341            {
 0342                OnCursorFarFromParcel?.Invoke();
 343            }
 0344        }
 345
 0346        private void OnKernelConfigChanged(KernelConfigModel current, KernelConfigModel previous) { validWorldRanges = c
 347
 348        bool CoordinatesAreInsideTheWorld(int xCoord, int yCoord)
 349        {
 0350            foreach (WorldRange worldRange in validWorldRanges)
 351            {
 0352                if (worldRange.Contains(xCoord, yCoord))
 353                {
 0354                    return true;
 355                }
 356            }
 0357            return false;
 0358        }
 359
 360        private void MapRenderer_OnSceneInfoUpdated(MinimapMetadata.MinimapSceneInfo sceneInfo)
 361        {
 4362            if (!sceneInfo.isPOI)
 2363                return;
 364
 2365            if (scenesOfInterest.Contains(sceneInfo))
 0366                return;
 367
 2368            if (IsEmptyParcel(sceneInfo))
 0369                return;
 370
 2371            scenesOfInterest.Add(sceneInfo);
 372
 2373            GameObject go = Object.Instantiate(scenesOfInterestIconPrefab.gameObject, overlayContainer.transform);
 374
 2375            Vector2 centerTile = Vector2.zero;
 376
 20377            foreach (var parcel in sceneInfo.parcels)
 378            {
 8379                centerTile += parcel;
 380            }
 381
 2382            centerTile /= (float)sceneInfo.parcels.Count;
 2383            float distance = float.PositiveInfinity;
 2384            Vector2 centerParcel = Vector2.zero;
 20385            foreach (var parcel in sceneInfo.parcels)
 386            {
 8387                if (Vector2.Distance(centerTile, parcel) < distance)
 388                {
 5389                    distance = Vector2.Distance(centerParcel, parcel);
 5390                    centerParcel = parcel;
 391                }
 392
 393            }
 394
 2395            (go.transform as RectTransform).anchoredPosition = MapUtils.CoordsToPosition(centerParcel);
 396
 2397            MapSceneIcon icon = go.GetComponent<MapSceneIcon>();
 398
 2399            if (icon.title != null)
 2400                icon.title.text = sceneInfo.name.Length > MAX_SCENE_CHARACTER_TITLE ? sceneInfo.name.Substring(0, MAX_SC
 401
 2402            scenesOfInterestMarkers.Add(sceneInfo, go);
 2403        }
 404
 405        public void SetPointOfInterestActive(bool areActive)
 406        {
 0407            foreach (GameObject pointOfInterestGameObject in scenesOfInterestMarkers.Values)
 408            {
 0409                pointOfInterestGameObject.SetActive(areActive);
 410            }
 0411        }
 412
 413        private bool IsEmptyParcel(MinimapMetadata.MinimapSceneInfo sceneInfo)
 414        {
 2415            return (sceneInfo.name != null && sceneInfo.name.Equals(EMPTY_PARCEL_NAME));
 416        }
 417
 418        private void OnOtherPlayersAdded(string userId, Player player)
 419        {
 0420            var poolable = usersInfoPool.Get();
 0421            var marker = poolable.gameObject.GetComponent<MapUserIcon>();
 0422            marker.gameObject.name = $"UserIcon-{player.name}";
 0423            marker.gameObject.transform.SetParent(overlayContainerPlayers.transform, true);
 0424            marker.Populate(player);
 0425            marker.gameObject.SetActive(otherPlayersIconsEnabled);
 0426            marker.transform.localScale = Vector3.one;
 0427            usersInfoMarkers.Add(userId, poolable);
 0428        }
 429
 430        private void OnOtherPlayerRemoved(string userId, Player player)
 431        {
 0432            if (!usersInfoMarkers.TryGetValue(userId, out PoolableObject go))
 433            {
 0434                return;
 435            }
 436
 0437            usersInfoPool.Release(go);
 0438            usersInfoMarkers.Remove(userId);
 0439        }
 440
 441        private void ConfigureUserIcon(GameObject iconGO, Vector3 pos)
 442        {
 0443            var gridPosition = Utils.WorldToGridPositionUnclamped(pos);
 0444            iconGO.transform.localPosition = MapUtils.CoordsToPosition(Vector2Int.RoundToInt(gridPosition));
 0445        }
 446
 447        private void OnCharacterMove(Vector3 current, Vector3 previous)
 448        {
 11449            current.y = 0;
 11450            previous.y = 0;
 451
 11452            if (Vector3.Distance(current, previous) < 0.1f)
 11453                return;
 454
 0455            UpdateRendering(Utils.WorldToGridPositionUnclamped(current));
 0456        }
 457
 0458        private void OnCharacterRotate(Vector3 current, Vector3 previous) { UpdateRendering(Utils.WorldToGridPositionUnc
 459
 460        public void OnCharacterSetPosition(Vector2Int newCoords, Vector2Int oldCoords)
 461        {
 0462            if (oldCoords == newCoords)
 0463                return;
 464
 0465            UpdateRendering(new Vector2((float)newCoords.x, (float)newCoords.y));
 0466        }
 467
 468        public void UpdateRendering(Vector2 newCoords)
 469        {
 0470            UpdateBackgroundLayer(newCoords);
 0471            UpdateSelectionLayer();
 0472            UpdateOverlayLayer();
 0473        }
 474
 0475        void UpdateBackgroundLayer(Vector2 newCoords) { atlas.CenterToTile(newCoords); }
 476
 477        void UpdateSelectionLayer()
 478        {
 479            //TODO(Brian): Build and place here the scene highlight if applicable.
 0480        }
 481
 482        void UpdateOverlayLayer()
 483        {
 484            //NOTE(Brian): Player icon
 0485            Vector3 f = CommonScriptableObjects.cameraForward.Get();
 0486            Quaternion playerAngle = Quaternion.Euler(0, 0, Mathf.Atan2(-f.x, f.z) * Mathf.Rad2Deg);
 487
 0488            var gridPosition = playerGridPosition;
 0489            playerPositionIcon.anchoredPosition = MapUtils.CoordsToPosition(gridPosition);
 0490            playerPositionIcon.rotation = playerAngle;
 0491        }
 492
 493        // Called by the parcelhighlight image button
 494        public void ClickMousePositionParcel()
 495        {
 0496            highlightedParcelText.text = string.Empty;
 0497            lastClickedCursorMapCoords = cursorMapCoords;
 0498            OnParcelClicked?.Invoke(cursorMapCoords.x, cursorMapCoords.y);
 0499        }
 500    }
 501}

Methods/Properties

i()
i(DCL.MapRenderer)
MapRenderer()
playerWorldPosition()
playerRotation()
playerGridPosition()
usersPositionMarkerController(DCL.MapGlobalUsersPositionMarkerController)
usersPositionMarkerController()
parcelHighlightEnabled(System.Boolean)
parcelHighlightEnabled()
otherPlayers()
Awake()
Initialize()
EnsurePools()
SetParcelHighlightActive(System.Boolean)
GetParcelHighlightTransform()
SetOtherPlayersIconActive(System.Boolean)
SetPlayerIconActive(System.Boolean)
SetHighlighSize(UnityEngine.Vector2Int)
SetHighlightStyle(MapParcelHighlight/HighlighStyle)
OnDestroy()
Cleanup()
CleanLandsHighlights()
ClearLandHighlightsInfo()
SelectLand(UnityEngine.Vector2Int, UnityEngine.Vector2Int)
HighlightLands(System.Collections.Generic.List[Vector2Int], System.Collections.Generic.List[Vector2Int])
CreateHighlightParcel(UnityEngine.UI.Image, UnityEngine.Vector2Int, UnityEngine.Vector2Int)
Update()
UpdateCursorMapCoords()
IsCursorOverMapChunk()
UpdateParcelHighlight()
UpdateParcelHold()
OnKernelConfigChanged(KernelConfigModel, KernelConfigModel)
CoordinatesAreInsideTheWorld(System.Int32, System.Int32)
MapRenderer_OnSceneInfoUpdated(MinimapMetadata/MinimapSceneInfo)
SetPointOfInterestActive(System.Boolean)
IsEmptyParcel(MinimapMetadata/MinimapSceneInfo)
OnOtherPlayersAdded(System.String, Player)
OnOtherPlayerRemoved(System.String, Player)
ConfigureUserIcon(UnityEngine.GameObject, UnityEngine.Vector3)
OnCharacterMove(UnityEngine.Vector3, UnityEngine.Vector3)
OnCharacterRotate(UnityEngine.Vector3, UnityEngine.Vector3)
OnCharacterSetPosition(UnityEngine.Vector2Int, UnityEngine.Vector2Int)
UpdateRendering(UnityEngine.Vector2)
UpdateBackgroundLayer(UnityEngine.Vector2)
UpdateSelectionLayer()
UpdateOverlayLayer()
ClickMousePositionParcel()