示例#1
0
    public Mesh BuildCollider(CollisionMeshData data)
    {
        switch (ID)
        {
        case BlockID.StoneSlope:
        case BlockID.GrassSlope:
            switch (BlockDirection)
            {
            case Direction.Left:
                return(MeshBuilder.instance.BuildLeftSlopeCollider(data));

            case Direction.Right:
                return(MeshBuilder.instance.BuildRightSlopeCollider(data));

            case Direction.Front:
                return(MeshBuilder.instance.BuildFrontSlopeCollider(data));

            case Direction.Back:
                return(MeshBuilder.instance.BuildBackSlopeCollider(data));

            default:
                return(null);
            }

        default:
            return(null);;
        }
    }
示例#2
0
    private void AddTriangleColliderIndices(CollisionMeshData data)
    {
        int        offset    = data.GetOffset();
        List <int> triangles = data.GetTriangles();

        triangles.Add(offset + 2);
        triangles.Add(offset + 1);
        triangles.Add(offset + 0);
    }
示例#3
0
    private void BuildTriangleCollider(CollisionMeshData data, Vector3[] vertices)
    {
        AddTriangleColliderIndices(data);

        for (int i = 0; i < vertices.Length; i++)
        {
            data.AddVertex(vertices[i]);
        }
    }
示例#4
0
    public Mesh BuildLeftSlopeCollider(CollisionMeshData data)
    {
        BuildTriangleCollider(data, leftSlopeFront);
        BuildTriangleCollider(data, leftSlopeBack);
        BuildSquareCollider(data, squareRight);
        BuildSquareCollider(data, leftSlopeTop);
        BuildSquareCollider(data, squareBottom);

        return(data.GetMesh());
    }
示例#5
0
文件: Mesh.cs 项目: bmjoy/UnityRipper
        public Mesh(AssetInfo assetInfo) :
            base(assetInfo)
        {
            CompressedMesh = new CompressedMesh(AssetsFile);

            if (IsReadBlendShapes)
            {
                Shapes = new BlendShapeData(AssetsFile);
            }
            if (IsReadLocalAABB)
            {
                LocalAABB = new AABB();
            }
            if (IsReadCollision)
            {
                CollisionData = new CollisionMeshData();
            }
        }