/// <summary> /// Setup constructor /// </summary> /// <param name="projectType">Project type that created this project</param> /// <param name="name">Project name</param> /// <param name="modelFactory">Factory used for creating environment models from templates</param> /// <param name="renderFactory">Factory used for creating environment renderers from models</param> /// <param name="template">ProjectType to use</param> /// <param name="planet">Planet to use</param> protected PlanetProject( ProjectType projectType, string name, IPlanetEnvironmentModelFactory modelFactory, IPlanetEnvironmentRendererFactory renderFactory, IPlanetModelTemplate template, IPlanet planet ) : base(projectType, name, null, null) { Arguments.CheckNotNull( template, "template" ); Arguments.CheckNotNull( modelFactory, "modelFactory" ); Arguments.CheckNotNull( renderFactory, "renderFactory" ); Arguments.CheckNotNull( planet, "planet" ); new PlanetTemplateWatcher( template, planet, modelFactory, renderFactory ); m_Planet = planet; m_PlanetTemplate = template; template.CreateModelInstance( planet.Model, modelFactory, InstanceContext ); }
/// <summary> /// Setup constructor /// </summary> public PlanetTemplateWatcher( IPlanetModelTemplate planetTemplate, IPlanet planet, IPlanetEnvironmentModelFactory modelFactory, IPlanetEnvironmentRendererFactory rendererFactory ) { Arguments.CheckNotNull( planetTemplate, "planetTemplate" ); Arguments.CheckNotNull( planet, "planet" ); m_ModelFactory = modelFactory; m_RendererFactory = rendererFactory; m_PlanetTemplate = planetTemplate; m_Planet = planet; m_PlanetTemplate.ComponentAdded += OnTemplateAdded; m_PlanetTemplate.ComponentRemoved += OnTemplateRemoved; m_Planet.Model.ComponentAdded += OnModelAdded; m_Planet.Model.ComponentRemoved += OnModelRemoved; }