Ejemplo n.º 1
0
        public void JointNoMultiple()
        {
            List <UnityEngine.Transform> lstTfs = new List <UnityEngine.Transform> ();

            CollectTransforms.Do(lstTfs, go.transform);
            Dictionary <string, int> dictCount = new Dictionary <string, int> ();

            for (int i = 0; i < lstTfs.Count; i++)
            {
                UnityEngine.Transform tf = lstTfs [i];
                if (dictCount.ContainsKey(tf.name))
                {
                    dictCount [tf.name]++;
                }
                else
                {
                    dictCount.Add(tf.name, 1);
                }
            }
            Dictionary <string, int> .Enumerator e = dictCount.GetEnumerator();
            while (e.MoveNext())
            {
                Assert.AreEqual(e.Current.Value, 1);
            }
        }
Ejemplo n.º 2
0
        public void AllSourceBeExported()
        {
            List <UnityEngine.Transform> lstTfs = new List <UnityEngine.Transform> ();

            CollectTransforms.Do(lstTfs, go.transform);

            HashSet <string> hashJoints = new HashSet <string> ();

            for (int i = 0; i < skeletons.JointsLength; i++)
            {
                Schema.Joint j = skeletons.GetJoints(i);
                hashJoints.Add(j.Names);
            }

            for (int i = 0; i < lstTfs.Count; i++)
            {
                Assert.IsTrue(hashJoints.Contains(lstTfs [i].name));
            }
        }
Ejemplo n.º 3
0
        public void JointEqualSource()
        {
            List <UnityEngine.Transform> lstTfs = new List <UnityEngine.Transform> ();

            CollectTransforms.Do(lstTfs, go.transform);
            Dictionary <string, UnityEngine.Transform> dictTfs = new Dictionary <string, UnityEngine.Transform> ();

            for (int i = 0; i < lstTfs.Count; i++)
            {
                dictTfs.Add(lstTfs [i].name, lstTfs [i]);
            }

            for (int i = 0; i < skeletons.JointsLength; i++)
            {
                Schema.Joint j = skeletons.GetJoints(i);

                Assert.IsTrue(dictTfs.ContainsKey(j.Names));
                UnityEngine.Transform tf = dictTfs [j.Names];

                Renderer r = tf.gameObject.GetComponent <Renderer> ();
                Assert.IsTrue(r == null);

                string parentGoName    = (tf.parent != go.transform) ? tf.parent.name : null;
                string parentJointName = (j.Parent >= 0) ? skeletons.GetJoints(j.Parent).Names : null;
                Assert.AreEqual(parentGoName, parentJointName);

                Assert.Less(Mathf.Abs(tf.localPosition.x - j.Transform.Pos.X), 0.0001f);
                Assert.Less(Mathf.Abs(tf.localPosition.y - j.Transform.Pos.Y), 0.0001f);
                Assert.Less(Mathf.Abs(tf.localPosition.z - j.Transform.Pos.Z), 0.0001f);

                Assert.Less(Mathf.Abs(tf.localRotation.x - j.Transform.Rot.X), 0.0001f);
                Assert.Less(Mathf.Abs(tf.localRotation.y - j.Transform.Rot.Y), 0.0001f);
                Assert.Less(Mathf.Abs(tf.localRotation.z - j.Transform.Rot.Z), 0.0001f);
                Assert.Less(Mathf.Abs(tf.localRotation.w - j.Transform.Rot.W), 0.0001f);

                Assert.Less(Mathf.Abs(tf.localScale.x - j.Transform.Scl.X), 0.0001f);
                Assert.Less(Mathf.Abs(tf.localScale.y - j.Transform.Scl.Y), 0.0001f);
                Assert.Less(Mathf.Abs(tf.localScale.z - j.Transform.Scl.Z), 0.0001f);
            }
        }
Ejemplo n.º 4
0
        static public ByteBuffer Save(GameObject go)
        {
            // 第一层,寻找自己不带Renderer的节点
            List <UnityEngine.Transform> lstTfs = new List <UnityEngine.Transform>();

            CollectTransforms.Do(lstTfs, go.transform);

            FlatBufferBuilder builder = new FlatBufferBuilder(InitBufferSize);

            Offset <Schema.Joint>[] joints = new Offset <Schema.Joint> [lstTfs.Count];
            for (int i = 0; i < lstTfs.Count; i++)
            {
                int parent = lstTfs.FindIndex(new Predicate <UnityEngine.Transform>(
                                                  (target) =>
                {
                    return(target.Equals(lstTfs[i].parent));
                }
                                                  ));
                var name = builder.CreateString(lstTfs[i].name);

                Schema.Joint.StartJoint(builder);
                Schema.Joint.AddNames(builder, name);
                Schema.Joint.AddTransform(builder, Schema.Transform.CreateTransform(builder,
                                                                                    lstTfs[i].localPosition.x, lstTfs[i].localPosition.y, lstTfs[i].localPosition.z,
                                                                                    lstTfs[i].localRotation.x, lstTfs[i].localRotation.y, lstTfs[i].localRotation.z, lstTfs[i].localRotation.w,
                                                                                    lstTfs[i].localScale.x, lstTfs[i].localScale.y, lstTfs[i].localScale.z
                                                                                    ));
                Schema.Joint.AddParent(builder, parent);
                joints[i] = Schema.Joint.EndJoint(builder);
            }
            VectorOffset jointVector = Skeletons.CreateJointsVector(builder, joints);

            Skeletons.StartSkeletons(builder);
            Skeletons.AddJoints(builder, jointVector);
            Offset <Schema.Skeletons> skeleton = Skeletons.EndSkeletons(builder);

            builder.Finish(skeleton.Value);
            return(builder.DataBuffer);
        }