public static _Cube CreateCube() { GameObject go = new GameObject("_Cube"); _Cube cube = go.AddComponent <_Cube>(); cube.CreateMesh(); return(cube); }
/*Attempt to attach a Cube at this position of the Assembly. * Positions with potentional success of attachment are kept * in nextPositions. */ public void insertCube(Vector3 pos) { if (isPositionEmpty(pos)) { _Cube cube = getCube(pos); Debug.Log(cube.name); if (cube.name != "NULL") { GameObject tmpCube = (GameObject)Instantiate(CubePrefab, new Vector3(pos.x, pos.y, pos.z), new Quaternion()); cube.colour.alpha = 0.5f; tmpCube.GetComponent <Renderer> ().material.SetColor("_Color", cube.colour.getColor()); tmpCube.transform.Find("Front").GetComponent <TextMesh> ().text = cube.Front.label; tmpCube.transform.Find("Back").GetComponent <TextMesh> ().text = cube.Back.label; tmpCube.transform.Find("Left").GetComponent <TextMesh> ().text = cube.Left.label; tmpCube.transform.Find("Right").GetComponent <TextMesh> ().text = cube.Right.label; tmpCube.transform.Find("Top").GetComponent <TextMesh> ().text = cube.Top.label; tmpCube.transform.Find("Bottom").GetComponent <TextMesh> ().text = cube.Bottom.label; Vector3 tmpPos = new Vector3(0, 0, 0); tmpPos = new Vector3(1 + pos.x, pos.y, pos.z); if (isPositionEmpty(tmpPos)) { nextPositions.Add(tmpPos); } tmpPos = new Vector3(pos.x - 1, pos.y, pos.z); if (isPositionEmpty(tmpPos)) { nextPositions.Add(tmpPos); } tmpPos = new Vector3(pos.x, 1 + pos.y, pos.z); if (isPositionEmpty(tmpPos)) { nextPositions.Add(tmpPos); } tmpPos = new Vector3(pos.x, pos.y - 1, pos.z); if (isPositionEmpty(tmpPos)) { nextPositions.Add(tmpPos); } tmpPos = new Vector3(pos.x, pos.y, 1 + pos.z); if (isPositionEmpty(tmpPos)) { nextPositions.Add(tmpPos); } tmpPos = new Vector3(pos.x, pos.y, pos.z - 1); if (isPositionEmpty(tmpPos)) { nextPositions.Add(tmpPos); } } } else { } }
public void setData(List <_Cube> c, List <_Glue> g, _Cube s) { CubeSet = c; Glues = g; Seed = s; }
public SavingAndLoadingClass(List <_Cube> c, List <_Glue> g, _Cube s) { CubeSet = c; Glues = g; Seed = s; }
/* * Retrive a Cube that can attach to the assembly at postion "pos". * Check each cube in order and keep track of the sum of glue strengths. * This can be further imporved by checking the cubes in random order * rather than in order, but keep track of the cubes that you have already checked * so that you do not check them again. */ public _Cube getCube(Vector3 pos) { _Cube tmpCube = new _Cube(); Collider[] hitColliders = Physics.OverlapSphere(pos, 0.1f); int sumGlueStrength = 0; Dictionary <string, int> availableGlues = populateGlueDict(); //These if statements check if the face of the current cube + an available face in the assembly matches one of the keys in the glue Dictionary // if the pair exists then add the strenght value to the sumGlueStrength for (int j = 0; j < setManager.CubeSet.Count; j++) { tmpCube = setManager.CubeSet [j]; if (tmpCube.current_count != 0 || !setManager.discrete_counts_flag) { if (!isPositionEmpty(new Vector3(pos.x, pos.y, pos.z - 1))) { string front_glue = checkGlues(new Vector3(pos.x, pos.y, pos.z - 1), "Front"); string gluePair1 = tmpCube.Front.label + ',' + front_glue; string gluePair2 = front_glue + tmpCube.Front.label; if (availableGlues.ContainsKey(gluePair1)) { Debug.Log(availableGlues [gluePair1]); sumGlueStrength += availableGlues [gluePair1]; } if (availableGlues.ContainsKey(gluePair2)) { sumGlueStrength += availableGlues [gluePair2]; } } if (!isPositionEmpty(new Vector3(pos.x, pos.y, pos.z + 1))) { string back_glue = checkGlues(new Vector3(pos.x, pos.y, pos.z + 1), "Back"); string gluePair1 = tmpCube.Back.label + ',' + back_glue; string gluePair2 = back_glue + tmpCube.Back.label; if (availableGlues.ContainsKey(gluePair1)) { Debug.Log(availableGlues [gluePair1]); sumGlueStrength += availableGlues [gluePair1]; } if (availableGlues.ContainsKey(gluePair2)) { sumGlueStrength += availableGlues [gluePair2]; } } if (!isPositionEmpty(new Vector3(pos.x + 1, pos.y, pos.z))) { string right_glue = checkGlues(new Vector3(pos.x + 1, pos.y, pos.z), "Right"); string gluePair1 = tmpCube.Right.label + ',' + right_glue; string gluePair2 = right_glue + tmpCube.Right.label; if (availableGlues.ContainsKey(gluePair1)) { Debug.Log(availableGlues [gluePair1]); sumGlueStrength += availableGlues [gluePair1]; } if (availableGlues.ContainsKey(gluePair2)) { sumGlueStrength += availableGlues [gluePair2]; } } if (!isPositionEmpty(new Vector3(pos.x - 1, pos.y, pos.z))) { string left_glue = checkGlues(new Vector3(pos.x - 1, pos.y, pos.z), "Left"); string gluePair1 = tmpCube.Left.label + ',' + left_glue; string gluePair2 = left_glue + tmpCube.Left.label; if (availableGlues.ContainsKey(gluePair1)) { Debug.Log(availableGlues [gluePair1]); sumGlueStrength += availableGlues [gluePair1]; } if (availableGlues.ContainsKey(gluePair2)) { sumGlueStrength += availableGlues [gluePair2]; } } if (!isPositionEmpty(new Vector3(pos.x, pos.y + 1, pos.z))) { string top_glue = checkGlues(new Vector3(pos.x, pos.y + 1, pos.z), "Top"); string gluePair1 = tmpCube.Top.label + ',' + top_glue; string gluePair2 = top_glue + tmpCube.Top.label; if (availableGlues.ContainsKey(gluePair1)) { Debug.Log(availableGlues [gluePair1]); sumGlueStrength += availableGlues [gluePair1]; } if (availableGlues.ContainsKey(gluePair2)) { sumGlueStrength += availableGlues [gluePair2]; } } if (!isPositionEmpty(new Vector3(pos.x, pos.y - 1, pos.z))) { string bottom_glue = checkGlues(new Vector3(pos.x, pos.y - 1, pos.z), "Bottom"); string gluePair1 = tmpCube.Bottom.label + ',' + bottom_glue; string gluePair2 = bottom_glue + tmpCube.Bottom.label; if (availableGlues.ContainsKey(gluePair1)) { Debug.Log(availableGlues [gluePair1]); sumGlueStrength += availableGlues [gluePair1]; } if (availableGlues.ContainsKey(gluePair2)) { sumGlueStrength += availableGlues [gluePair2]; } } Debug.Log(tmpCube.name + " " + sumGlueStrength); if (sumGlueStrength >= setManager.temperature) { break; } sumGlueStrength = 0; } } if (sumGlueStrength >= setManager.temperature) { if (setManager.discrete_counts_flag && (tmpCube.count > 0)) { tmpCube.current_count--; } return(tmpCube); } else { //tmpCube.name = "NULL"; return(new _Cube()); } }
void Awake() { cube = target as _Cube; }