Example #1
0
        public void cvObject()
        {
            cvLine line = new cvLine()
            {
                type  = "cvLine",
                color = new Color32(0, 0, 0, 255),
                pos0  = new Vector3(0, 0, 1),
                pos1  = new Vector3(123, 32, 3)
            };

            cvObject obj = new cvObject();

            obj.name       = "一个名字";
            obj.prefabName = "pname";
            obj.position   = new Vector3(1, 2, 3);
            obj.rotation   = Quaternion.Euler(123, 312, 3);
            cvObject obj2 = new cvObject();

            obj2.components.Add(line);
            obj.children.Add(obj2);

            Assert.IsTrue(object.ReferenceEquals(obj.children[0], obj2));

            string   text = JsonConvert.SerializeObject(obj);
            cvObject objr = JsonConvert.DeserializeObject <cvObject>(text);

            Assert.IsTrue(objr.children.Count == 1);
            Assert.IsTrue(objr.children[0].components.Count == 1);
        }
Example #2
0
        public void SetUp()
        {
            //Newtonsoft.Json的U3D扩展类型支持
            xuexue.json.U3DJsonSetting.SetDefault();

            //初始化一段实验数据.
            cvLine line = new cvLine()
            {
                type  = "cvLine",
                color = new Color32(0, 0, 0, 255),
                pos0  = new Vector3(0, 0, 1),
                pos1  = new Vector3(123, 32, 3)
            };
            cvObject obj2 = new cvObject();

            obj2.components.Add(line);

            cvObject obj = new cvObject();

            obj.name       = "一个名字";
            obj.prefabName = "pname";
            obj.position   = new Vector3(1, 2, 3);
            obj.rotation   = Quaternion.Euler(123, 312, 3);
            obj.children.Add(obj2);

            scene.objects.Add(obj);
            scene.objects.Add(obj);
            scene.objects.Add(obj);
        }
Example #3
0
        /// <summary>
        /// 添加一个cv物体到场景里
        /// </summary>
        /// <param name="co"></param>
        /// <param name="parent"></param>
        private void AddCvObj(cvObject co, GameObject parent = null)
        {
            //如果是隐藏那么就不显示了
            //if (!co.isActive)
            //{
            //    return;
            //}
            GameObject go;

            if (co.type > 0 || !string.IsNullOrEmpty(co.prefabName))//如果它不是一个空物体
            {
                GameObject pref = Resources.Load <GameObject>(co.prefabName);

                if (pref != null)//如果支持资源里面有这个物体
                {
                    go = GameObject.Instantiate(pref);
                }
                else
                {
                    go = new GameObject();
                }
            }
            else
            {
                go = new GameObject();
            }

            go.name = co.name;
            if (parent != null)
            {
                go.transform.parent = parent.transform;
            }

            if (co.isLocal)//json里的坐标是否是本地坐标
            {
                go.transform.localPosition = co.position;
                go.transform.localRotation = co.rotation;
            }
            else
            {
                go.transform.position = co.position;
                go.transform.rotation = co.rotation;
            }

            go.transform.localScale = co.localScale;

            if (co.components != null)
            {
                for (int i = 0; i < co.components.Count; i++)
                {
                    this.AddComponentWithJsonObj(co.components[i], go);
                }
            }

            //设置好自己的坐标之后在安排自己的子物体们
            if (co.children != null)
            {
                for (int i = 0; i < co.children.Count; i++)
                {
                    AddCvObj(co.children[i], go);//递归一下
                }
            }

            //当这个物体有模型的时候,尝试给颜色赋值,寻找子物体下面的组件
            if ((!string.IsNullOrEmpty(co.prefabName) || co.type != 0) &&
                co.isColor)//如果规定了不使用颜色,那么就不要进下面的处理
            {
                Renderer rnd = go.GetComponentInChildren <Renderer>();
                if (rnd != null)
                {
                    if (!dictMat.ContainsKey(co.color))
                    {
                        dictMat[co.color]       = new Material(rnd.material);
                        dictMat[co.color].color = co.color;
                        //Debug.Log($"增加一个材质,当前材质个数{dictMat.Count}");
                    }
                    rnd.material = dictMat[co.color];
                }
            }
            go.SetActive(co.isActive);
            _listObj.Add(go);//记录这个添加的物体
        }