private void SetSprite(MapTransferRecord record, SceneNpcDataModel npcData, int myCamp)
        {
            var _iconId = (record.Camp == myCamp || record.LiveIcon2 == -1) ? record.LiveIcon : record.LiveIcon2;
            var _tbIcon = Table.GetIcon(_iconId);

            if (_tbIcon != null)
            {
                npcData.Atlas      = _tbIcon.Atlas;
                npcData.SpriteName = _tbIcon.Sprite;
            }
            switch (npcData.CharType)
            {
            case 8:
            case 9:
                npcData.Color = record.Camp == myCamp ? MColor.green : MColor.red;
                break;
            }
        }
        private void OnRefurbishSceneMapEvent(IEvent ievent)
        {
            var _e = ievent as RefresSceneMap;

            DataModel.SceneId = _e.SceneId;
            mSceneRecord      = Table.GetScene(_e.SceneId);
            if (mSceneRecord == null)
            {
                return;
            }
            DataModel.ScenrIcon = mSceneRecord.ShowNameIcon;
            NpcDataModels.Clear();

            var _scale = 1f * mSceneRecord.TerrainHeightMapWidth / mSceneRecord.TerrainHeightMapLength;

            if (_scale > 1.0f)
            {
                DataModel.MapWidth  = (int)(MAP_HIGHT);
                DataModel.MapHeight = (int)(MAP_HIGHT / _scale);
            }
            else
            {
                DataModel.MapWidth  = (int)(MAP_HIGHT * _scale);
                DataModel.MapHeight = (int)MAP_HIGHT;
            }
            var _camp = ObjManager.Instance.MyPlayer.GetCamp();

            DataModel.NpcList.Clear();
            DataModel.PlayerList.Clear();
            Table.ForeachMapTransfer((record =>
            {
                if (record.SceneID != _e.SceneId)
                {
                    return(true);
                }
                var _npcData = new SceneNpcDataModel();
                _npcData.Id = record.Id;
                _npcData.NpcId = record.NpcID;
                _npcData.SceneLoction = new Vector3(record.PosX, 0, record.PosZ);
                _npcData.MapLoction = TransformSceneToMap(_npcData.SceneLoction);
                _npcData.Color = GameUtils.GetTableColor(record.DisplayColor);
                _npcData.NpcName = record.Name;
                _npcData.CharType = record.Type;
                SetSprite(record, _npcData, _camp);
                _npcData.Width = record.PicWidth;
                _npcData.Height = record.PIcHight;
                _npcData.LabLoc = new Vector3(record.OffsetX, record.OffsetY, 0);
                _npcData.NpcType = record.ShowChar;
                _npcData.DisplaySort = record.DisplaySort;
                _npcData.Mark = record.Mark;
                NpcDataModels.Add(_npcData);
                return(true);
            }));
            NpcDataModels.Sort((a, b) =>
            {
                if (a.CharType == b.CharType)
                {
                    return((a.DisplaySort < b.DisplaySort) ? -1 : 1);
                }
                return((a.CharType < b.CharType) ? -1 : 1);
            });

            var _obj = ObjManager.Instance.MyPlayer;

            if (_obj)
            {
                PositionChange(_obj.Position);
            }
            RefurbishNpcList();
        }