diff options
Diffstat (limited to 'src/game/base/game.cc')
| -rw-r--r-- | src/game/base/game.cc | 30 | 
1 files changed, 28 insertions, 2 deletions
diff --git a/src/game/base/game.cc b/src/game/base/game.cc index fa83a0a..30970f9 100644 --- a/src/game/base/game.cc +++ b/src/game/base/game.cc @@ -887,7 +887,7 @@ Game::Game() : core::Module("Project::OSiRiON", true)  		return;  	} -	// add engine functions +	// add game functions  	core::Func *func = 0;  	func = core::Func::add("join", Game::func_join); @@ -966,8 +966,17 @@ Game::~Game()  	// clear defaults  	Default::clear(); +	// clear Cargo +	Cargo::done(); +	 +	// clear ShipModel +	ShipModel::done(); +	 +	// clear Templates +	Template::done(); +	  	// clear Factions -	Faction::clear(); +	Faction::done();  }  bool Game::load_world() @@ -1081,6 +1090,7 @@ bool Game::load_zone(core::Zone *zone)  	while (zoneini.getline()) {  		if (zoneini.got_section()) { +			  			if (zoneini.got_section("zone")) {  				continue; @@ -1094,24 +1104,28 @@ bool Game::load_zone(core::Zone *zone)  				navpoint = new NavPoint();  				entity = navpoint;  				navpoint->set_zone(zone); +				navpoint->set_radius(0);  				count ++;  			} else if (zoneini.got_section("jumpgate")) {  				jumppoint = new JumpGate();  				entity = jumppoint;  				jumppoint->set_zone(zone); +				jumppoint->set_radius(0);  				count ++;  			} else if (zoneini.got_section("jumppoint")) {  				jumppoint = new JumpPoint();  				entity = jumppoint;  				jumppoint->set_zone(zone); +				jumppoint->set_radius(0);  				count ++;  			} else if (zoneini.got_section("racetrack")) {  				racetrack = new RaceTrack();  				entity = racetrack;  				racetrack->set_zone(zone); +				racetrack->set_radius(0);  			} else if (zoneini.got_section("checkpoint")) {  				checkpoint = new CheckPoint(racetrack); @@ -1119,6 +1133,7 @@ bool Game::load_zone(core::Zone *zone)  				if (!racetrack) {  					zoneini.unknown_error("checkpoint without racetrack");  				} +				checkpoint->set_radius(0);  			} else if (zoneini.got_section("planet")) {  				planet = new Planet(); @@ -1130,11 +1145,13 @@ bool Game::load_zone(core::Zone *zone)  				station = new Station();  				entity = station;  				station->set_zone(zone); +				station->set_radius(0);  				count ++;  			} else if (zoneini.got_section("entity")) {  				entity = new core::Entity();  				entity->set_zone(zone); +				entity->set_radius(0);  				count ++;  			} else if (zoneini.got_section("cargo")) { @@ -1422,6 +1439,15 @@ bool Game::validate_zone(core::Zone *zone)  			}  		} +		if (!entity->radius()) { +			if (entity->model()) { +				entity->set_radius(entity->model()->radius()); +			} else { +				entity->set_radius(0.25f); +			} +			con_debug << "  " << entity->label() << " radius set to " << entity->radius() << std::endl; +		} +		  		// initialize physics on planets and entities with a model  		if ((entity->entity_moduletypeid == planet_enttype) || (entity->model())) {  			entity->reset();  | 
