void DrawVoxelSelectButtons(int index, SurforgeRig rig) { bool nextButton = false; if (rig.blockType == 2) { Quaternion arrowRotation = Quaternion.identity; arrowRotation.eulerAngles = new Vector3(cluster.voxels[index].transform.localEulerAngles.x, cluster.voxels[index].transform.localEulerAngles.y, cluster.voxels[index].transform.localEulerAngles.z); arrowRotation = arrowRotation * Quaternion.LookRotation(Vector3.right); nextButton = Handles.Button(cluster.voxels[index].transform.position, arrowRotation, buttonSize, buttonSize, Handles.ConeCap); } else { if (rig.transform.position == Vector3.zero) { Handles.color = Color.red + Color.yellow; Quaternion originArrowRotation = Quaternion.identity; originArrowRotation = originArrowRotation * Quaternion.LookRotation(Vector3.right); nextButton = Handles.Button(cluster.voxels[index].transform.position, originArrowRotation, buttonSize, buttonSize, Handles.ConeCap); } else { nextButton = Handles.Button(cluster.voxels[index].transform.position, Quaternion.identity, buttonSize, buttonSize, Handles.CubeCap); } } if (nextButton) { SelectVoxel(cluster.voxels[index]); } }
void Setup() { targetRig = (SurforgeRig)target; v = targetRig.gameObject.transform; parent = v.transform.parent; cluster = (SurforgeCluster)parent.GetComponent <SurforgeCluster>(); }
void OnSceneGUI() { //Tools.current = Tool.None; for (int i = 0; i < cluster.voxels.Count; i++) { if (cluster.voxels[i] != null) { SurforgeRig rig = (SurforgeRig)cluster.voxels[i].GetComponent <SurforgeRig>(); if (rig.blockType == 0) { Handles.color = new Color(0, 0, 0, 1); } if (rig.blockType == 2) { Handles.color = Color.blue + Color.cyan; } if (rig.blockType == 3) { Handles.color = new Color(1, 1, 0, 1); } if (rig.blockType == 4) { Handles.color = new Color(1, 1, 1, 1); } if (rig.blockType == 5) { Handles.color = new Color(1, 0.5f, 1, 1); } if (rig.blockType == 6) { Handles.color = new Color(1, 1, 1, 0.3f); } if (rig.blockType == 7) { Handles.color = new Color(0.5f, 1, 1, 1); } if (rig.blockType == 10) { Handles.color = new Color(0.5f, 0.5f, 1, 1); } DrawVoxelSelectButtons(i, rig); } } }
void AddVoxel(Vector3 voxelPos) { GameObject voxelObj = new GameObject(); voxelObj.name = "vox"; voxelObj.transform.position = voxelPos; voxelObj.transform.parent = cluster.transform; SurforgeRig newVoxelRig = voxelObj.AddComponent <SurforgeRig>(); newVoxelRig.blockType = targetRig.blockType; newVoxelRig.linkType = targetRig.linkType; newVoxelRig.transform.rotation = targetRig.transform.rotation; cluster.voxels.Add(voxelObj.transform); Selection.activeObject = voxelObj; }
void OnSceneGUI() { //Tools.current = Tool.None; int activeClusterIndex = 0; for (int i = 0; i < cluster.voxels.Count; i++) { if (cluster.voxels[i] != null) { SurforgeRig rig = (SurforgeRig)cluster.voxels[i].GetComponent <SurforgeRig>(); if (rig == targetRig) { activeClusterIndex = i; } if (rig.blockType == 0) { Handles.color = new Color(0, 0, 0, 1); } if (rig.blockType == 2) { Handles.color = Color.blue + Color.cyan; } if (rig.blockType == 3) { Handles.color = new Color(1, 1, 0, 1); } if (rig.blockType == 4) { Handles.color = new Color(1, 1, 1, 1); } if (rig.blockType == 5) { Handles.color = new Color(1, 0.5f, 1, 1); } if (rig.blockType == 6) { Handles.color = new Color(1, 1, 1, 0.3f); } if (rig.blockType == 7) { Handles.color = new Color(0.5f, 1, 1, 1); } if (rig.blockType == 10) { Handles.color = new Color(0.5f, 0.5f, 1, 1); } DrawVoxelSelectButtons(i, rig); } } SurforgeRig activeRig = (SurforgeRig)cluster.voxels[activeClusterIndex].GetComponent <SurforgeRig>(); DrawCubeLines(activeRig.transform.position); DrawVoxelAddHandles(); }