public IPlanet Create(DoubleVector3 location, double radius) { // TODO: should we inject into the factory everything it will need to inject // into the planets? That reduces calls to the container but makes an assumption // about dependency lifetimes. var terrain = _terrainFactory.Create(radius); var renderer = CreateRenderer(radius); var generator = ObjectFactory.GetInstance <IHeightfieldGenerator>(); var statistics = ObjectFactory.GetInstance <Statistics>(); var planet = new Planet(location, radius, terrain, renderer, generator, _settings, statistics); return(planet); }
public SimpleFixedTerrainLayer(ISet<ITerrain> terrains, ITerrainFactory<Hills> hillsFactory, ITerrainFactory<Mountains> mountainsFactory, ITerrainFactory<Oceans> oceansFactory, ITerrainFactory<Plains> plainsFactory) { Terrains = terrains; this.plainsFactory = plainsFactory; Terrains.Add(hillsFactory.Create(HillsTile)); Terrains.Add(mountainsFactory.Create(MountainsTile)); Terrains.Add(oceansFactory.Create(OceansTile)); AddRemainingPlains(); }