Example #1
0
    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?");
        }
    }
Example #2
0
        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;
            }
        }