Esempio n. 1
0
 public static MyMaterials getInstance()
 {
     if (instance == null)
     {
         instance = new MyMaterials();
     }
     return(instance);
 }
        internal bool IsMergable(MyMesh mesh)
        {
            // check if one and only spoorted vertex format
            // check if same material as the rest
            // check if has one part(!)
            // check if has one lod - for now

            return
                (mesh.LODs.Length == 1 &&
                 mesh.LODs[0].m_meshInfo.PartsNum == 1 &&
                 mesh.LODs[0].m_meshInfo.VertexLayout == MyMeshTableSRV.OneAndOnlySupportedVertexLayout &&
                 MyMaterials.AreMergable(mesh.LODs[0].m_meshInfo.m_submeshes[MyMesh.DEFAULT_MESH_TECHNIQUE][0].Material, m_rootMaterial));
        }
Esempio n. 3
0
    private void RenderRandomModels()
    {
        if (bInit)
        {
            return;
        }
        bInit = true;

        // 盒子的纹理材质
        // ------
        Material mat = (Material)MyMaterials.getInstance().GetMaterial();

        for (int i = 0; i < board.transform.childCount; i++)
        {
            GameObject tempObject = board.transform.GetChild(i).gameObject;
            tempObject.GetComponent <MeshRenderer>().material = mat;
        }

        // 加载模型文件
        // ------
        List <string> modelNames = Models.getInstance().GetModelNames();

        for (int i = 0; i < modelNames.Count; i++)
        {
            float z = Random.Range(-20.0f, 20.0f);
            float y = 40.0f;
            float x = Random.Range(-20.0f, 20.0f);

            GameObject temp = Instantiate(Models.getInstance().GetModelsByName(modelNames[i])) as GameObject;

            // 随机位置
            temp.transform.localScale = new Vector3(500.0f, 500.0f, 500.0f);
            temp.transform.position   = new Vector3(x, y, z);
            temp.transform.Rotate(new Vector3(Random.Range(0.0f, 90.0f), Random.Range(0.0f, 90.0f), Random.Range(0.0f, 90.0f)));
            temp.transform.parent = this.transform;

            // 添加组件
            temp.AddComponent <MeshCollider>();
            temp.GetComponent <MeshCollider>().convex = true;
            temp.AddComponent <Rigidbody>();
            temp.GetComponent <Rigidbody>().constraints = RigidbodyConstraints.FreezePositionX;
            temp.AddComponent <BVisible>();
        }

        // 添加摄像机和灯光 并渲染图片
        // ------
        StartCoroutine(RenderPic());
    }
Esempio n. 4
0
    private void CmdAssignNewColor()
    {
        int numberOfPlayers = 0;

        foreach (GameObject player in GameObject.FindGameObjectsWithTag("Player"))
        {
            if (player != null && player != this.gameObject)
            {
                numberOfPlayers++;
            }
        }

        if (numberOfPlayers >= (int)MyMaterials.numOfTypes)
        {
            numberOfPlayers = (numberOfPlayers % (int)MyMaterials.numOfTypes);
        }

        Debug.LogWarning(numberOfPlayers);

        myMat = (MyMaterials)(numberOfPlayers);
    }