Esempio n. 1
0
        public static VoxelData ImportVoxFile(string filePath)
        {
            var importedData = VoxelImport.Import(filePath);

            if (importedData == null)
            {
                Console.WriteLine("Unable to read file {0}", filePath);
            }
            return(importedData);
        }
Esempio n. 2
0
        public static VoxelData ImportVoxFile(string filePath)
        {
            VoxelData importedData = null;

            try {
                importedData = VoxelImport.Import(filePath);
            } catch (IOException) {
                Console.WriteLine($"Unable to read file {filePath}");
            }
            if (importedData == null)
            {
                Console.WriteLine($"Unable to read file {filePath}");
            }
            return(importedData);
        }
Esempio n. 3
0
    void VoxInspectorGUI(string path)
    {
        var voxelData = VoxelImport.Import(path);

        // Read only
        EditorGUILayout.Vector3Field("Size", new Vector3(voxelData.size.X, voxelData.size.Y, voxelData.size.Z));
        EditorGUILayout.IntField("Count", voxelData.Count);

        // Editable
        GUI.enabled = true;
        if (GUILayout.Button("Create Prefab"))
        {
            VoxAssetPostprocessor.ImportVoxelFile(path);
        }
    }
Esempio n. 4
0
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine("usage: Voxels.CommandLine.exe voxfiles...\n      Converts .vox files to .png and .svg files.");
            }
            else
            {
                NativeLibrary.Initialize();

                foreach (var filename in args)
                {
                    var voxelData = VoxelImport.Import(filename);

                    File.WriteAllBytes(Path.ChangeExtension(filename, ".png"), Renderer.RenderPng(512, voxelData));
                    File.WriteAllBytes(Path.ChangeExtension(filename, ".svg"), Renderer.RenderSvg(512, voxelData));
                }
            }
        }
    public static void ImportVoxelFile(string path)
    {
        var dir  = Path.GetDirectoryName(path);
        var name = Path.GetFileNameWithoutExtension(path);

        var meshDir   = dir + "/Meshes/";
        var prefabDir = dir + "/Prefabs/";

        Directory.CreateDirectory(meshDir);
        Directory.CreateDirectory(prefabDir);

        var prefabPath = prefabDir + name + ".prefab";
        var meshPath   = meshDir + name + ".asset";
        var shadowPath = meshDir + name + ".shadow.asset";

        var mesh = AssetDatabase.LoadAssetAtPath <Mesh>(meshPath);

        if (mesh == null)
        {
            mesh      = new Mesh();
            mesh.name = name;
            AssetDatabase.CreateAsset(mesh, meshPath);
        }

        var shadow = AssetDatabase.LoadAssetAtPath <Mesh>(shadowPath);

        if (shadow == null)
        {
            shadow      = new Mesh();
            shadow.name = name + ".shadow";
            AssetDatabase.CreateAsset(shadow, shadowPath);
        }

        var prefab = AssetDatabase.LoadAssetAtPath <GameObject>(prefabPath);

        if (prefab == null || !prefab.transform.Find("shadow"))
        {
            var gameObject   = new GameObject(name);
            var prefabShadow = new GameObject("shadow");
            prefabShadow.transform.parent = gameObject.transform;
            prefab = PrefabUtility.CreatePrefab(prefabPath, gameObject);
            GameObject.DestroyImmediate(gameObject);
            GameObject.DestroyImmediate(prefabShadow);
        }

        var voxelData = VoxelImport.Import(path);

        VoxelImporter.VoxelsToUnity(prefab, mesh, voxelData, new MeshSettings {
            FrontFaces = true, BackFaces = true
        });

        var shadowObject = prefab.transform.Find("shadow").gameObject;

        VoxelImporter.VoxelsToUnity(shadowObject, shadow, voxelData, new MeshSettings {
            FloorShadow = true
        });

        EditorUtility.SetDirty(mesh);
        EditorUtility.SetDirty(shadow);
        EditorUtility.SetDirty(prefab);
    }