protected virtual void DropWorldItem(ref IShipDockEntitas target) { int worldItemID = mWorldItem.worldItemID; mWorldItemMapper.Remove(worldItemID); mGroupsMapper.Remove(mWorldItem.groupID); mAroundMapper.Remove(mWorldItem.aroundID); List <int> list = BehaviourIDsComp.GetAroundList(ref target); list?.Clear(); BehaviourIDs ids = BehaviourIDsComp.GetEntitasData(ref target); ids.willClear = true; BehaviourIDsComp.FillEntitasData(ref target, ids); mWorldItem.WorldItemDispose?.Invoke(); mWorldItem.WorldItemDispose = default; mWorldItem.isDroped = true; }
/// <summary> /// 检测物体四周目标 /// </summary> private void CheckAround(ref IShipDockEntitas target) { if (!mBehaviourIdsCompChecked) { mBehaviourIdsCompChecked = true; mHasBehaviourIDs = BehaviourIDsComp != default; } if (mHasBehaviourIDs && IsWorldItemValid(ref mWorldItem)) { BehaviourIDs ids = BehaviourIDsComp.GetEntitasData(ref target); int aroundID = ids.gameItemID; if (mAroundMapper.ContainsKey(aroundID)) { WalkEachAroundItem(ref target, ids); } else { mWorldItem.aroundID = aroundID; mAroundMapper[aroundID] = mMovement; } } }