コード例 #1
0
        public void CheckWeights()
        {
            int        chainCountPerBone = 3;
            int        bonesCount        = 3;
            float      length            = 100f;
            Quaternion rotation          = Quaternion.Euler(0f, 180f, 0);
            var        go = GenerateGO();

            var meshGen = new RopeMeshChainGenerator();

            meshGen.SourceObject  = go;
            meshGen.StepRotation  = rotation;
            meshGen.ChainsPerBone = chainCountPerBone;

            var result = meshGen.Create(1f, length, bonesCount, false);

            var weights = result.mesh.boneWeights;

            int chainCount  = (chainCountPerBone - 1) * (bonesCount - 1) + 1;
            int orVertCount = go.GetComponent <MeshFilter>().sharedMesh.vertexCount;

            Assert.AreEqual(chainCount * orVertCount, weights.Length);

            AssertWeights(weights, 0 * orVertCount, orVertCount, 0, 1, 1f, 0f);
            AssertWeights(weights, 1 * orVertCount, orVertCount, 0, 1, .5f, .5f);
            AssertWeights(weights, 2 * orVertCount, orVertCount, 0, 1, 0f, 1f);

            AssertWeights(weights, 2 * orVertCount, orVertCount, 1, 2, 1f, 0f);
            AssertWeights(weights, 3 * orVertCount, orVertCount, 1, 2, .5f, .5f);
            AssertWeights(weights, 4 * orVertCount, orVertCount, 1, 2, 0f, 1f);
        }
コード例 #2
0
        public void CheckVertices()
        {
            int        chainCountPerBone = 3;
            int        bonesCount        = 2;
            float      length            = 100f;
            Quaternion rotation          = Quaternion.Euler(0f, 180f, 0);
            var        go = GenerateGO();

            var meshGen = new RopeMeshChainGenerator();

            meshGen.SourceObject  = go;
            meshGen.StepRotation  = rotation;
            meshGen.ChainsPerBone = chainCountPerBone;

            var result = meshGen.Create(1f, length, bonesCount, false);

            int   chainCount = (chainCountPerBone - 1) * (bonesCount - 1) + 1;
            float chainStep  = length / (chainCount - 1);

            CheckVertexes(go, result.mesh, rotation, chainCount, chainStep);
        }
コード例 #3
0
        public void CheckColors32()
        {
            int        chainCountPerBone = 3;
            int        bonesCount        = 2;
            float      length            = 100f;
            Quaternion rotation          = Quaternion.Euler(0f, 180f, 0);
            var        go = GenerateGO();

            var meshGen = new RopeMeshChainGenerator();

            meshGen.SourceObject  = go;
            meshGen.StepRotation  = rotation;
            meshGen.ChainsPerBone = chainCountPerBone;

            var result = meshGen.Create(1f, length, bonesCount, false);

            int chainCount = (chainCountPerBone - 1) * (bonesCount - 1) + 1;

            var colorsOld = new List <Color32>(go.GetComponent <MeshFilter>().sharedMesh.colors32);
            var colorsNew = new List <Color32>(result.mesh.colors32);

            CheckDataDupls <Color32>(chainCount, colorsOld, colorsNew);
        }
コード例 #4
0
        public void CheckVertexLength()
        {
            int        chainCountPerBone = 3;
            Quaternion rotation          = Quaternion.identity;
            var        go = GenerateGO();

            var meshGen = new RopeMeshChainGenerator();

            meshGen.SourceObject = go;


            meshGen.StepRotation = rotation;

            meshGen.ChainsPerBone = chainCountPerBone;

            int bonesCount = 2;
            var result     = meshGen.Create(1f, 100f, bonesCount, false);

            var oldMeshVertices = go.GetComponent <MeshFilter>().sharedMesh.vertices;
            var newMeshVertices = result.mesh.vertices;
            int chainCount      = (chainCountPerBone - 1) * (bonesCount - 1) + 1;

            Assert.AreEqual(oldMeshVertices.Length * chainCount, newMeshVertices.Length);
        }