protected virtual void NetFuncBuild(short itemIndex, Vector3 position, Quaternion rotation, PackedUInt parentObjectId) { if (!CanDoActions() || itemIndex >= NonEquipItems.Count) { return; } BuildingEntity buildingEntity; CharacterItem nonEquipItem = NonEquipItems[itemIndex]; if (!nonEquipItem.NotEmptySlot() || nonEquipItem.GetBuildingItem() == null || nonEquipItem.GetBuildingItem().buildingEntity == null || !GameInstance.BuildingEntities.TryGetValue(nonEquipItem.GetBuildingItem().buildingEntity.DataId, out buildingEntity) || !this.DecreaseItemsByIndex(itemIndex, 1)) { return; } BuildingSaveData buildingSaveData = new BuildingSaveData(); buildingSaveData.Id = GenericUtils.GetUniqueId(); buildingSaveData.ParentId = string.Empty; BuildingEntity parentBuildingEntity; if (TryGetEntityByObjectId(parentObjectId, out parentBuildingEntity)) { buildingSaveData.ParentId = parentBuildingEntity.Id; } buildingSaveData.DataId = buildingEntity.DataId; buildingSaveData.CurrentHp = buildingEntity.maxHp; buildingSaveData.Position = position; buildingSaveData.Rotation = rotation; buildingSaveData.CreatorId = Id; buildingSaveData.CreatorName = CharacterName; gameManager.CreateBuildingEntity(buildingSaveData, false); }