/* Crafter®.Asset Copyright (C) 2026 Catcrafts® catcrafts.net This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3.0 as published by the Free Software Foundation; This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ import Crafter.Asset; import Crafter.Math; import std; using namespace Crafter; namespace fs = std::filesystem; int main(int argc, char** argv) { if (argc != 3) { std::cout << "Usage: crafter-asset \n"; return 1; } fs::path inputPath = argv[1]; fs::path outputPath = argv[2]; if (!fs::exists(inputPath)) { std::cerr << "Error: Input file does not exist.\n"; return 1; } std::string extension = inputPath.extension().string(); try { if (extension == ".obj") { // Load OBJ as MeshAsset with normal/tangent/uv data auto mesh = MeshAsset::LoadOBJ(inputPath); mesh.Save(outputPath); } else if (extension == ".png") { // Load PNG as TextureAsset auto texture = TextureAsset>::LoadPNG(inputPath); texture.Save(outputPath); } else { std::cerr << "Unsupported file type: " << extension << "\n"; return 1; } } catch (const std::exception& e) { std::cerr << "Error: " << e.what() << "\n"; return 1; } return 0; }