示例#1
0
文件: export.cpp 项目: pajadam/Genek
bool exporter::Export( string filename, settings &gen, Array3D &_map )
{
    ofstream mFile( filename );

    if( !mFile.good() )
        return 1;

    //Map Size
    mFile << "size " << gen.sizeX << " "
                     << gen.sizeY << " "
                     << gen.sizeZ << endl;

    // Map Data
    for( gSize y = 0; y < gen.sizeY; y++ ){
        for( gSize z = 0; z < gen.sizeZ; z++ ){
            mFile << "voxline " << y << " " << z;
            for( gSize x = 0; x < gen.sizeX; x++ ){
                mFile << " " << _map.get( x, y, z );
            }
            mFile << endl;
        }
    }

    // Materials
    for( gSize i = 0; i < gen.materials.size(); i++ )
    {
        mFile << "material " << gen.materials[ i ].name  << " "
                             << gen.materials[ i ].sizeX << " "
                             << gen.materials[ i ].sizeY << endl;
    }
    // Sky and Sun
    mFile << "sky mc" << endl;
    mFile << "sun " << gen.sunlight.dx << " "
                    << gen.sunlight.dy << " "
                    << gen.sunlight.dz << " "
                    << gen.sunlight.r  << " "
                    << gen.sunlight.g  << " "
                    << gen.sunlight.b  << " "
                    << gen.sunlight.ar << " "
                    << gen.sunlight.ag << " "
                    << gen.sunlight.ab << endl;
    // Player Spawn
    mFile << "startpos " << gen.player.x << " "
                         << gen.player.y << " "
                         << gen.player.z << " "
                         << gen.player.direction << " "
                         << gen.player.physics << " "
                         << gen.player.torchLevel << " "
                         << gen.player.testLightning << endl;

    mFile.close();

    return 0;
}
示例#2
0
//----------------------------------------------------------------------
int Array3D::copyFrom(Array3D& a, Vec3i& fromOrig, Vec3i& fromRange, Vec3i& toOrigin)
{
    Vec3i fromMaxDims = fromOrig + fromRange;
    fromMaxDims.clampMaxTo(a.getMaxDims());
    fromOrig.clampMinTo(a.getOrigin());
    fromRange = fromMaxDims - fromOrig;
    Vec3i toMaxDims = toOrigin + fromRange;

    if (toOrigin < this->origin) return -1;
    if ((toOrigin+fromRange) > maxDims) return -1;

    for (int k=0; k < fromRange[2]; k++) {
    for (int j=0; j < fromRange[1]; j++) {
    for (int i=0; i < fromRange[0]; i++) {
        set(i+toOrigin.x(), j+toOrigin.y(), k+toOrigin.z(),  a.get(i+fromOrig.x(), j+fromOrig.y(), k+fromOrig.z()));
    }}}
    return(0);
}