/// <summary> /// Setup constructor /// </summary> /// <param name="view">Planet view</param> /// <param name="template">Planetary template</param> /// <param name="model">Planet model instance</param> public PlanetTemplateViewController( IPlanetModelTemplateView view, IPlanetModelTemplate template, IPlanetModel model ) { Arguments.CheckNotNull( view, "view" ); Arguments.CheckNotNull( template, "template" ); Arguments.CheckNotNull( model, "model" ); m_View = view; m_Template = template; m_Model = model; m_View.PlanetModelTemplate = template; m_View.PlanetModel = model; }
/// <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; }
/// <summary> /// Setup constructor /// </summary> public EditablePlanetTemplateViewController( IWorkspace workspace, IViewFactory viewFactory, IEditableCompositeView view, IPlanetModelTemplate template ) : base(workspace, viewFactory, view, template) { }
/// <summary> /// Creates a view used to edit the parameters of a planet template /// </summary> public IPlanetModelTemplateView CreatePlanetTemplateView( IPlanetModelTemplate template, IPlanetModel instance ) { // HACK: AP: Create a view and a controller that are dependent on the template type IPlanetModelTemplateView view; if ( template is ISpherePlanetModelTemplate ) { view = new SpherePlanetModelTemplateViewControl( ); new SpherePlanetTemplateViewController( ( ISpherePlanetModelTemplateView )view, ( ISpherePlanetModelTemplate )template, ( ISpherePlanetModel )instance ); } else { throw new NotSupportedException( "Unsupported planet template type " + template.GetType( ) ); } return view; }