コード例 #1
0
    protected override void RepositionCubes()
    {
        var size     = CubePrefab.GetComponent <BoxCollider>().size;
        var cubeSize = new Vector3(CubeSize * size.x, CubeSize * size.y, CubeSize * size.z);

        //we want the cube of cubes to be centered on this game object
        var centerOffset = cubeSize * (SideLength / 2f) * GapFactor;

        centerOffset = new Vector3(centerOffset.x, centerOffset.y, 0f);
        var cubeOffset = (cubeSize * GapFactor / 2f);

        cubeOffset = new Vector3(cubeOffset.x, cubeOffset.y, 0f);
        var finalOffset = /*transform.position */ -centerOffset + cubeOffset;

        for (var j = 0; j < SideLength; j++)
        {
            for (var i = 0; i < SideLength; i++)
            {
                //2d index into a flattened list
                var cube = Cubes[(int)(i + (j * SideLength))];
                cube.transform.localPosition = (new Vector3(cubeSize.x * i, cubeSize.y * j, 0) * GapFactor)
                                               + finalOffset;
                cube.transform.localScale = new Vector3(CubeSize, CubeSize, CubeSize);
                RpcSetCubeTransformData(cube, cube.transform.position, CubeSize);
            }
        }
    }
コード例 #2
0
    protected virtual void OnDrawGizmos()
    {
        Gizmos.color = Color.blue;

        if (CubePrefab == null)
        {
            return;
        }

        var size     = CubePrefab.GetComponent <BoxCollider>().size;
        var cubeSize = size * CubeSize;

        var boundingBoxSize = cubeSize * SideLength * GapFactor;

        boundingBoxSize = new Vector3(boundingBoxSize.x, boundingBoxSize.y, CubeSize);
        Gizmos.DrawCube(transform.position, boundingBoxSize);

        var centerOffset = cubeSize * (SideLength / 2f) * GapFactor;

        centerOffset = new Vector3(centerOffset.x, centerOffset.y, 0f);
        var cubeOffset = (cubeSize * GapFactor / 2f);

        cubeOffset = new Vector3(cubeOffset.x, cubeOffset.y, 0f);
        var finalOffset = transform.position - centerOffset + cubeOffset;

        for (var j = 0; j < SideLength; j++)
        {
            for (var i = 0; i < SideLength; i++)
            {
                var pos = (new Vector3(cubeSize.x * i, cubeSize.y * j, 0) * GapFactor) + finalOffset;
                Gizmos.DrawWireCube(pos, cubeSize);
            }
        }
    }
コード例 #3
0
    protected override void SpawnCubes()
    {
        var size     = CubePrefab.GetComponent <BoxCollider>().size;
        var cubeSize = size * CubeSize;

        //we want the cube of cubes to be centered on this game object
        var centerOffset = cubeSize * (SideLength / 2f) * GapFactor;

        centerOffset = new Vector3(centerOffset.x, centerOffset.y, 0f);
        var cubeOffset = (cubeSize * GapFactor / 2f);

        cubeOffset = new Vector3(cubeOffset.x, cubeOffset.y, 0f);
        var finalOffset = /*transform.position */ -centerOffset + cubeOffset;

        for (var j = 0; j < SideLength; j++)
        {
            for (var i = 0; i < SideLength; i++)
            {
                var pos  = (new Vector3(cubeSize.x * i, cubeSize.y * j, 0) * GapFactor) + finalOffset;
                var cube = (GameObject)Instantiate(CubePrefab, pos, Quaternion.identity);
                cube.transform.localScale = new Vector3(CubeSize, CubeSize, CubeSize);
                cube.transform.SetParent(transform, false);

                PreCubeSpawned(cube, i, j);

                Cubes.Add(cube);
                NetworkServer.Spawn(cube);

                RpcSetAsChild(cube);

                PostCubeSpawned(cube);
            }
        }
    }
コード例 #4
0
    private void OnDrawGizmos()
    {
        Gizmos.color = Color.blue;

        if (CubePrefab == null)
        {
            return;
        }

        var size     = CubePrefab.GetComponent <BoxCollider>().size;
        var cubeSize = size * CubeSize;

        Gizmos.DrawCube(transform.position, cubeSize * SideLength * GapFactor);

        var centerOffset = cubeSize * (SideLength / 2f) * GapFactor;
        var cubeOffset   = (cubeSize * GapFactor / 2f);
        var finalOffset  = transform.position - centerOffset + cubeOffset;

        for (var k = 0; k < SideLength; k++)
        {
            for (var j = 0; j < SideLength; j++)
            {
                for (var i = 0; i < SideLength; i++)
                {
                    var pos = (new Vector3(cubeSize.x * i, cubeSize.y * j, cubeSize.z * k) * GapFactor) + finalOffset;
                    Gizmos.DrawWireCube(pos, cubeSize);
                }
            }
        }
    }
コード例 #5
0
    private void CalculateEnclosingCollider()
    {
        var size         = CubePrefab.GetComponent <BoxCollider>().size;
        var cubeSize     = new Vector3(CubeSize * size.x, CubeSize * size.y, CubeSize * size.z);
        var boundingSize = cubeSize * (SideLength) * GapFactor;

        boundingSize = new Vector3(boundingSize.x, boundingSize.y, cubeSize.z);

        var bc = GetComponent <BoxCollider>();

        bc.size = boundingSize;
        InteractableCollider.Size = boundingSize;
    }
コード例 #6
0
    public override float GetBoundingSphereRadius()
    {
        var cubeLength = CubePrefab.GetComponent <Renderer>().bounds.size.x *GapFactor;

        return(cubeLength * SideLength * Mathf.Sqrt(3f) * .5f);
    }