diff --git a/Assets/PerfectWorld/Scripts/Managers/CECNPCMan.cs b/Assets/PerfectWorld/Scripts/Managers/CECNPCMan.cs index 4e25d1fc29..02af13c1ad 100644 --- a/Assets/PerfectWorld/Scripts/Managers/CECNPCMan.cs +++ b/Assets/PerfectWorld/Scripts/Managers/CECNPCMan.cs @@ -1,11 +1,14 @@ using BrewMonster; +using BrewMonster.Network; using CSNetwork; using CSNetwork.GPDataType; using DG.Tweening; +using PerfectWorld.Scripts.Managers.BrewMonster.Managers; using System; using System.Buffers.Binary; using System.Collections.Generic; using System.Runtime.InteropServices; +using Unity.VisualScripting; using UnityEngine; public class CECNPCMan : CECObject, IMsgHandler @@ -29,7 +32,7 @@ public class CECNPCMan : CECObject, IMsgHandler case long value when value == EC_MsgDef.MSG_NM_NPCINFO: OnMsgNPCInfo(Msg); break; case long value when value == EC_MsgDef.MSG_NM_NPCMOVE: OnMsgNPCMove(Msg); break; case long value when value == EC_MsgDef.MSG_NM_NPCSTOPMOVE: OnMsgNPCStopMove(Msg); break; - case long value when value == EC_MsgDef. MSG_NM_NPCATKRESULT : TransmitMessage(Msg); break; + case long value when value == EC_MsgDef.MSG_NM_NPCATKRESULT: TransmitMessage(Msg); break; } } return true; @@ -42,7 +45,7 @@ public class CECNPCMan : CECObject, IMsgHandler { case long value when value == EC_MsgDef.MSG_NM_NPCATKRESULT: - nid = ((cmd_object_atk_result )msg.dwParam1).attacker_id; + nid = ((cmd_object_atk_result)msg.dwParam1).attacker_id; break; default: return false; @@ -52,6 +55,101 @@ public class CECNPCMan : CECObject, IMsgHandler pNPC.ProcessMessage(msg); else { + CECNPC pAttacker = GetNPCFromAll(nid); + CECHostPlayer pHost = GameController.Instance.GetHostPlayer(); + EC_ManPlayer pPlayerMan = EC_ManMessageMono.Instance.GetECManPlayer; + + int idTarget = (0); + int dwModifier = (0); + int nDamage = (0); + + switch (msg.dwMsg) + { + case long value when value == EC_MsgDef.MSG_NM_NPCATKRESULT: + { + cmd_object_atk_result pCmd = (cmd_object_atk_result)msg.dwParam1; + idTarget = pCmd.target_id; + dwModifier = pCmd.attack_flag; + nDamage = pCmd.damage; + } + break; + + case long value when value == EC_MsgDef.MSG_NM_ENCHANTRESULT: + { + cmd_enchant_result pCmd = (cmd_enchant_result)msg.dwParam1; + idTarget = pCmd.target; + dwModifier = pCmd.attack_flag; + //nDamage = (GNET::ElementSkill::GetType(pCmd.skill) == GNET::TYPE_ATTACK) ? -1 : -2; + } + break; + + case long value when value == EC_MsgDef.MSG_NM_NPCSKILLRESULT: + { + cmd_object_skill_attack_result pCmd = (cmd_object_skill_attack_result)msg.dwParam1; + idTarget = pCmd.target_id; + dwModifier = pCmd.attack_flag; + nDamage = pCmd.attack_flag; + } + break; + } + while (idTarget != 0) + { + if (UnityGameSession.Instance.GameSession.ISNPCID(idTarget)) + { + // Bị tấn công là NPC + var pTarget = GetNPCFromAll(idTarget); + if (pTarget == null) + { + // Không tìm thấy NPC bị tấn công → thoát + break; + } + + // Nếu là pet của chính người chơi + if (pTarget.IsPetNPC() && pTarget.GetMasterID() == pHost.GetCharacterID()) + { + // Pet của mình bị đánh → hiển thị damage + pTarget.Damaged(nDamage,(uint) dwModifier); + break; + } + + // Nếu attacker chưa xác định + if (pAttacker == null) + { + break; + } + + // Nếu attacker là pet của mình → cho phép hiển thị damage target + if (pAttacker.IsPetNPC() && pAttacker.GetMasterID() == pHost.GetCharacterID()) + { + //pTarget.Damaged(nDamage, dwModifier); + } + break; + } + + if (UnityGameSession.Instance.GameSession.ISPLAYERID(idTarget)) + { + // Bị tấn công là người chơi khác + var pTarget = pPlayerMan.GetPlayer(idTarget); + if (pTarget == null) + { + break; + } + + if (pAttacker == null) + { + break; + } + + // Nếu attacker là pet của mình → xử lý damage + if (pAttacker.IsPetNPC() && pAttacker.GetMasterID() == pHost.GetCharacterID()) + { + //pTarget.Damaged(nDamage, dwModifier); + } + break; + } + + break; + } } return true; @@ -164,8 +262,8 @@ public class CECNPCMan : CECObject, IMsgHandler CECNPC pNPC = SeekOutNPC(pCmd.idNPC); if (pNPC) { - ROLEBASICPROP bp = pNPC.GetBasicProps(); - ROLEEXTPROP ep = pNPC.GetExtendProps(); + ROLEBASICPROP bp = pNPC.GetBasicProps(); + ROLEEXTPROP ep = pNPC.GetExtendProps(); bp.iCurHP = pCmd.iHP; ep.bs.max_hp = pCmd.iMaxHP; @@ -288,4 +386,20 @@ public class CECNPCMan : CECObject, IMsgHandler return pNPC; } + public CECNPC GetNPCFromAll(int nid) + { + CECNPC pNPC = GetNPC(nid); + if (pNPC) + return pNPC; + + // Search from disappear array ? + /* for (int i = 0; i < m_aDisappearNPCs.GetSize(); i++) + { + CECNPC* pNPC = m_aDisappearNPCs[i]; + if (pNPC->GetNPCID() == nid) + return pNPC; + }*/ + + return null; + } } diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs index 0db2223156..a4e8ab3102 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs @@ -205,7 +205,6 @@ namespace PerfectWorld.Scripts.Managers preSize += iSize; } - Debug.LogError("PLAYER_INFO_1_LIST"); break; } } @@ -343,6 +342,19 @@ namespace PerfectWorld.Scripts.Managers return player; } + public CECPlayer GetPlayer(int cid, uint dwBornStamp = 0/* 0 */) + { + CECHostPlayer pHost = GetHostPlayer(); + if (pHost && pHost.GetCharacterID() == cid) + return pHost; + else + return GetElsePlayer(cid, dwBornStamp); + } + + private CECHostPlayer GetHostPlayer() + { + return GameController.Instance.GetHostPlayer(); + } public bool OnMsgPlayerStopMove(ECMSG Msg) { diff --git a/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs b/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs index ddabd9d792..b6051346eb 100644 --- a/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs +++ b/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs @@ -853,11 +853,68 @@ public class CECNPC : CECObject return (int)NPCActionIndex.ACT_NPC_WALK; } } - bool IsMonsterOrPet() { return IsMonsterNPC() || IsPetNPC(); } - bool IsMonsterNPC() { return (int)Class_ID.OCID_MONSTER == m_iCID; } - bool IsPetNPC() { return (int)Class_ID.OCID_PET == m_iCID; } + public void Damaged(int iDamage, uint dwModifier = 0) + { + // == Trường hợp 1: damage là -1 hoặc -2 (chỉ để hiển thị hiệu ứng) + if (iDamage == -1 || iDamage == -2) + { + // Nếu -1 thì chơi animation bị thương + if (iDamage == -1) + PlayModelAction((int)NPCActionIndex.ACT_WOUNDED); - public bool IsDead(){ return (m_dwStates & PlayerNPCState.GP_STATE_CORPSE) != 0; } + // Xét các kiểu modifier + /* if ((dwModifier & CECAttackEvent.MOD_IMMUNE) != 0 && !IsImmuneDisable()) + BubbleText(BUBBLE_IMMUNE, 0); + else if ((dwModifier & CECAttackEvent.MOD_NULLITY) != 0) + BubbleText(BUBBLE_INVALIDHIT, 0); + else if ((dwModifier & CECAttackEvent.MOD_ENCHANT_FAILED) != 0) + BubbleText(BUBBLE_LOSE, 0); + else if ((dwModifier & CECAttackEvent.MOD_SUCCESS) != 0) + BubbleText(BUBBLE_SUCCESS, 0); + else if ((dwModifier & CECAttackEvent.MOD_DODGE_DEBUFF) != 0) + BubbleText(BUBBLE_DODGE_DEBUFF, 0);*/ + } + else + { + // == Trường hợp 2: có damage thật + /* bool bDeadlyStrike = (dwModifier & CECAttackEvent.MOD_CRITICAL_STRIKE) != 0; + bool bRetort = (dwModifier & CECAttackEvent.MOD_RETORT) != 0;*/ + + if (iDamage > 0) + { + PlayModelAction((int)NPCActionIndex.ACT_WOUNDED); + + /* int p1 = 0; + if (bDeadlyStrike) + p1 |= 0x0001; + else if (bRetort) + p1 |= 0x0002;*/ + + /* if ((dwModifier & CECAttackEvent.MOD_REBOUND) != 0) + BubbleText(BUBBLE_REBOUND, (uint)iDamage); + else if ((dwModifier & CECAttackEvent.MOD_BEAT_BACK) != 0) + BubbleText(BUBBLE_BEAT_BACK, (uint)iDamage); + else + BubbleText(BUBBLE_DAMAGE, (uint)iDamage, p1);*/ + } + /* else if ((dwModifier & CECAttackEvent.MOD_IMMUNE) != 0 && !IsImmuneDisable()) + BubbleText(BUBBLE_IMMUNE, 0); + else if ((dwModifier & CECAttackEvent.MOD_NULLITY) != 0) + BubbleText(BUBBLE_INVALIDHIT, 0); + else if ((dwModifier & CECAttackEvent.MOD_ENCHANT_FAILED) != 0) + BubbleText(BUBBLE_LOSE, 0); + else if ((dwModifier & CECAttackEvent.MOD_SUCCESS) != 0) + BubbleText(BUBBLE_SUCCESS, 0); + else + BubbleText(BUBBLE_HITMISSED, 0);*/ + } + } + + public int GetMasterID() { return m_idMaster; } + public bool IsMonsterOrPet() { return IsMonsterNPC() || IsPetNPC(); } + public bool IsMonsterNPC() { return (int)ClassID.OCID_MONSTER == m_iCID; } + public bool IsPetNPC() { return (int)ClassID.OCID_PET == m_iCID; } + public bool IsDead() { return (m_dwStates & PlayerNPCState.GP_STATE_CORPSE) != 0; } public void PlayMoveAction(int iMoveMode) { BrewMonster.BMLogger.LogError($"HoangDev: PlayMoveAction {iMoveMode}"); diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs index 90ea6ed814..cca120cf03 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs @@ -536,7 +536,28 @@ namespace CSNetwork.GPDataType this.fWaterSurf = fWaterSurf; } }; - + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct cmd_enchant_result + { + public int caster; + public int target; + public int skill; + public char level; + public char orange_name; + public int attack_flag; + public byte section; + }; + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct cmd_object_skill_attack_result + { + public int attacker_id; + public int target_id; + public int skill_id; + public int damage; + public int attack_flag; //±ê¼Ç¸Ã¹¥»÷ÊÇ·ñÓй¥»÷ÓÅ»¯·ûºÍ·ÀÓùÓÅ»¯·ûºÍÖØ»÷·¢Éú + public char speed; //¹¥»÷ËÙ¶È speed * 50 ms + public byte section; + }; // Gender public static class GENDER { @@ -582,7 +603,15 @@ namespace CSNetwork.GPDataType public byte dir; public byte move_mode; } - + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct cmd_object_atk_result + { + public int attacker_id; + public int target_id; + public int damage; + public int attack_flag; //±ê¼Ç¸Ã¹¥»÷ÊÇ·ñÓй¥»÷ÓÅ»¯·ûºÍ·ÀÓùÓÅ»¯·ûºÍÖØ»÷·¢Éú + public char speed; //¹¥»÷ËÙ¶È speed * 50 ms + }; [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct A3DVECTOR3 { diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs index 7ec3dfbe0f..9cb131a381 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs @@ -344,7 +344,7 @@ namespace CSNetwork int lenghtDataType = Marshal.SizeOf(); byte[] arrByteData = GetBytes(pDataBuf, lenghtDataType, 0); int idObjMove = BitConverter.ToInt32(arrByteData); - if (IsPlayerId(idObjMove)) + if (ISPLAYERID(idObjMove)) { EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERMOVE, (int)MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, pCmdHeader, iHostID); } @@ -356,12 +356,12 @@ namespace CSNetwork break; case CommandID.OBJECT_STOP_MOVE: { - int id = GPDataTypeHelper.FromBytes(pDataBuf); - if (IsPlayerId(id)) + int id1 = GPDataTypeHelper.FromBytes(pDataBuf); + if (ISPLAYERID(id1)) { EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERSTOPMOVE, (int)MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, pCmdHeader); } - else if (ISNPCID(id)) + else if (ISNPCID(id1)) { _logger.Info("HoangDev : NPC OBJECT_MOVE"); EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCSTOPMOVE, (int)MANAGER_INDEX.MAN_NPC, 0, pDataBuf, pCmdHeader); @@ -414,6 +414,18 @@ namespace CSNetwork case CommandID.TASK_VAR_DATA: EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_TASKDATA, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader, dwDataSize); break; + case CommandID.BE_HURT: + case CommandID.HURT_RESULT: + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_HURTRESULT, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader); + break; + case CommandID.OBJECT_ATTACK_RESULT: + _logger.Info($"TASK_DATA: " + pCmdHeader); + int id = GPDataTypeHelper.FromBytes(pDataBuf); + if (ISPLAYERID(id)) + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_TASKDATA, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader, dwDataSize); + else if (ISNPCID(id)) + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_TASKDATA, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader, dwDataSize); + break; case CommandID.ERROR_MESSAGE: _logger.Info($"### GameDataSend: ERROR_MESSAGE: {BitConverter.ToInt32(pDataBuf, 0)}"); break; @@ -659,7 +671,7 @@ namespace CSNetwork // GC.SuppressFinalize(this); } - public bool IsPlayerId(int id) + public bool ISPLAYERID(int id) { return id != 0 && (id & 0x80000000) == 0; } diff --git a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs index 1b6f0c5cbd..30b4ee358e 100644 --- a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs @@ -28,6 +28,7 @@ namespace BrewMonster.Network private string _username = ""; private string _password = ""; + public GameSession GameSession => _gameSession; protected override void Awake() { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); diff --git a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs index 58c64ecb0d..5d124ade08 100644 --- a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs +++ b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs @@ -7,7 +7,7 @@ using UnityEngine; namespace PerfectWorld.Scripts.Player { - public class EC_ElsePlayer : EC_Player + public class EC_ElsePlayer : CECPlayer { A3DVECTOR3 m_vMoveDir; // Player's velocity A3DVECTOR3 m_vServerPos; // Player's real position on server diff --git a/Assets/Scripts/CECHostPlayer.cs b/Assets/Scripts/CECHostPlayer.cs index 96adbccb93..066c3279a1 100644 --- a/Assets/Scripts/CECHostPlayer.cs +++ b/Assets/Scripts/CECHostPlayer.cs @@ -18,7 +18,7 @@ using UnityEngine.SceneManagement; using UnityEngine.UI; using Scene = UnityEngine.SceneManagement.Scene; -public class CECHostPlayer : EC_Player +public class CECHostPlayer : CECPlayer { [SerializeField] private TextMeshPro txtName; [SerializeField] private CharacterController controller; @@ -468,7 +468,6 @@ public class CECHostPlayer : EC_Player if (txtName != null) txtName.text = roleName; transform.position = pos; SetModelHostPlayer(); - Debug.LogError("Pos Character = " + pos); joystick = FindAnyObjectByType(); EventBus.Subscribe(JoystickRelease); EventBus.Subscribe(JoystickStartDrag); diff --git a/Assets/Scripts/EC_Utility.cs b/Assets/Scripts/EC_Utility.cs index d1ef9f4cfb..ec337ae60d 100644 --- a/Assets/Scripts/EC_Utility.cs +++ b/Assets/Scripts/EC_Utility.cs @@ -4,7 +4,7 @@ using System; using System.Collections; using System.Runtime.InteropServices; using UnityEngine; -using static EC_Player; +using static CECPlayer; public static class EC_Utility { diff --git a/Assets/Scripts/GameController.cs b/Assets/Scripts/GameController.cs index bdd3c803f6..1a1f7dcfe9 100644 --- a/Assets/Scripts/GameController.cs +++ b/Assets/Scripts/GameController.cs @@ -54,7 +54,7 @@ public class GameController : MonoBehaviour Debug.LogError("null prefab"); return; } - EC_Player.InitStaticRes(); + CECPlayer.InitStaticRes(); hostPlayer = Instantiate(characterPrefab, transform); hostPlayer.InitCharacter(info); cinemachineCamera.Follow = hostPlayer.transform; diff --git a/Assets/Scripts/InitializePlayer.cs b/Assets/Scripts/InitializePlayer.cs index 74f9de84a2..ad87a38c5f 100644 --- a/Assets/Scripts/InitializePlayer.cs +++ b/Assets/Scripts/InitializePlayer.cs @@ -5,11 +5,11 @@ public class InitializePlayer /*: IAutoInitialize*/ { public void Dispose() { - EC_Player.Dispose(); + CECPlayer.Dispose(); } public void Initialize() { - EC_Player.InitStaticRes(); + CECPlayer.InitStaticRes(); } } diff --git a/Assets/Scripts/Move/EC_Player.cs b/Assets/Scripts/Move/CECPlayer.cs similarity index 99% rename from Assets/Scripts/Move/EC_Player.cs rename to Assets/Scripts/Move/CECPlayer.cs index 16b479fba9..f6fa7c2b33 100644 --- a/Assets/Scripts/Move/EC_Player.cs +++ b/Assets/Scripts/Move/CECPlayer.cs @@ -46,6 +46,9 @@ public abstract class EC_Player : CECObject public bool IsDead(){ return (m_dwStates & PlayerNPCState.GP_STATE_CORPSE) != 0; } public bool IsValidAction(int iIndex) { return (iIndex >= 0 && iIndex < (int)PLAYER_ACTION_TYPE.ACT_MAX) ? true : false; } + public int GetCharacterID() { return m_PlayerInfo.cid; } + + private static void BuildActionList() { if (_default_actions == null) diff --git a/Assets/Scripts/Move/CECPlayer.cs.meta b/Assets/Scripts/Move/CECPlayer.cs.meta new file mode 100644 index 0000000000..091511b0f9 --- /dev/null +++ b/Assets/Scripts/Move/CECPlayer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 041192bec8f11c747a80df312c2df184 \ No newline at end of file diff --git a/Assets/Scripts/Move/EC_Player.cs.meta b/Assets/Scripts/Move/EC_Player.cs.meta deleted file mode 100644 index 165da5cb56..0000000000 --- a/Assets/Scripts/Move/EC_Player.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: be4a22babee7846459b0421234a44c99 \ No newline at end of file diff --git a/Assets/Scripts/PlayerState/PlayerIdleState.cs b/Assets/Scripts/PlayerState/PlayerIdleState.cs index dab799fc4a..00f87ae540 100644 --- a/Assets/Scripts/PlayerState/PlayerIdleState.cs +++ b/Assets/Scripts/PlayerState/PlayerIdleState.cs @@ -1,5 +1,5 @@ using UnityEngine; -using static EC_Player; +using static CECPlayer; public class PlayerIdleState : PlayerState { diff --git a/Assets/Scripts/PlayerState/PlayerMoveState.cs b/Assets/Scripts/PlayerState/PlayerMoveState.cs index e82e7f53a4..b46ef1e484 100644 --- a/Assets/Scripts/PlayerState/PlayerMoveState.cs +++ b/Assets/Scripts/PlayerState/PlayerMoveState.cs @@ -1,5 +1,5 @@ using UnityEngine; -using static EC_Player; +using static CECPlayer; public class PlayerMoveState : PlayerState { diff --git a/Assets/Scripts/PlayerVisual.cs b/Assets/Scripts/PlayerVisual.cs index 08fab98c64..1046364ce4 100644 --- a/Assets/Scripts/PlayerVisual.cs +++ b/Assets/Scripts/PlayerVisual.cs @@ -23,7 +23,7 @@ public class PlayerVisual : MonoBehaviour BrewMonster.BMLogger.LogError("animancer == null"); return; } - var player = GetComponentInParent(); + var player = GetComponentInParent(); if(player == null) { BrewMonster.BMLogger.LogError("player == null"); diff --git a/Packages/manifest.json b/Packages/manifest.json index b3d4493844..dcb7e88cf8 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,7 +1,5 @@ { "dependencies": { - "com.boxqkrtm.ide.cursor": "https://github.com/boxqkrtm/com.unity.ide.cursor.git", - "com.github-glitchenzo.nugetforunity": "https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnity", "com.unity.ai.navigation": "2.0.9", "com.unity.cinemachine": "3.1.4", "com.unity.collab-proxy": "2.9.3", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 588bd1b085..6c6d55c57c 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -1,21 +1,5 @@ { "dependencies": { - "com.boxqkrtm.ide.cursor": { - "version": "https://github.com/boxqkrtm/com.unity.ide.cursor.git", - "depth": 0, - "source": "git", - "dependencies": { - "com.unity.test-framework": "1.1.9" - }, - "hash": "38fecf55e4fd94ccfe58a92ed8ad1a529ba1694e" - }, - "com.github-glitchenzo.nugetforunity": { - "version": "https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnity", - "depth": 0, - "source": "git", - "dependencies": {}, - "hash": "a7c6b49a0141a5bff9b1983e38137522ef61977d" - }, "com.unity.ai.navigation": { "version": "2.0.9", "depth": 0,