public void Dispense(GameObject objectPrefab, PipeLayer pipeLayer, Color pipeColor) { if (MachineOperating || !securable.IsAnchored) { return; } this.RestartCoroutine(SetMachineOperating(), ref animationRoutine); SpawnResult spawnResult = Spawn.ServerPrefab(objectPrefab, objectBehaviour.AssumedWorldPositionServer()); if (spawnResult.Successful) { spawnResult.GameObject.GetComponent <PipeItem>()?.SetColour(pipeColor); newPipe = new PipeObjectSettings { pipeObject = spawnResult.GameObject, pipeColor = pipeColor }; } else { Logger.LogError($"Failed to spawn an object from {name}! Is GUI_{name} missing reference to object prefab?"); } }
private void DrawPipeCube(float x, float y, PipeLayer layer, float value, OffsetPipesAdjacencyConnector.PipeOrientation orientation, float drawSize, float rotation) { float offsetX = 0f; float offsetY = 0f; switch (layer) { case PipeLayer.L1: offsetX = -0.25f; offsetY = 0.25f; break; case PipeLayer.L3: offsetX = 0.25f; offsetY = -0.25f; break; } switch (orientation) { case OffsetPipesAdjacencyConnector.PipeOrientation.o: if (layer == PipeLayer.L2 || layer == PipeLayer.Upper) { Gizmos.DrawCube(new Vector3(x, value / 2f, y), new Vector3(0.2f * drawSize, value, 0.2f * drawSize)); } break; case OffsetPipesAdjacencyConnector.PipeOrientation.i: if (rotation > 0) { Gizmos.DrawCube(new Vector3(x, value / 2f, y + offsetY), new Vector3(drawSize, value, 0.2f * drawSize)); } else { Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y), new Vector3(0.2f * drawSize, value, drawSize)); } break; case OffsetPipesAdjacencyConnector.PipeOrientation.cNorth: if (rotation > 0) { Gizmos.DrawCube(new Vector3(x + 0.25f, value / 2f, y + offsetY), new Vector3(0.5f * drawSize, value, 0.2f * drawSize)); } else { Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y + 0.25f), new Vector3(0.2f * drawSize, value, 0.5f * drawSize)); } break; case OffsetPipesAdjacencyConnector.PipeOrientation.cSouth: if (rotation > 0) { Gizmos.DrawCube(new Vector3(x - 0.25f, value / 2f, y + offsetY), new Vector3(0.5f * drawSize, value, 0.2f * drawSize)); } else { Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y - 0.25f), new Vector3(0.2f * drawSize, value, 0.5f * drawSize)); } break; case OffsetPipesAdjacencyConnector.PipeOrientation.tNEW: if (layer == PipeLayer.L3) { Gizmos.DrawCube(new Vector3(x, value / 2f, y + offsetY), new Vector3(drawSize, value, 0.2f * drawSize)); Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y), new Vector3(0.2f * drawSize, value, drawSize)); } else if (layer == PipeLayer.L1) { Gizmos.DrawCube(new Vector3(x, value / 2f, y + offsetY), new Vector3(drawSize, value, 0.2f * drawSize)); Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y + 0.33f), new Vector3(0.2f * drawSize, value, 0.35f * drawSize)); } break; case OffsetPipesAdjacencyConnector.PipeOrientation.tNSE: if (layer == PipeLayer.L3) { Gizmos.DrawCube(new Vector3(x + 0.33f, value / 2f, y + offsetY), new Vector3(0.35f * drawSize, value, 0.2f * drawSize)); Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y), new Vector3(0.2f * drawSize, value, drawSize)); } else if (layer == PipeLayer.L1) { Gizmos.DrawCube(new Vector3(x, value / 2f, y + offsetY), new Vector3(drawSize, value, 0.2f * drawSize)); Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y), new Vector3(0.2f * drawSize, value, drawSize)); } break; case OffsetPipesAdjacencyConnector.PipeOrientation.tNSW: if (layer == PipeLayer.L3) { Gizmos.DrawCube(new Vector3(x, value / 2f, y + offsetY), new Vector3(drawSize, value, 0.2f * drawSize)); Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y), new Vector3(0.2f * drawSize, value, drawSize)); } else if (layer == PipeLayer.L1) { Gizmos.DrawCube(new Vector3(x - 0.33f, value / 2f, y + offsetY), new Vector3(0.35f * drawSize, value, 0.2f * drawSize)); Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y), new Vector3(0.2f * drawSize, value, drawSize)); } break; case OffsetPipesAdjacencyConnector.PipeOrientation.tSWE: if (layer == PipeLayer.L3) { Gizmos.DrawCube(new Vector3(x, value / 2f, y + offsetY), new Vector3(drawSize, value, 0.2f * drawSize)); } else if (layer == PipeLayer.L1) { Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y), new Vector3(0.2f * drawSize, value, drawSize)); Gizmos.DrawCube(new Vector3(x, value / 2f, y + offsetY), new Vector3(drawSize, value, 0.2f * drawSize)); } break; case OffsetPipesAdjacencyConnector.PipeOrientation.lNE: if (layer == PipeLayer.L1) { Gizmos.DrawCube(new Vector3(x, value / 2f, y + offsetY), new Vector3(drawSize, value, 0.2f * drawSize)); } else if (layer == PipeLayer.L3) { Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y), new Vector3(0.2f * drawSize, value, drawSize)); } break; case OffsetPipesAdjacencyConnector.PipeOrientation.lNW: if (layer == PipeLayer.L1) { Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y + offsetY), new Vector3(0.35f * drawSize, value, 0.2f * drawSize)); } else if (layer == PipeLayer.L3) { Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y), new Vector3(0.2f * drawSize, value, drawSize)); Gizmos.DrawCube(new Vector3(x, value / 2f, y + offsetY), new Vector3(drawSize, value, 0.2f * drawSize)); } break; case OffsetPipesAdjacencyConnector.PipeOrientation.lSE: if (layer == PipeLayer.L3) { Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y + offsetY), new Vector3(0.35f * drawSize, value, 0.2f * drawSize)); } else if (layer == PipeLayer.L1) { Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y), new Vector3(0.2f * drawSize, value, drawSize)); Gizmos.DrawCube(new Vector3(x, value / 2f, y + offsetY), new Vector3(drawSize, value, 0.2f * drawSize)); } break; case OffsetPipesAdjacencyConnector.PipeOrientation.lSW: if (layer == PipeLayer.L3) { Gizmos.DrawCube(new Vector3(x, value / 2f, y + offsetY), new Vector3(drawSize, value, 0.2f * drawSize)); } else if (layer == PipeLayer.L1) { Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y), new Vector3(0.2f * drawSize, value, drawSize)); } break; case OffsetPipesAdjacencyConnector.PipeOrientation.x: Gizmos.DrawCube(new Vector3(x + offsetX, value / 2f, y), new Vector3(0.2f * drawSize, value, drawSize)); Gizmos.DrawCube(new Vector3(x, value / 2f, y + offsetY), new Vector3(drawSize, value, 0.2f * drawSize)); break; } }