[Change] AccreteDisc - float => int
This commit is contained in:
parent
1dcba0856e
commit
c14e243b35
@ -173,16 +173,21 @@ vector3d StarSystem::Orbit::CartesianPosAtTime(double t) {
|
||||
return pos;
|
||||
}
|
||||
|
||||
static std::vector<float>* AccreteDisc(int size, float density, MTRand& rand) {
|
||||
std::vector<float>* disc = new std::vector<float>();
|
||||
static std::vector<int>* AccreteDisc(int size, int bandSize, int density, MTRand& rand) {
|
||||
printf("Size %d\n", size);
|
||||
std::vector<int>* disc = new std::vector<int>(size);
|
||||
|
||||
int bandDensity = 0;
|
||||
for(int i = 0; i < size; i++) {
|
||||
disc->push_back(density*rand.Double(1.0));
|
||||
if(!(i%bandSize)) bandDensity = rand.Int32(density);
|
||||
(*disc)[i] = bandDensity * rand.Int32(density);
|
||||
}
|
||||
|
||||
for(int iter = 0; iter < 20; iter++) {
|
||||
for(int i = 0; i < (signed)disc->size(); i++) {
|
||||
for(int d = ceil(sqrtf((*disc)[i])+(i/5)); d > 0; d--) {
|
||||
int d=1+(i/3);
|
||||
|
||||
for(; d > 0; d--) {
|
||||
if((i+d < (signed)disc->size()) && ((*disc)[i] > (*disc)[i+d])) {
|
||||
(*disc)[i] += (*disc)[i+d];
|
||||
(*disc)[i+d] = 0;
|
||||
@ -260,9 +265,9 @@ StarSystem::StarSystem(int sector_x, int sector_y, int system_idx) {
|
||||
int disc_size = rand.Int32(6, 100) + rand.Int32(60,140)*primary->type*primary->type;
|
||||
//printf("disc_size %.1fAU\n", disc_size/10.0);
|
||||
|
||||
std::vector<float>* disc = AccreteDisc(disc_size, 0.1+rand.Double(1.5), rand);
|
||||
std::vector<int>* disc = AccreteDisc(disc_size, 10, rand.Int32(10,400), rand);
|
||||
for(unsigned int i = 0; i < disc->size(); i++) {
|
||||
float mass = (*disc)[i];
|
||||
float mass = (*disc)[i]/65536.0;
|
||||
if(mass == 0) continue;
|
||||
|
||||
SBody* planet = new SBody;
|
||||
@ -398,10 +403,10 @@ void StarSystem::SBody::PickPlanetType(SBody* star, double distToPrimary, MTRand
|
||||
}
|
||||
radius = EARTH_RADIUS*bodyTypeInfo[type].radius;
|
||||
/* Generate moons. */
|
||||
if(genMoons) {
|
||||
std::vector<float>* disc = AccreteDisc(2*sqrt(emass), 0.001, rand);
|
||||
if((genMoons) && (emass > 0.5)) {
|
||||
std::vector<int>* disc = AccreteDisc(2*sqrt(emass), 10, rand.Int32(1, 40), rand);
|
||||
for(unsigned int i = 0; i < disc->size(); i++) {
|
||||
float mass = (*disc)[i];
|
||||
float mass = (*disc)[i]/65536.0;
|
||||
if(mass == 0) continue;
|
||||
|
||||
SBody* moon = new SBody;
|
||||
|
Loading…
Reference in New Issue
Block a user