WIP Beta released BeamNG Map Options - Map Duplicator and Renamer [v0.3 - 05 Sep]

Discussion in 'Utilities and programming' started by thingshappen, Sep 5, 2013.

  1. thingshappen

    thingshappen
    Expand Collapse

    Joined:
    Aug 23, 2013
    Messages:
    81

    (imported from here)

    If you're making textures, models and other files, make sure you reference them in the .cs files correctly. Either make sure they have the full directory location on them, begin with ./ or have a file extension on the end. Missing all of these makes it impossible for the program to detect what the file is.

    If you have missing textures on rocks ingame, the above message is the reason why. This can be manually changed in art/shapes/rocks/materials.cs. Add one of the extensions on the *map lines that don't have any indication of textures and it'll work.

    This program allows for simple and easy map duplicating and renaming. Currently, developing a new map results in quite a long process of checking all references to files and folders are correct, so I developed a program that allows for a more automated process. Now, rather than manually editing map files, you can just input the current map folder then select duplicate or rename and the program will go off and attempt to carry out that task for you.

    Download (Installer)
    Download (Stand alone)
    (Updated to 0.3 - 05/09/2013 at 22:10 GMT)
    Fixes:
    • Options in the duplication and renaming menus actually do something now.
    • Debug outputs from the removal menu show up.

    New:
    • Removal menu now has selectable options, so you can choose what you want to remove.
    • Removal menu shows you how much has been deleted and how much space it has saved.
    • Duplication and renaming menus now have quick setting buttons, to select the best options for specific events.
    • Added a new option to give you the option as to whether it fixes locations of objects that have no extensions in the files.

    Current Bugs:
    • Doesn't fix up the textures for the rocks correctly, this is due to some bad naming in the materials.cs file for them, so I can't actually tell where the textures are from. This can be fixed manually.

    Current program features:


    • Automatic map duplication
      • Copies the selected map and renames it to a specified name.
      • Renames all definitions of the old map in the files and saves them.
      • Renames all filenames that contain the old level name.
    • Automatic map renaming
      • Same as the map duplication but without copying the map beforehand.
    • [Experimental] File optimisations
      • Checks all references towards files in the art folder then deletes any files not referenced in any of the searched files.

    Future features:


    • Enable further currently disabled features such as automatic copying in of files not in the current folder, such as copying in terrain files that are outside even the folder it is copying from.
    • More suggested program features.

    Current limitations:

    • In order for it to rename the files correctly, they have to have the same target name as the .mis file. Therefore, a file that has already been copied and renamed manually, but the file references haven't will have an issue. It'll work, but it won't rename the reference files unless they are the same as the .mis name.

    Let me know if there's any problems, as I'm more than certain there will be for some of you. Especially let me know if it changes or misses something it really shouldn't. Also, if you have any feature suggestions that fit within the bounds of this program then feel free to suggest them, I might be able to get them implemented.
     

    Attached Files:

    #1 thingshappen, Sep 5, 2013
    Last edited: Sep 30, 2013
    • Like Like x 3
  2. tdev

    tdev
    Expand Collapse
    Developer
    BeamNG Team

    Joined:
    Aug 3, 2012
    Messages:
    3,031
    Re: BeamNG Map Options

    nice idea, awesome :)
     
  3. fetthaufen

    fetthaufen
    Expand Collapse

    Joined:
    Aug 17, 2013
    Messages:
    23
    Re: BeamNG Map Options - Map Duplicator and Renamer

    You should take this one step further and make an option to not copy any models or textures... a lot of people offer 100+MB maps but only use standard assets... this won't really change with your tool.
    This way you could maybe even combine multiple map folders as sources.

    This in an example how to make the materials.cs in art/shapes/buildings point to the Industrial equivialent.
    Code:
    singleton Material(ind_bld_extras2)
    {
       mapTo = "ind_bld__2__extras2";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_bld_buildingextras2_d.dds";
       doubleSided = "1";
       translucentBlendOp = "None";
       detailScale[0] = "2 2";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/ind_bld_buildingextras2_s.dds";
       materialTag0 = "beamng";
        useAnisotropic[0] = "0";
    };
    
    singleton Material(ind_bld_Tin_01)
    {
       mapTo = "ind_bld__2__Tin-01";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/tin-01_d.dds";
       doubleSided = "1";
       translucentBlendOp = "None";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/tin-01_s.dds";
       materialTag0 = "Industrial";
       detailMap[0] = "levels/Industrial/art/shapes/buildings/detail_grunge_02_streak.dds";
       detailScale[0] = "0.1 0.1";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/tin-01_n.dds";
       specularPower[0] = "1";
       useAnisotropic[0] = "1";
        materialTag1 = "beamng";
    };
    
    singleton Material(ind_bld_tin_02)
    {
       mapTo = "ind_bld__2__Tin-02";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/tin-01b_d.dds";
       doubleSided = "1";
       translucentBlendOp = "None";
       materialTag0 = "Industrial";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/tin-01_n.dds";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/tin-01b_s.dds";
       detailScale[0] = "0.1 0.1";
       detailMap[0] = "levels/Industrial/art/shapes/buildings/detail_grunge_02_streak.dds";
       specularPower[0] = "8";
       useAnisotropic[0] = "1";
       detailNormalMapStrength[0] = "0.1";
        materialTag1 = "beamng";
    };
    
    singleton Material(ind_bld_extras)
    {
       mapTo = "ind_bld__2__extras";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_bld_buildingextras_d.dds";
       doubleSided = "0";
       translucentBlendOp = "None";
       specularPower[0] = "1";
       pixelSpecular[0] = "1";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/ind_bld_buildingextras_s.dds";
       materialTag0 = "beamng";
       materialTag1 = "beamng";
       materialTag2 = "Industrial";
    };
    
    
    
    singleton Material(ind_bld_brick_01)
    {
       mapTo = "Ind_bld__2__bricks";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_bld_brick_02_d.dds";
       detailMap[0] = "levels/Industrial/art/shapes/buildings/detail_grunge_02b.dds";
       detailScale[0] = "0.1 0.1";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/ind_bld_brick_02_n.dds";
       specularPower[0] = "29";
       pixelSpecular[0] = "1";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/ind_bld_brick_02_s.dds";
       useAnisotropic[0] = "1";
       doubleSided = "0";
        translucentBlendOp = "None";
       materialTag0 = "beamng";
       materialTag1 = "Industrial";
       materialTag2 = "Industrial";
    };
    
    
    singleton Material(ind_wood_crate)
    {
       mapTo = "ind_wood_crate";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/WoodCrate-01_d";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/WoodCrate-01_n";
       doubleSided = "1";
       translucentBlendOp = "None";
    };
    
    singleton Material(ColorEffectR27G177B88_material)
    {
       mapTo = "ColorEffectR27G177B88-material";
       diffuseColor[0] = "0.0856185 0.555098 0.277363 1";
       specular[0] = "0.5 0.5 0.5 1";
       specularPower[0] = "50";
       doubleSided = "1";
       translucentBlendOp = "None";
    };
    
    singleton Material(ind_bld_rustymetal_01)
    {
       mapTo = "ind_bld__2__rustymetal_01";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_bld_rustymetal_01_d.dds";
       detailMap[0] = "levels/Industrial/art/shapes/buildings/detail_grunge_02.dds";
       detailScale[0] = "0.1 0.1";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/ind_bld_rustymetal_01_n.dds";
       specularPower[0] = "1";
       pixelSpecular[0] = "1";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/ind_bld_rustymetal_01_s.dds";
       doubleSided = "1";
       translucentBlendOp = "None";
       materialTag0 = "Industrial";
        materialTag1 = "beamng";
    };
    
    singleton Material(ind_bld_metalgrate_01)
    {
       mapTo = "ind_bld_metalgrate_01";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_bld_mgrate-01_d.dds";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/ind_bld_mgrate-01_s.dds";
       specularPower[0] = "1";
       pixelSpecular[0] = "1";
       useAnisotropic[0] = "1";
       alphaTest = "1";
        alphaRef = "115";
       materialTag1 = "beamng";
       materialTag0 = "Industrial";
       doubleSided = "1";
       materialTag2 = "Industrial";
    };
    
    
    singleton Material(ind_planks_01)
    {
       mapTo = "Ind_planks";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_planks_01_d.dds";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/ind_planks_01_n.dds";
       specularPower[0] = "1";
       pixelSpecular[0] = "0";
       useAnisotropic[0] = "1";
       alphaTest = "1";
       alphaRef = "121";
       materialTag1 = "beamng";
       materialTag2 = "Industrial";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/ind_planks_01_s.dds";
    };
    
    
    singleton Material(Asphalt_road_01_decal2)
    {
       mapTo = "unmapped_mat";
       diffuseColor[0] = "0.996078 0.996078 0.996078 0.755";
       diffuseMap[0] = "levels/Industrial/art/road/AsphaltRoad_decal_02.dds";
       useAnisotropic[0] = "1";
       castShadows = "0";
       translucent = "1";
       translucentZWrite = "1";
       materialTag0 = "beamng";
       materialTag2 = "RoadAndPath";
       materialTag1 = "decal";
    };
    
    
    singleton Material(ind_bld_extras3)
    {
       mapTo = "ind_bld__2__extras3";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_bld_buildingextras3_d.dds";
       specularPower[0] = "1";
       doubleSided = "1";
       castShadows = "0";
       translucent = "1";
       alphaRef = "13";
        materialTag0 = "beamng";
       materialTag1 = "beamng";
       materialTag2 = "Industrial";
    };
    
    singleton Material(ind_bld_concrete)
    {
       mapTo = "ind_bld__2__concrete";
       diffuseColor[0] = "0.996078 0.996078 0.996078 1";
       specular[0] = "0.996078 0.996078 0.996078 1";
       specularPower[0] = "44";
       doubleSided = "0";
       translucentBlendOp = "None";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/Concrete-01_d.dds";
       detailScale[0] = "0.1 0.1";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/Concrete-01_n.dds";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/ConcreteBarrier-01_S.dds";
       materialTag1 = "beamng";
       materialTag2 = "Industrial";
       materialTag0 = "beamng";
       useAnisotropic[0] = "1";
       detailMap[0] = "levels/Industrial/art/shapes/buildings/detail_grunge_03.dds";
    };
    
    singleton Material(ind_concreteleak)
    {
       mapTo = "ind_concreteleak";
       diffuseColor[0] = "0.996078 0.996078 0.996078 1";
       specular[0] = "0.996078 0.996078 0.996078 1";
       specularPower[0] = "26";
       doubleSided = "0";
       translucentBlendOp = "None";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_concreteleak_d.dds";
       detailScale[0] = "0.2 0.2";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/ind_concreteleak_n.dds";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/ind_concreteleak_s.dds";
       materialTag1 = "beamng";
       materialTag2 = "Industrial";
       materialTag0 = "beamng";
       useAnisotropic[0] = "1";
       detailMap[0] = "levels/Industrial/art/shapes/buildings/detail_grunge_02.dds";
    };
    
    singleton Material(ind_metalplates)
    {
       mapTo = "ind_metalplates";
       diffuseColor[0] = "0.815686 0.815686 0.815686 1";
       specular[0] = "0.996078 0.996078 0.996078 1";
       specularPower[0] = "1";
       doubleSided = "0";
       translucentBlendOp = "None";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_metalplates_d.dds";
       detailScale[0] = "0.1 0.1";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/ind_metalplates_n.dds";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/ind_metalplates_s.dds";
       materialTag1 = "beamng";
       materialTag2 = "Industrial";
       materialTag0 = "beamng";
       useAnisotropic[0] = "1";
       detailMap[0] = "levels/Industrial/art/shapes/buildings/detail_grunge_03.dds";
    };
    
    singleton Material(gas_station_01_floor_tiles_01_a)
    {
       mapTo = "floor_tiles_01_a";
       diffuseColor[0] = "0.996078 0.996078 0.996078 1";
       doubleSided = "0";
       translucentBlendOp = "None";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/floor_tiles_01_a_d.dds";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/floor_tiles_01_a_s.dds";
    };
    
    singleton Material(gas_station_01_metal_01_a)
    {
       mapTo = "metal_01_a";
       diffuseColor[0] = "0.996078 0.996078 0.996078 1";
       doubleSided = "0";
       translucentBlendOp = "None";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/metal_01_a_d.dds";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/metal_01_a_s.dds";
    };
    
    singleton Material(gas_station_01_wall_plaster_01)
    {
       mapTo = "wall_plaster_01";
       diffuseColor[0] = "0.996078 0.996078 0.996078 1";
       doubleSided = "0";
       translucentBlendOp = "None";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/wall_plaster_01_d.dds";
    };
    
    singleton Material(gas_station_01_roof_tiles_01_a)
    {
       mapTo = "roof_tiles_01_a";
       diffuseColor[0] = "0.760784 0.760784 0.760784 1";
       doubleSided = "0";
       translucentBlendOp = "None";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/floor_tiles_01_a_d.dds";
    };
    
    singleton Material(gas_station_01_wall_plaster_01_red)
    {
       mapTo = "wall_plaster_01_red";
       diffuseColor[0] = "0.745098 0.333333 0.301961 1";
       doubleSided = "1";
       translucentBlendOp = "None";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/wall_plaster_01_d.dds";
    };
    
    singleton Material(gas_station_01_text_extras)
    {
       mapTo = "gas_station_01_text_extras";
       diffuseColor[0] = "0.996078 0.996078 0.996078 1";
       doubleSided = "0";
       translucent = "1";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/gas_station_01_text_extras_d.dds";
       castShadows = "0";
       alphaTest = "0";
       specularPower[0] = "1";
       pixelSpecular[0] = "1";
       parallaxScale[0] = "0.1";
       translucentZWrite = "0";
    };
    
    singleton Material(gas_station_01_text_extras_b)
    {
       mapTo = "gas_station_01_text_extras_b";
       diffuseColor[0] = "0.996078 0.996078 0.996078 1";
       doubleSided = "0";
       translucent = "0";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/gas_station_01_text_extras_d.dds";
       specularPower[0] = "1";
       pixelSpecular[0] = "1";
    };
    
    singleton Material(ind_bld_05_ColorEffectR27G177B88_material_001)
    {
       mapTo = "ColorEffectR27G177B88-material.001";
       diffuseColor[0] = "0.0684948 0.444078 0.221891 1";
       specular[0] = "0.25 0.25 0.25 1";
       specularPower[0] = "50";
       doubleSided = "1";
       translucentBlendOp = "None";
    };
    
    singleton Material(ind_walk_Rnd_ind_bld__proxy__physProxyNoDraw)
    {
       mapTo = "ind_bld__proxy__physProxyNoDraw";
       diffuseColor[0] = "0.64 0.64 0.64 1";
       specular[0] = "0.5 0.5 0.5 1";
       specularPower[0] = "50";
       doubleSided = "1";
       translucentBlendOp = "None";
    };
    
    singleton Material(ind_apt_siding)
    {
       mapTo = "ind_apt_siding";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_apt_siding_d.dds";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/ind_apt_siding_n.dds";
       materialTag0 = "beamng";
       diffuseColor[0] = "1 1 1 1";
    };
    
    singleton Material(ind_apt_concrete)
    {
       mapTo = "ind_apt_concrete";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_apt_concrete_d.dds";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/ind_apt_concrete_n.dds";
       materialTag0 = "beamng";
       diffuseColor[0] = "1 1 1 1";
    };
    
    singleton Material(ind_apt_roof)
    {
       mapTo = "ind_apt_roof";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_apt_roof_d.dds";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/ind_apt_roof_n.dds";
       materialTag0 = "beamng";
       diffuseColor[0] = "1 1 1 1";
    };
    
    singleton Material(ind_apt_ceiling)
    {
       mapTo = "ind_apt_ceiling";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_apt_ceiling_d.dds";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/ind_apt_ceiling_n.dds";
       materialTag0 = "beamng";
       diffuseColor[0] = "1 1 1 1";
    };
    
    singleton Material(ind_apt_window)
    {
       mapTo = "ind_apt_window";
       diffuseMap[1] = "levels/Industrial/art/shapes/buildings/ind_apt_window_d.dds";
       specularMap[1] = "levels/Industrial/art/shapes/buildings/ind_apt_window_s.dds";
       normalMap[1] = "levels/Industrial/art/shapes/buildings/ind_apt_window_n.dds";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/null.dds";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/null.dds";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/ind_apt_window_n.dds";
       specularPower[0] = "10";
       pixelSpecular[0] = "1";
       specularPower[1] = "10";
       pixelSpecular[1] = "1";
       diffuseColor[0] = "1 1 1 1";
       diffuseColor[1] = "1 1 1 1";
       castShadows = "1";
       translucent = "1";
       translucentBlendOp = "None";
       alphaTest = "1";
       alphaRef = "0";
       cubemap = "BNG_Sky_02_cubemap";
       materialTag0 = "beamng";
    };
    
    singleton Material(ind_apt_door)
    {
       mapTo = "ind_apt_door";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_apt_door_d.dds";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/ind_apt_door_n.dds";
       materialTag0 = "beamng";
       diffuseColor[0] = "1 1 1 1";
    };
    
    singleton Material(ind_apt_trim)
    {
       mapTo = "ind_apt_trim";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/ind_apt_trim_d.dds";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/ind_apt_trim_n.dds";
       materialTag0 = "beamng";
       diffuseColor[0] = "1 1 1 1";
    };
    
    singleton Material(race_curb_01)
    {
       mapTo = "race_curb_01";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/race_curb_01_d.dds";
       materialTag0 = "beamng";
       diffuseColor[0] = "1 1 1 1";
    };
    
    
    singleton Material(misc_billboard_title)
    {
       mapTo = "misc_billboard_title";
       diffuseMap[0] = "levels/Industrial/art/shapes/misc/billboards_01b.dds";
       detailScale[0] = "10 10";
       specular[0] = "0.5 0.5 0.5 1";
       specularPower[0] = "1";
       pixelSpecular[0] = "1";
       useAnisotropic[0] = "1";
       doubleSided = "1";
       translucentBlendOp = "None";
       materialTag1 = "beamng";
       materialTag2 = "Miscellaneous";
       materialTag0 = "Industrial";
       materialTag3 = "Natural";
    };
    
    singleton Material(ind_derbyarena_01a_outer_ind_bld__2__rustymetal_01_001)
    {
       mapTo = "ind_bld__2__rustymetal_01_001";
       diffuseColor[0] = "0.8 0.8 0.8 1";
       doubleSided = "1";
       translucentBlendOp = "None";
    };
    
    singleton Material(ind_derbyarena_01a_outer_ind_bld__2__concrete_001)
    {
       mapTo = "ind_bld__2__concrete_001";
       diffuseColor[0] = "0.538667 0.538667 0.538667 1";
       doubleSided = "1";
       translucentBlendOp = "None";
    };
    
    singleton Material(ind_derbyarena_01a_outer_ind_concreteleak_001)
    {
       mapTo = "ind_concreteleak_001";
       diffuseColor[0] = "0.64 0.64 0.64 1";
       doubleSided = "1";
       translucentBlendOp = "None";
    };
    
    singleton Material(metal_01)
    {
       mapTo = "metal_01";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/metal_01_a_d.dds";
       doubleSided = "1";
       translucentBlendOp = "None";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/metal_01_a_s.dds";
       materialTag0 = "beamng";
       materialTag1 = "beamng";
       materialTag2 = "Industrial";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/metal_01_a_n.dds";
       detailMap[0] = "levels/Industrial/art/shapes/buildings/detail_grunge_01.dds";
       detailScale[0] = "0.2 0.2";
    };
    
    singleton Material(metal_01_orange)
    {
       mapTo = "metal_01_orange";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/metal_01_a_orange_d.dds";
       doubleSided = "1";
       translucentBlendOp = "None";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/metal_01_a_s.dds";
       materialTag0 = "beamng";
       materialTag1 = "beamng";
       materialTag2 = "Industrial";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/metal_01_a_n.dds";
       detailMap[0] = "levels/Industrial/art/shapes/buildings/detail_grunge_01.dds";
       detailScale[0] = "0.1 0.1";
    };
    
    singleton Material(metal_cage)
    {
       mapTo = "metal_01_orange";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/metal_01_a_orange_d.dds";
       doubleSided = "1";
       translucentBlendOp = "None";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/metal_01_a_s.dds";
       materialTag0 = "beamng";
       materialTag1 = "beamng";
       materialTag2 = "Industrial";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/metal_01_a_n.dds";
       detailMap[0] = "levels/Industrial/art/shapes/buildings/detail_grunge_01.dds";
       detailScale[0] = "0.1 0.1";
    };
    
    singleton Material(ind_portcrane_a_metal_cage)
    {
       mapTo = "metal_cage";
       diffuseColor[0] = "0.64 0.64 0.64 1";
       doubleSided = "0";
       translucent = "0";
       diffuseMap[0] = "levels/Industrial/art/shapes/buildings/metal_cage_d.dds";
       useAnisotropic[0] = "1";
       alphaTest = "1";
       alphaRef = "161";
       materialTag1 = "beamng";
       materialTag0 = "beamng";
       materialTag2 = "Industrial";
       normalMap[0] = "levels/Industrial/art/shapes/buildings/metal_cage_n.dds";
       specularMap[0] = "levels/Industrial/art/shapes/buildings/metal_cage_s.dds";
       specularPower[0] = "1";
    };
    
    singleton Material(ind_bld_05_ColorEffectR27G177B88_material_001)
    {
       mapTo = "ColorEffectR27G177B88-material_001";
       diffuseColor[0] = "0.0684948 0.444078 0.221891 1";
       specular[0] = "0.25 0.25 0.25 1";
       specularPower[0] = "50";
       doubleSided = "1";
       translucentBlendOp = "None";
    };
    
    singleton Material(ind_bld_05_ColorEffectR27G177B88_material_001)
    {
       mapTo = "ColorEffectR27G177B88-material_001";
       diffuseColor[0] = "0.0684948 0.444078 0.221891 1";
       specular[0] = "0.25 0.25 0.25 1";
       specularPower[0] = "50";
       doubleSided = "1";
       translucentBlendOp = "None";
    };
    
    singleton Material(ind_bld_05_ColorEffectR27G177B88_material_001)
    {
       mapTo = "ColorEffectR27G177B88-material_001";
       diffuseColor[0] = "0.0684948 0.444078 0.221891 1";
       specular[0] = "0.25 0.25 0.25 1";
       specularPower[0] = "50";
       doubleSided = "1";
       translucentBlendOp = "None";
    };
    
    singleton Material(ind_bld_05_ColorEffectR27G177B88_material_001)
    {
       mapTo = "ColorEffectR27G177B88-material_001";
       diffuseColor[0] = "0.0684948 0.444078 0.221891 1";
       specular[0] = "0.25 0.25 0.25 1";
       specularPower[0] = "50";
       doubleSided = "1";
       translucentBlendOp = "None";
    };
    
    singleton Material(ind_bld_05_ColorEffectR27G177B88_material_001)
    {
       mapTo = "ColorEffectR27G177B88-material_001";
       diffuseColor[0] = "0.0684948 0.444078 0.221891 1";
       specular[0] = "0.25 0.25 0.25 1";
       specularPower[0] = "50";
       doubleSided = "1";
       translucentBlendOp = "None";
    };
    
    singleton Material(pier_support)
    {
       mapTo = "pier_support";
       diffuseColor[0] = "0.996078 0.996078 0.996078 1";
       specular[0] = "0.996078 0.996078 0.996078 1";
       specularPower[0] = "15";
       doubleSided = "1";
       translucentBlendOp = "None";
       diffuseMap[0] = "levels/dry_rock_island/art/shapes/buildings/wood_01_d.dds";
       detailScale[0] = "0.1 0.1";
       detailNormalMapStrength[0] = "1";
       specularMap[0] = "levels/dry_rock_island/art/shapes/buildings/wood_01_s.dds";
       normalMap[0] = "levels/dry_rock_island/art/shapes/buildings/wood_01_n.dds";
       detailMap[0] = "levels/dry_rock_island/art/shapes/buildings/ruinedpier_support_d.dds";
    };
     
  4. thingshappen

    thingshappen
    Expand Collapse

    Joined:
    Aug 23, 2013
    Messages:
    81
    Re: BeamNG Map Options - Map Duplicator and Renamer

    I have no idea why I missed this functionality, it already has an option not to rename textures and models so I guess that's a logical option not to copy the ones deselected over too. I'll see what I can do about it in a bit. I'll also try and add a method of letting you know when there's an update too.

    - - - Updated - - -

    Ok, I've updated the program as a tiny update that adds a version checker to it to let you know of updates. If you have the old one I'd recommend updating to this so you know when there's a new version. Also, it has an icon now, which is a bonus.

    As usual, let me know if there's any issues with this version, as I've not had the chance to check it on another machine just yet.
     
  5. Pinecones

    Pinecones
    Expand Collapse

    Joined:
    Aug 20, 2013
    Messages:
    67
    Re: BeamNG Map Options - Map Duplicator and Renamer

    Awesome idea! This will be extremely useful for me, I am always so indecisive when I come up with map names, an easy way to rename them was so necessary
     
  6. thingshappen

    thingshappen
    Expand Collapse

    Joined:
    Aug 23, 2013
    Messages:
    81
    Re: BeamNG Map Options - Map Duplicator and Renamer

    New update!

    I've been going through the program and getting rid of bugs, such as the menus ignoring what option selections you made. I've also added some features such as removing art files can now remove textures, which can do a lot in terms of saving data. Here's the full list:

    Fixes:
    • Options in the duplication and renaming menus actually do something now.
    • Debug outputs from the removal menu show up.

    New:
    • Removal menu now has selectable options, so you can choose what you want to remove.
    • Removal menu shows you how much has been deleted and how much space it has saved.
    • Duplication and renaming menus now have quick setting buttons, to select the best options for specific events.
    • Added a new option to give you the option as to whether it fixes locations of objects that have no extensions in the files.

    Bugs:
    • Doesn't fix up the textures for the rocks correctly, this is due to some bad naming in the materials.cs file for them, so I can't actually tell where the textures are from. This can be fixed manually.

    I went through the optimisation process with Dry Rock Island and this is the result. Turns out there's 49MB of files in there it doesn't need. I tested the level and everything seems to be correct too:

    (imported from here)
     
  7. Elvisnake

    Elvisnake
    Expand Collapse

    Joined:
    Aug 6, 2013
    Messages:
    206
    Re: BeamNG Map Options - Map Duplicator and Renamer

    Great idea and usefull program, you're good man ;) Thanks
     
  8. WacKEDmaN

    WacKEDmaN
    Expand Collapse

    Joined:
    Aug 15, 2013
    Messages:
    58
    ahh this will come in very handy...and save alot of work...thanks!

    i wouldnt mind seeing a standalone materials.cs editor too! something that will let you quickly change the path to whatever is specified..


    on the subject of +100mb levels...i was looking into how torque3d actually sets it up... you can have packs of art in the main art folder and source them from there instead of the level folder...
    i think the beamng guys should place the default assets there to cut down on the map download sizes... i also found a pack of assets for torque3d that would be better suited to go into the main art folder to allow every one to use them in their levels.. they would be a required extra download for the level to work..
     
  9. thingshappen

    thingshappen
    Expand Collapse

    Joined:
    Aug 23, 2013
    Messages:
    81
    How would you like this materials.cs editor to work? Just a text editor or pick out string names or something? Edit: Never mind, I see what you mean now. I can do that if you'd like.

    In regards to the art folder, I thought that might be the case. I think the reasoning behind putting it in the art folder local to the map for the time being is due to the models still not being completed. The reason I and many others include the art with the map is so an update doesn't mess the level up, I think anyway. If people start using the global art folder this program may have a few issues I think, but I'm not too sure.
     
    #9 thingshappen, Sep 7, 2013
    Last edited: Sep 7, 2013
  10. tdev

    tdev
    Expand Collapse
    Developer
    BeamNG Team

    Joined:
    Aug 3, 2012
    Messages:
    3,031
    And that would be hell to accomplish, just think of how to keep track of all the assets that levels would ship. If you update one tree, it might break some map, etc, etc. Its far easier to bundle all required resources with the level, where everyone can be sure that everything fits together correctly.

    - - - Updated - - -

    nice progress, any idea on having this open-sourced? :)
     
  11. thingshappen

    thingshappen
    Expand Collapse

    Joined:
    Aug 23, 2013
    Messages:
    81
    I could happily open source it if you'd like. I'll need to clean up, fix up and comment the code first though.
     
  12. thingshappen

    thingshappen
    Expand Collapse

    Joined:
    Aug 23, 2013
    Messages:
    81
    Ok, as promised I fixed up bits of the code (I could fix sooo much more, but it's fine for now) and commented as much as I could. If there are lackluster comments somewhere it's probably because I described the same thing in another file.

    I've attached the source for the program below. It's a WPF C# project, just so you know. Enjoy.
     

    Attached Files:

  13. metalmuncher

    metalmuncher
    Expand Collapse

    Joined:
    Aug 6, 2012
    Messages:
    257
    Can we get this as a standalone zip file? I don't like having to install tiny utilities like this. Otherwise, nice work. ;)
     
  14. loanstar744

    loanstar744
    Expand Collapse

    Joined:
    Aug 7, 2012
    Messages:
    14
    Yes this is possible, just need the files from the installer, it doesn't need a registry entry to operate, personally I think the installer just adds more work to the download but he did do a seriously nice job on this little application.
     
  15. thingshappen

    thingshappen
    Expand Collapse

    Joined:
    Aug 23, 2013
    Messages:
    81
    Sorry about the delay. I've been busy and haven't really had the time to go through the forums.

    Here you go. It should work, but let me know if it doesn't. Chances are if it doesn't work, you'll need the .NET Framework 4. The installer downloads that itself, so don't worry about this if you have that version.
     
  16. jammin2222

    jammin2222
    Expand Collapse

    Joined:
    Sep 15, 2013
    Messages:
    386
    Hi, I don't suppose are you still working on this?

    I am making maps using Sketchup and its having a hard time clearing up any duplicate textures in my folder structure. Are you willing to tweak it to accommodate the way sketchup exports models? or maybe I'm using it wrong?

    When sketchup exports a model it creates a folder with the textures for that model and places the .dae file outside of this folder.
    As I have used the same texture in multiple models I know for a fact that there are potentially hundreds of duplicates that I need to get rid of.

    The Materials.cs file seems to be set out correctly as each material has the full file path to the texture. It would seem that your program cant look in sub folders within the main folder where the .dae is saved. Would it be possible to get it to find these textures at all?

    so just to clarify what the structure for the folders is like when sketchup exports.
    The folder I export all the models to contains the Materials.cs file, the .dae file and a sub folder with the same name as the .dae containing the textures for that model.

    If the program could find a texture from the Materials.cs and search all the other sub folders where the .dae is placed for a texture with the same name and delete them keeping only the original one referenced it would really save a lot of file space when packing a map.

    I hope you understand what I'm getting at here as its not very easy to explain. If you need an example you could download my Sketch City map and try and get your program to clean up the duplicate textures.

    I fully understand you may not be willing to waste any more time on this but I and probably a few others would be really grateful if you could look into it. Other than that your program is really useful, Thanks for taking the time to make it.:)
     
  17. Calais

    Calais
    Expand Collapse

    Joined:
    Jan 12, 2014
    Messages:
    418
    I guess probably not, last post was 8 months ago.
     
  18. jammin2222

    jammin2222
    Expand Collapse

    Joined:
    Sep 15, 2013
    Messages:
    386
    I am well aware of how long ago this was posted but if nobody asks a question then I doubt there is a need for the OP to reply. I'm not expecting the OP to for fill my request but if you don't ask you don't get. So thanks for your pointless reply.
     
  19. thingshappen

    thingshappen
    Expand Collapse

    Joined:
    Aug 23, 2013
    Messages:
    81
    Sorry, I was never informed there were any updates. Do you still require it? I guess half a year is better than never.
     
  20. jammin2222

    jammin2222
    Expand Collapse

    Joined:
    Sep 15, 2013
    Messages:
    386
    Thanks for getting back to me. I would like an update for your tool at some point, though they have changed the file system in the experimental build since I posted this question. This seems to break my maps made on the stable build. I can't be bothered to adapt to the new file system until I know they wont change it all again. Its a waste of my time making anything for BeamNG at the moment knowing it will all break when they update the stable build.

    When they are a bit further into the development and the basics of the game have been set in stone then a decent update to your tool would be awesome. Until then any update made to your tool will probably break again pretty soon. I guess this goes with the territory when making mods for a WIP product. I would be grateful if you could pop by now and then and make an update when things have settled down. I'm sure many people would appreciate the effort if you were to do it.

    Cheers :)
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice