Ejemplo n.º 1
0
ProjectItem::ProjectItem(
    ProjectBuilder& project_builder,
    ParamArray&     settings)
  : ItemBase(g_project_class_uid, "Project")
{
    set_allow_deletion(false);
    set_allow_edition(false);

    Project& project = project_builder.get_project();

    m_scene_item = new SceneItem(*project.get_scene(), project_builder, settings);
    addChild(m_scene_item);

    ItemBase* rules_item = new ItemBase(g_rules_class_uid, "Rules");
    rules_item->set_allow_deletion(false);
    rules_item->set_allow_edition(false);
    addChild(rules_item);

    m_render_layer_collection_item =
        new MultiModelCollectionItem<RenderLayerRule, Project, ProjectItem>(
            new_guid(),
            EntityTraits<RenderLayerRule>::get_human_readable_collection_type_name(),
            project,
            this,
            project_builder);
    m_render_layer_collection_item->add_items(project.render_layer_rules());
    rules_item->addChild(m_render_layer_collection_item);

    m_output_item = new OutputItem(project, project_builder);
    addChild(m_output_item);
}
Ejemplo n.º 2
0
SceneItem::SceneItem(
    EntityEditorContext&    editor_context,
    Scene&                  scene)
  : BaseGroupItem(editor_context, g_class_uid, "Scene", scene)
{
    set_allow_deletion(false);
    set_allow_edition(false);

    QFont font;
    font.setBold(true);
    setFont(0, font);

    int child_index = 0;
    insertChild(
        child_index++,
        m_camera_collection_item =
            new MultiModelCollectionItem<Camera, Scene, SceneItem>(
                editor_context,
                new_guid(),
                EntityTraits<Camera>::get_human_readable_collection_type_name(),
                scene,
                this));
    m_camera_collection_item->add_items(scene.cameras());

    insertChild(
        child_index++,
        m_environment_item =
            new EnvironmentItem(
                editor_context,
                scene.get_environment(),
                scene,
                this));
    m_environment_item->set_allow_deletion(false);
    m_environment_item->set_fixed_position(true);
    editor_context.m_item_registry.insert(*scene.get_environment(), m_environment_item);

    insertChild(
        child_index++,
        m_environment_edf_collection_item =
            new MultiModelCollectionItem<EnvironmentEDF, Scene, SceneItem>(
                editor_context,
                new_guid(),
                EntityTraits<EnvironmentEDF>::get_human_readable_collection_type_name(),
                scene,
                this));
    m_environment_edf_collection_item->add_items(scene.environment_edfs());

    insertChild(
        child_index++,
        m_environment_shader_collection_item =
            new MultiModelCollectionItem<EnvironmentShader, Scene, SceneItem>(
                editor_context,
                new_guid(),
                EntityTraits<EnvironmentShader>::get_human_readable_collection_type_name(),
                scene,
                this));
    m_environment_shader_collection_item->add_items(scene.environment_shaders());
}
Ejemplo n.º 3
0
AssemblyItem::AssemblyItem(
    Assembly&       assembly,
    BaseGroup&      parent,
    BaseGroupItem*  parent_item,
    ProjectBuilder& project_builder,
    ParamArray&     settings)
  : BaseGroupItem(g_class_uid, assembly, project_builder, settings)
  , m_assembly(assembly)
  , m_parent(parent)
  , m_parent_item(parent_item)
  , m_project_builder(project_builder)
{
    set_title(QString::fromAscii(assembly.get_name()));

    set_allow_edition(false);

    insertChild(
        3,
        m_bsdf_collection_item = add_multi_model_collection_item<BSDF>(assembly.bsdfs()));

    insertChild(
        4,
        m_edf_collection_item = add_multi_model_collection_item<EDF>(assembly.edfs()));

    insertChild(
        5,
        m_surface_shader_collection_item = add_multi_model_collection_item<SurfaceShader>(assembly.surface_shaders()));

    insertChild(
        6,
        m_material_collection_item = add_multi_model_collection_item<Material>(assembly.materials()));

    insertChild(
        7,
        m_light_collection_item = add_multi_model_collection_item<Light>(assembly.lights()));

    insertChild(
        8,
        m_object_collection_item =
            new ObjectCollectionItem(
                assembly.objects(),
                assembly,
                this,
                project_builder,
                settings));

    insertChild(
        9,
        m_object_instance_collection_item =
            new ObjectInstanceCollectionItem(
                new_guid(),
                EntityTraits<ObjectInstance>::get_human_readable_collection_type_name(),
                assembly,
                project_builder));
    m_object_instance_collection_item->add_items(assembly.object_instances());
}
Ejemplo n.º 4
0
AssemblyItem::AssemblyItem(
    Assembly*       assembly,
    Scene&          scene,
    ProjectBuilder& project_builder,
    ParamArray&     settings)
  : EntityItemBase<Assembly>(assembly)
  , impl(new Impl(this, assembly, scene, project_builder, settings))
{
    set_allow_edition(false);
}
Ejemplo n.º 5
0
ObjectItem::ObjectItem(
    Object*         object,
    Assembly&       assembly,
    ProjectBuilder& project_builder)
  : EntityItemBase<Object>(object)
  , m_object(object)
  , m_assembly(assembly)
  , m_project_builder(project_builder)
{
    set_allow_edition(false);
}
AssemblyInstanceItem::AssemblyInstanceItem(
    EntityEditorContext&            editor_context,
    AssemblyInstance*               assembly_instance,
    BaseGroup&                      parent,
    AssemblyInstanceCollectionItem* collection_item)
  : EntityItemBase<AssemblyInstance>(editor_context, assembly_instance)
  , m_parent(parent)
  , m_collection_item(collection_item)
{
    set_allow_edition(false);
}
AssemblyInstanceItem::AssemblyInstanceItem(
    AssemblyInstance*               assembly_instance,
    BaseGroup&                      parent,
    AssemblyInstanceCollectionItem* collection_item,
    ProjectBuilder&                 project_builder)
  : EntityItemBase<AssemblyInstance>(assembly_instance)
  , m_parent(parent)
  , m_collection_item(collection_item)
  , m_project_builder(project_builder)
{
    set_allow_edition(false);
}
Ejemplo n.º 8
0
ObjectItem::ObjectItem(
    Object*         object,
    Assembly&       parent,
    AssemblyItem*   parent_item,
    ProjectBuilder& project_builder)
  : EntityItemBase<Object>(object)
  , m_parent(parent)
  , m_parent_item(parent_item)
  , m_project_builder(project_builder)
{
    set_allow_edition(false);
}
Ejemplo n.º 9
0
SceneItem::SceneItem(
    Scene&          scene,
    ProjectBuilder& project_builder,
    ParamArray&     settings)
  : BaseGroupItem(g_class_uid, "Scene", scene, project_builder, settings)
{
    set_allow_deletion(false);
    set_allow_edition(false);

    insertChild(
        0,
        m_camera_item =
            new CameraItem(
                scene.get_camera(),
                scene,
                project_builder));
    m_camera_item->set_allow_deletion(false);
    m_camera_item->set_fixed_position(true);

    insertChild(
        1,
        m_environment_item =
            new EnvironmentItem(
                scene.get_environment(),
                scene,
                project_builder));
    m_environment_item->set_allow_deletion(false);
    m_environment_item->set_fixed_position(true);

    insertChild(
        2,
        m_environment_edf_collection_item =
            new MultiModelCollectionItem<EnvironmentEDF, Scene, SceneItem>(
                new_guid(),
                EntityTraits<EnvironmentEDF>::get_human_readable_collection_type_name(),
                scene,
                this,
                project_builder));
    m_environment_edf_collection_item->add_items(scene.environment_edfs());

    insertChild(
        3,
        m_environment_shader_collection_item =
            new MultiModelCollectionItem<EnvironmentShader, Scene, SceneItem>(
                new_guid(),
                EntityTraits<EnvironmentShader>::get_human_readable_collection_type_name(),
                scene,
                this,
                project_builder));
    m_environment_shader_collection_item->add_items(scene.environment_shaders());
}
Ejemplo n.º 10
0
AssemblyItem::AssemblyItem(
    EntityEditorContext&    editor_context,
    Assembly&               assembly,
    BaseGroup&              parent,
    BaseGroupItem*          parent_item)
  : BaseGroupItem(editor_context, g_class_uid, assembly)
  , m_assembly(assembly)
  , m_assembly_uid(assembly.get_uid())
  , m_parent(parent)
  , m_parent_item(parent_item)
{
    set_title(QString::fromAscii(assembly.get_name()));

    set_allow_edition(false);

    insertChild(
        3,
        m_bsdf_collection_item = add_multi_model_collection_item<BSDF>(assembly.bsdfs()));

    insertChild(
        4,
        m_bssrdf_collection_item = add_multi_model_collection_item<BSSRDF>(assembly.bssrdfs()));

    insertChild(
        5,
        m_edf_collection_item = add_multi_model_collection_item<EDF>(assembly.edfs()));

    insertChild(
        6,
        m_surface_shader_collection_item = add_multi_model_collection_item<SurfaceShader>(assembly.surface_shaders()));

    insertChild(
        7,
        m_material_collection_item = new MaterialCollectionItem(
            m_editor_context,
            assembly.materials(),
            assembly,
            this));

    insertChild(
        8,
        m_light_collection_item = add_multi_model_collection_item<Light>(assembly.lights()));

    insertChild(
        9,
        m_object_collection_item =
            new ObjectCollectionItem(
                m_editor_context,
                assembly.objects(),
                assembly,
                this));

    insertChild(
        10,
        m_object_instance_collection_item =
            new ObjectInstanceCollectionItem(
                m_editor_context,
                new_guid(),
                EntityTraits<ObjectInstance>::get_human_readable_collection_type_name(),
                assembly));
    m_object_instance_collection_item->add_items(assembly.object_instances());

    insertChild(
        11,
        m_volume_collection_item = add_multi_model_collection_item<Volume>(assembly.volumes()));

    m_editor_context.m_item_registry.insert(m_assembly, this);
}