Example #1
0
        /// <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());
        }
Example #3
0
    // 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
 *                                              );
 *                                      }
 *                              }
 *                      }
 *              }*/
    }