/// <summary> /// 結果書き出し /// </summary> public void WriteResultFile(string path) { System.Text.StringBuilder sb = new System.Text.StringBuilder(1024 * 1024); AppendHeaderToStringBuilder(sb); for (int i = 0; i < drawStatsList.Count; ++i) { DrawStats drawStats = drawStatsList[i]; sb.Append(frameIdxList[i]).Append(","); sb.Append(","); // Total sb.Append(drawStats.setPassCalls).Append(","); sb.Append(drawStats.drawCalls).Append(","); sb.Append(drawStats.batches).Append(","); sb.Append(drawStats.triangles).Append(","); sb.Append(drawStats.vertices).Append(","); sb.Append(","); // DynamicBatching sb.Append(drawStats.dynamicBatchedDrawCalls).Append(","); sb.Append(drawStats.dynamicBatchedTriangles).Append(","); sb.Append(drawStats.dynamicBatchedTriangles).Append(","); sb.Append(drawStats.dynamicBatchedVertices).Append(","); sb.Append(","); // static batching sb.Append(drawStats.staticBatchedDrawCalls).Append(","); sb.Append(drawStats.staticBatchedTriangles).Append(","); sb.Append(drawStats.staticBatchedTriangles).Append(","); sb.Append(drawStats.staticBatchedVertices).Append(","); // instancing sb.Append(","); sb.Append(drawStats.hasInstancing).Append(","); sb.Append(drawStats.instancedBatchedDrawCalls).Append(","); sb.Append(drawStats.instancedBatches).Append(","); sb.Append(drawStats.instancedTriangles).Append(","); sb.Append(drawStats.instancedVertices).Append(","); //screen Info sb.Append(","); sb.Append(drawStats.screenWidth).Append(","); sb.Append(drawStats.screenHeight).Append(","); sb.Append(drawStats.screenBytes).Append(","); // RenderTexture Info sb.Append(","); sb.Append(drawStats.renderTextureCount).Append(","); sb.Append(drawStats.renderTextureBytes).Append(","); sb.Append(drawStats.renderTextureStateChanges).Append(","); // SkinnedMesh sb.Append(","); sb.Append(drawStats.visibleSkinnedMeshes).Append(","); // etc... sb.Append(","); sb.Append(drawStats.totalAvailableVRamMBytes).Append(","); sb.Append(drawStats.vboTotal).Append(","); sb.Append(drawStats.vboUploads).Append(","); sb.Append(drawStats.ibUploads).Append(","); sb.Append(drawStats.shadowCasters).Append(","); sb.Append("\n"); } System.IO.File.WriteAllText(path, sb.ToString()); }
/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); AppendHeaderToStringBuilder(csvStringGenerator); for (int i = 0; i < drawStatsList.Count; ++i) { DrawStats drawStats = drawStatsList[i]; csvStringGenerator.AppendColumn(frameIdxList[i]); csvStringGenerator.AppendColumn(""); // Total csvStringGenerator.AppendColumn(drawStats.setPassCalls); csvStringGenerator.AppendColumn(drawStats.drawCalls); csvStringGenerator.AppendColumn(drawStats.batches); csvStringGenerator.AppendColumn(drawStats.triangles); csvStringGenerator.AppendColumn(drawStats.vertices); csvStringGenerator.AppendColumn(""); // DynamicBatching csvStringGenerator.AppendColumn(drawStats.dynamicBatchedDrawCalls); csvStringGenerator.AppendColumn(drawStats.dynamicBatchedTriangles); csvStringGenerator.AppendColumn(drawStats.dynamicBatchedTriangles); csvStringGenerator.AppendColumn(drawStats.dynamicBatchedVertices); csvStringGenerator.AppendColumn(""); // static batching csvStringGenerator.AppendColumn(drawStats.staticBatchedDrawCalls); csvStringGenerator.AppendColumn(drawStats.staticBatchedTriangles); csvStringGenerator.AppendColumn(drawStats.staticBatchedTriangles); csvStringGenerator.AppendColumn(drawStats.staticBatchedVertices); // instancing csvStringGenerator.AppendColumn(""); csvStringGenerator.AppendColumn(drawStats.hasInstancing); csvStringGenerator.AppendColumn(drawStats.instancedBatchedDrawCalls); csvStringGenerator.AppendColumn(drawStats.instancedBatches); csvStringGenerator.AppendColumn(drawStats.instancedTriangles); csvStringGenerator.AppendColumn(drawStats.instancedVertices); //screen Info csvStringGenerator.AppendColumn(""); csvStringGenerator.AppendColumn(drawStats.screenWidth); csvStringGenerator.AppendColumn(drawStats.screenHeight); csvStringGenerator.AppendColumn(drawStats.screenBytes); // RenderTexture Info csvStringGenerator.AppendColumn(""); csvStringGenerator.AppendColumn(drawStats.renderTextureCount); csvStringGenerator.AppendColumn(drawStats.renderTextureBytes); csvStringGenerator.AppendColumn(drawStats.renderTextureStateChanges); // SkinnedMesh csvStringGenerator.AppendColumn(""); csvStringGenerator.AppendColumn(drawStats.visibleSkinnedMeshes); // etc... csvStringGenerator.AppendColumn(""); csvStringGenerator.AppendColumn(drawStats.totalAvailableVRamMBytes); csvStringGenerator.AppendColumn(drawStats.vboTotal); csvStringGenerator.AppendColumn(drawStats.vboUploads); csvStringGenerator.AppendColumn(drawStats.ibUploads); csvStringGenerator.AppendColumn(drawStats.shadowCasters); csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }
// Update is called once per frame void Update() { if (isblank) { if (path != null && path != "") { _vessel = ExtensionMethods.InstantiateOut( path, Vector3.zero, Quaternion.Euler(-90, 0, 0) ); Vessel vessel = _vessel.AddComponent <Vessel>(); vessel.enabled = false; Rigidbody rb = _vessel.AddComponent <Rigidbody>(); rb.isKinematic = true; rb.useGravity = false; DrawStats drawStats = _vessel.AddComponent <DrawStats>(); drawStats.enabled = false; _vessel.AddComponent <ReactionWheel>(); cam.transform.root.GetComponent <VesselCamera>().init(_vessel); isblank = false; } } //Start The Vessel if (test) { //Removes all snappoints GameObject[] snappoints = GameObject.FindGameObjectsWithTag("Snappoint"); foreach (GameObject snappoint in snappoints) { Destroy(snappoint.gameObject); } _vessel.GetComponent <Vessel>().enabled = true; _vessel.GetComponent <Vessel>().Stage = LastStage; //Get the lowest position of the Vessel Transform[] vesselchilds = _vessel.GetComponentsInChildren <Transform>(); GameObject lowestChild = _vessel; foreach (Transform child in vesselchilds) { if (child.position.y < lowestChild.transform.position.y) { lowestChild = child.gameObject; } } Mesh mesh = lowestChild.GetComponent <MeshFilter>().mesh; Vector3[] vertices = mesh.vertices; float lowest = 0f; int i = 0; while (i < vertices.Length) { if (vertices[i].z > lowest) { lowest = vertices[i].z; } i++; } //Loads the plane, and put it on the lowest position Instantiate( Resources.Load("Plane"), new Vector3(0f, lowestChild.transform.position.y - Mathf.Abs(lowest), 0f), Quaternion.identity ); test = false; } Ray ray = cam.ScreenPointToRay(Input.mousePosition); //Gets MouseButton and Spawns your object if (Input.GetMouseButtonDown(0)) { if (Physics.Raycast(ray, out hit)) { if (hit.collider.CompareTag("Snappoint")) { Vector3 spawnpoint = hit.collider.transform.position + hit.collider.transform.rotation * Vector3.forward * 0.5f; GameObject go = ExtensionMethods.InstantiateOut( path, spawnpoint, hit.collider.transform.rotation, hit.collider.transform.root ); go.GetComponent <Part>().Parent = hit.collider.transform.parent.gameObject; if (hit.collider.transform.parent.GetComponent <Decoupler>() != null) { DecouplerKid decoupler = go.AddComponent <DecouplerKid>(); decoupler.Parent = hit.collider.transform.parent.gameObject; } else if (hit.collider.transform.parent.GetComponent <DecouplerKid>() != null) { DecouplerKid decoupler = go.AddComponent <DecouplerKid>(); decoupler.Parent = hit.collider.transform.parent.GetComponent <DecouplerKid>().Parent; } if (go.GetComponent <Staged>()) { go.GetComponent <Staged>().Stage = LastStage; LastStage++; } //Check if symetry is enabled, and spawn more objects if (symetry > 1) { if (Mathf.Abs(spawnpoint.x) > 0.1f || Mathf.Abs(spawnpoint.z) > 0.1f) { for (var i = 1; i < symetry; i++) { GameObject symgo = ExtensionMethods.InstantiateOut( path, Quaternion.AngleAxis(360 / symetry * i, Vector3.up) * spawnpoint, Quaternion.AngleAxis(360 / symetry * i, Vector3.up) * hit.collider.transform.rotation, hit.collider.transform.root ); if (hit.collider.transform.parent.GetComponent <Decoupler>() != null) { DecouplerKid decoupler = symgo.AddComponent <DecouplerKid>(); decoupler.Parent = hit.collider.transform.parent.gameObject; } else if (hit.collider.transform.parent.GetComponent <DecouplerKid>() != null) { DecouplerKid decoupler = symgo.AddComponent <DecouplerKid>(); decoupler.Parent = hit.collider.transform.parent.GetComponent <DecouplerKid>().Parent; } if (symgo.GetComponent <Staged>()) { symgo.GetComponent <Staged>().Stage = LastStage; } } } } if (Placeholder != null) { Destroy(Placeholder.gameObject); Placeholder = null; } } } } if (Physics.Raycast(ray, out hit)) { if (hit.collider.CompareTag("Snappoint")) { if (Placeholder == null) { Vector3 spawnpoint = hit.collider.transform.position + hit.collider.transform.rotation * Vector3.forward * 0.5f; Placeholder = ExtensionMethods.InstantiatePlaceholder( path, spawnpoint, hit.collider.transform.rotation ); } } } else if (Placeholder != null) { Destroy(Placeholder.gameObject); Placeholder = null; } /* Translation Gizmos FIXME * if (Input.GetMouseButton(0)) { * if (gizmo != null) { * if (gizmo.name == "X") { * hit.collider.gameObject.transform.parent.transform.parent.Translate( * transform.right * Input.GetAxis("Mouse X") * ); * } * if (gizmo.name == "Y") { * hit.collider.gameObject.transform.parent.transform.parent.Translate( * transform.up * Input.GetAxis("Mouse X") * ); * } * if (gizmo.name == "Z") { * hit.collider.gameObject.transform.parent.transform.parent.Translate( * transform.forward * Input.GetAxis("Mouse X") * ); * } * } * } * * if (Input.GetMouseButtonUp(0)) { * gizmo = null; * } * * * if (Input.GetMouseButtonDown(1)) { * if (Physics.Raycast(ray, out hit)) { * if (hit.collider.transform.parent.CompareTag("Part")) { * //Destroy(hit.collider.transform.parent.gameObject); * if (translationGizmo != null) { * Destroy(translationGizmo.gameObject); * } * else { * translationGizmo = (GameObject) Instantiate( * Resources.Load("TranslationGizmo"), * hit.collider.transform.position/2, * hit.collider.transform.parent.rotation, * hit.collider.transform.parent.gameObject.transform * ); * } * } * } * }*/ }