CritterB::CritterB(btDynamicsWorld* btWorld, long unsigned int id, const btVector3& startPos, unsigned char* retinap) { loadError = false; // first things first btDynWorld = btWorld; retina = retinap; critterID = id; initConst(); energyLevel = settings->getCVar("critter_startenergy"); // lifetime = settings->critter_maxlifetime; genotype = genotypes->newg( settings ); // BODY // genotype->bodyArch->buildArch(); body.wireArch( genotype->bodyArch, (void*)this, btDynWorld, startPos ); // LINK registerBrainInputOutputs(); // BRAIN // genotype->brainzArch->buildArch(); brain.wireArch( genotype->brainzArch ); }
MPG::MPG(const char *src){ initConst(); // get file size struct stat sb; stat(src, &sb); buf_size = sb.st_size; // malloc buffers buf = new BYTE[buf_size]; buf_v = new BYTE[buf_size]; buf_a = new BYTE[buf_size]; buf_end = buf + (buf_size-1); buf_v_size = 0; buf_a_size = 0; // file open if ((f_in = fopen(src, "rb")) == NULL) { std::cout << "input file open error" << std::endl; std::exit(1); } // read src to buffer while (! feof(f_in)) { fread(buf, sizeof(BYTE), buf_size, f_in); } std::cout << "read" << std::endl; searchPacks(); std::cout << "searcePacks ed" << std::endl; searchPackets(); std::cout << "searcePackets ed" << std::endl; std::cout << "getting stream..." << std::endl; getStream(buf_v, PCT_VIDEO); getStream(buf_a, PCT_AUDIO); // search sequences // search frames }
CritterB::CritterB(CritterB& other, long unsigned int id, const btVector3& startPos, bool brainmutant, bool bodymutant) { loadError = false; // first things first btDynWorld = other.btDynWorld; retina = other.retina; critterID = id; initConst(); // lifetime = other.lifetime; genotype = genotypes->copy(other.genotype, brainmutant, RandGen::Instance()->get(1, settings->getCVar("brain_maxmutations")), bodymutant, RandGen::Instance()->get(1, settings->getCVar("body_maxmutations"))); body.wireArch( genotype->bodyArch, (void*)this, btDynWorld, startPos ); // LINK registerBrainInputOutputs(); brain.wireArch( genotype->brainzArch ); }
CritterB::CritterB(string &critterstring, btDynamicsWorld* btWorld, const btVector3& startPos, unsigned char* retinap) { loadError = false; // critterID is arranged in world, definite critter insertion is not determined yet // first things first btDynWorld = btWorld; retina = retinap; initConst(); energyLevel = settings->getCVar("critter_startenergy"); genotype = genotypes->loadGenotype(critterstring); if ( genotype->bodyArch->retinasize != settings->getCVar("critter_retinasize")) { stringstream buf; buf << "ERROR: critter retinasize (" << genotype->bodyArch->retinasize << ") doesn't fit world retinasize (" << settings->getCVar("critter_retinasize") << ")"; Logbuffer::Instance()->add(buf); cerr << "!ERROR: critter retinasize (" << genotype->bodyArch->retinasize << ") doesn't fit world retinasize (" << settings->getCVar("critter_retinasize") << ")" << endl; loadError = true; } else { // BODY body.wireArch( genotype->bodyArch, (void*)this, btDynWorld, startPos ); // LINK registerBrainInputOutputs(); // BRAIN brain.wireArch( genotype->brainzArch ); } }