Listing the "Blender Foundation" as copyright holder implied the Blender Foundation holds copyright to files which may include work from many developers. While keeping copyright on headers makes sense for isolated libraries, Blender's own code may be refactored or moved between files in a way that makes the per file copyright holders less meaningful. Copyright references to the "Blender Foundation" have been replaced with "Blender Authors", with the exception of `./extern/` since these this contains libraries which are more isolated, any changed to license headers there can be handled on a case-by-case basis. Some directories in `./intern/` have also been excluded: - `./intern/cycles/` it's own `AUTHORS` file is planned. - `./intern/opensubdiv/`. An "AUTHORS" file has been added, using the chromium projects authors file as a template. Design task: #110784 Ref !110783.
64 lines
1.4 KiB
C++
64 lines
1.4 KiB
C++
/* SPDX-FileCopyrightText: 2023 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/** \file
|
|
* \ingroup overlay
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "overlay_next_private.hh"
|
|
|
|
#include "overlay_next_background.hh"
|
|
#include "overlay_next_empty.hh"
|
|
#include "overlay_next_grid.hh"
|
|
#include "overlay_next_metaball.hh"
|
|
#include "overlay_next_prepass.hh"
|
|
|
|
namespace blender::draw::overlay {
|
|
|
|
/**
|
|
* Selection engine reuse most of the Overlay engine by creating selection IDs for each
|
|
* selectable component and using a special shaders for drawing.
|
|
*/
|
|
class Instance {
|
|
const SelectionType selection_type_;
|
|
|
|
public:
|
|
/* WORKAROUND: Legacy. Move to grid pass. */
|
|
GPUUniformBuf *grid_ubo = nullptr;
|
|
|
|
ShapeCache shapes;
|
|
|
|
/** Global types. */
|
|
Resources resources = {selection_type_,
|
|
overlay::ShaderModule::module_get(selection_type_, false /*TODO*/)};
|
|
State state;
|
|
|
|
/** Overlay types. */
|
|
Background background;
|
|
Prepass prepass;
|
|
Metaballs metaballs = {selection_type_};
|
|
Empties empties = {selection_type_};
|
|
Grid grid;
|
|
|
|
Instance(const SelectionType selection_type) : selection_type_(selection_type){};
|
|
|
|
~Instance()
|
|
{
|
|
DRW_UBO_FREE_SAFE(grid_ubo);
|
|
}
|
|
|
|
void init();
|
|
void begin_sync();
|
|
void object_sync(ObjectRef &ob_ref, Manager &manager);
|
|
void end_sync();
|
|
void draw(Manager &manager);
|
|
|
|
private:
|
|
bool object_is_edit_mode(const Object *ob);
|
|
};
|
|
|
|
} // namespace blender::draw::overlay
|