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); } } }
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); } } }
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); } } }
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); } } } }
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; }
public override float GetBoundingSphereRadius() { var cubeLength = CubePrefab.GetComponent <Renderer>().bounds.size.x *GapFactor; return(cubeLength * SideLength * Mathf.Sqrt(3f) * .5f); }