|
@@ -70,7 +70,7 @@ namespace KairoEngine.VoxelBuildingSystem
|
|
{
|
|
{
|
|
Vector3 worldPos = GetMouseWorldSnappedPosition();
|
|
Vector3 worldPos = GetMouseWorldSnappedPosition();
|
|
Vector3Int voxelPos = FindVoxelPosition(pointerPosition);
|
|
Vector3Int voxelPos = FindVoxelPosition(pointerPosition);
|
|
- if(!CanPlaceBuilding(voxelPos, currentBuildingTemplate)) return;
|
|
|
|
|
|
+ if(!CanPlaceBuilding(voxelPos, currentBuildingTemplate, true)) return;
|
|
Transform newBuilding = Instantiate(buildingTemplates[currentBuildingTemplate].prefab, worldPos, this.transform.rotation, this.transform);
|
|
Transform newBuilding = Instantiate(buildingTemplates[currentBuildingTemplate].prefab, worldPos, this.transform.rotation, this.transform);
|
|
BuildingBehaviour buildingBehaviour = newBuilding.GetComponent<BuildingBehaviour>();
|
|
BuildingBehaviour buildingBehaviour = newBuilding.GetComponent<BuildingBehaviour>();
|
|
if(buildingBehaviour == null)
|
|
if(buildingBehaviour == null)
|
|
@@ -92,7 +92,7 @@ namespace KairoEngine.VoxelBuildingSystem
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- public bool CanPlaceBuilding(Vector3Int voxelPos, int buildingTemplateIndex)
|
|
|
|
|
|
+ public bool CanPlaceBuilding(Vector3Int voxelPos, int buildingTemplateIndex, bool debug = false)
|
|
{
|
|
{
|
|
List<Vector3Int> voxelPositions = GetBuildingVoxelList(voxelPos, buildingTemplateIndex);
|
|
List<Vector3Int> voxelPositions = GetBuildingVoxelList(voxelPos, buildingTemplateIndex);
|
|
for (int i = 0; i < voxelPositions.Count; i++)
|
|
for (int i = 0; i < voxelPositions.Count; i++)
|
|
@@ -100,7 +100,7 @@ namespace KairoEngine.VoxelBuildingSystem
|
|
VoxelBuildData block = chunkSystem.GetBlock(voxelPositions[i]);
|
|
VoxelBuildData block = chunkSystem.GetBlock(voxelPositions[i]);
|
|
if(block.buildingIndex != -1)
|
|
if(block.buildingIndex != -1)
|
|
{
|
|
{
|
|
- Debug.Log("Cannot place building, place is occupied.");
|
|
|
|
|
|
+ if(debug) Debug.Log("Cannot place building, place is occupied.");
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -115,13 +115,14 @@ namespace KairoEngine.VoxelBuildingSystem
|
|
}
|
|
}
|
|
|
|
|
|
public Vector3 GetMouseWorldSnappedPosition() => (Vector3)FindVoxelPosition(pointerPosition);
|
|
public Vector3 GetMouseWorldSnappedPosition() => (Vector3)FindVoxelPosition(pointerPosition);
|
|
|
|
+ public Vector3Int GetMouseVoxelPosition() => FindVoxelPosition(pointerPosition);
|
|
|
|
|
|
public void CycleBuildingTemplate()
|
|
public void CycleBuildingTemplate()
|
|
{
|
|
{
|
|
if(currentBuildingTemplate < buildingTemplates.Count - 1) currentBuildingTemplate += 1;
|
|
if(currentBuildingTemplate < buildingTemplates.Count - 1) currentBuildingTemplate += 1;
|
|
else currentBuildingTemplate = 0;
|
|
else currentBuildingTemplate = 0;
|
|
GenericEvents.Trigger("OnBuildingTemplateChanged");
|
|
GenericEvents.Trigger("OnBuildingTemplateChanged");
|
|
- Debug.Log($"Changing current building template to {currentBuildingTemplate}");
|
|
|
|
|
|
+ //Debug.Log($"Changing current building template to {currentBuildingTemplate}");
|
|
}
|
|
}
|
|
|
|
|
|
public List<Vector3Int> GetBuildingVoxelList(Vector3Int offset, int buildingTemplateId)
|
|
public List<Vector3Int> GetBuildingVoxelList(Vector3Int offset, int buildingTemplateId)
|
|
@@ -136,11 +137,11 @@ namespace KairoEngine.VoxelBuildingSystem
|
|
{
|
|
{
|
|
Vector3Int pos = new Vector3Int(offset.x + x, offset.y + y, offset.z + z);
|
|
Vector3Int pos = new Vector3Int(offset.x + x, offset.y + y, offset.z + z);
|
|
positionList.Add(pos);
|
|
positionList.Add(pos);
|
|
- Debug.Log(pos);
|
|
|
|
|
|
+ //Debug.Log(pos);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- Debug.Log($"{positionList.Count} voxel positions found for building \"{buildingTemplates[buildingTemplateId].title}\"");
|
|
|
|
|
|
+ //Debug.Log($"{positionList.Count} voxel positions found for building \"{buildingTemplates[buildingTemplateId].title}\"");
|
|
return positionList;
|
|
return positionList;
|
|
}
|
|
}
|
|
|
|
|