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);; } }
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); }
private void BuildTriangleCollider(CollisionMeshData data, Vector3[] vertices) { AddTriangleColliderIndices(data); for (int i = 0; i < vertices.Length; i++) { data.AddVertex(vertices[i]); } }
public Mesh BuildLeftSlopeCollider(CollisionMeshData data) { BuildTriangleCollider(data, leftSlopeFront); BuildTriangleCollider(data, leftSlopeBack); BuildSquareCollider(data, squareRight); BuildSquareCollider(data, leftSlopeTop); BuildSquareCollider(data, squareBottom); return(data.GetMesh()); }
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(); } }