Exemple #1
0
    public override void OnImportAsset(AssetImportContext ctx)
    {
        VoxFileReader file = new VoxFileReader(ctx.assetPath);


        fileName   = getName(ctx);
        path       = ctx.assetPath;
        gameObject = new GameObject(fileName + "-prefab");

        gameObject.AddComponent <MeshRenderer>();
        var filter = gameObject.AddComponent <MeshFilter>();

        var model = VoxelModelInit(file);

        Material material = new Material(GetDefaulTexture());

        material.name = fileName + "-Material";
        material.SetTexture("_BaseMap", file.texturePalette);
        material.SetColor("_BaseColor", Color.white);

        var setting = VoxelSettingInit(file, material);

        ctx.AddObjectToAsset(fileName + "VoxelPrefab", gameObject);

        saveMesh(gameObject, ctx, setting, model);

        ctx.AddObjectToAsset(fileName + "-VoxelModel", model);
        ctx.AddObjectToAsset(fileName + "texture", file.texturePalette, file.texturePalette);
        ctx.AddObjectToAsset(fileName + "-VoxelMaterial", material);
        setting.name = fileName + "-VoxelSetting";
        if (ImportedSetting == null)
        {
            ctx.AddObjectToAsset(fileName + "-VoxelSetting", setting);
        }
    }
Exemple #2
0
    Settings VoxelSettingInit(VoxFileReader file, Material material)
    {
        if (ImportedSetting != null)
        {
            return(ImportedSetting);
        }
        var setting = ScriptableObject.CreateInstance <Settings>();

        setting.AddRule();
        setting.RenderRules[0].material = material;
        return(setting);
    }
Exemple #3
0
    VoxelModel VoxelModelInit(VoxFileReader file)
    {
        var model = ScriptableObject.CreateInstance <VoxelModel>();

        model.name = fileName + "-VoxelModel";
        model.data = new ushort[file.ModelList[0].GetLength(0) * file.ModelList[0].GetLength(1) * file.ModelList[0].GetLength(2)];
        for (int x = 0; x < file.ModelList[0].GetLength(0); x++)
        {
            for (int y = 0; y < file.ModelList[0].GetLength(1); y++)
            {
                for (int z = 0; z < file.ModelList[0].GetLength(2); z++)
                {
                    model.data[x + y * file.ModelList[0].GetLength(0) + z * file.ModelList[0].GetLength(0) * file.ModelList[0].GetLength(1)] = file.ModelList[0][x, y, z];
                }
            }
        }
        model.SetSize(new Vector3Int(file.ModelList[0].GetLength(0), file.ModelList[0].GetLength(1), file.ModelList[0].GetLength(2)));

        model.hideFlags = HideFlags.NotEditable;
        EditorUtility.SetDirty(model);
        return(model);
    }