sample app - scale
This commit is contained in:
parent
1e41088840
commit
8a95196df2
5 changed files with 53 additions and 63 deletions
|
@ -268,10 +268,10 @@ void Gizmo::rotate(int relx, int rely, int flags)
|
|||
|
||||
new_positions.push(pos);
|
||||
}
|
||||
m_editor.setEntitiesPositionsAndRotaions(&m_editor.getSelectedEntities()[0],
|
||||
&new_positions[0],
|
||||
&new_rotations[0],
|
||||
new_positions.size());
|
||||
m_editor.setEntitiesPositionsAndRotations(&m_editor.getSelectedEntities()[0],
|
||||
&new_positions[0],
|
||||
&new_rotations[0],
|
||||
new_positions.size());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -391,17 +391,17 @@ public:
|
|||
|
||||
|
||||
ScaleEntityCommand(WorldEditor& editor,
|
||||
const Array<Entity>& entities,
|
||||
const Array<float>& new_scales,
|
||||
IAllocator& allocator)
|
||||
const Entity* entities,
|
||||
const float* new_scales,
|
||||
int count,
|
||||
IAllocator& allocator)
|
||||
: m_new_scales(allocator)
|
||||
, m_old_scales(allocator)
|
||||
, m_entities(allocator)
|
||||
, m_editor(editor)
|
||||
{
|
||||
Universe* universe = m_editor.getUniverse();
|
||||
ASSERT(entities.size() == new_scales.size());
|
||||
for (int i = entities.size() - 1; i >= 0; --i)
|
||||
for (int i = count - 1; i >= 0; --i)
|
||||
{
|
||||
m_entities.push(entities[i]);
|
||||
m_new_scales.push(new_scales[i]);
|
||||
|
@ -2077,37 +2077,32 @@ public:
|
|||
{
|
||||
if (m_camera >= 0)
|
||||
{
|
||||
EditorIcon* er = m_allocator.newObject<EditorIcon>(
|
||||
*this,
|
||||
*static_cast<RenderScene*>(
|
||||
getComponent(m_camera, CAMERA_HASH).scene),
|
||||
EditorIcon* er = m_allocator.newObject<EditorIcon>(*this,
|
||||
*static_cast<RenderScene*>(getComponent(m_camera, CAMERA_HASH).scene),
|
||||
entity);
|
||||
m_editor_icons.push(er);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
virtual void setEntitiesScales(const Array<Entity>& entities,
|
||||
const Array<float>& scales) override
|
||||
virtual void setEntitiesScales(const Entity* entities, const float* scales, int count) override
|
||||
{
|
||||
if (entities.empty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (count <= 0) return;
|
||||
|
||||
Universe* universe = getUniverse();
|
||||
IEditorCommand* command = m_allocator.newObject<ScaleEntityCommand>(
|
||||
*this, entities, scales, m_allocator);
|
||||
IEditorCommand* command =
|
||||
m_allocator.newObject<ScaleEntityCommand>(*this, entities, scales, count, m_allocator);
|
||||
executeCommand(command);
|
||||
}
|
||||
|
||||
|
||||
virtual void setEntitiesRotations(const Entity* entities,
|
||||
const Quat* rotations,
|
||||
int count) override
|
||||
const Quat* rotations,
|
||||
int count) override
|
||||
{
|
||||
ASSERT(entities && rotations);
|
||||
if (count <= 0) return;
|
||||
|
||||
|
||||
Universe* universe = getUniverse();
|
||||
Array<Vec3> positions(m_allocator);
|
||||
for (int i = 0; i < count; ++i)
|
||||
|
@ -2120,8 +2115,9 @@ public:
|
|||
}
|
||||
|
||||
|
||||
virtual void
|
||||
setEntitiesPositions(const Entity* entities, const Vec3* positions, int count) override
|
||||
virtual void setEntitiesPositions(const Entity* entities,
|
||||
const Vec3* positions,
|
||||
int count) override
|
||||
{
|
||||
ASSERT(entities && positions);
|
||||
if (count <= 0) return;
|
||||
|
@ -2138,10 +2134,10 @@ public:
|
|||
}
|
||||
|
||||
|
||||
virtual void setEntitiesPositionsAndRotaions(const Entity* entities,
|
||||
const Vec3* positions,
|
||||
const Quat* rotations,
|
||||
int count) override
|
||||
virtual void setEntitiesPositionsAndRotations(const Entity* entities,
|
||||
const Vec3* positions,
|
||||
const Quat* rotations,
|
||||
int count) override
|
||||
{
|
||||
if (count <= 0) return;
|
||||
IEditorCommand* command = m_allocator.newObject<MoveEntityCommand>(
|
||||
|
|
|
@ -109,35 +109,28 @@ public:
|
|||
virtual void selectEntities(const Entity* entities, int count) = 0;
|
||||
virtual void selectEntitiesWithSameMesh() = 0;
|
||||
virtual Entity addEntityAt(int camera_x, int camera_y) = 0;
|
||||
virtual void setEntitiesPositions(const Entity* entities,
|
||||
const Vec3* positions,
|
||||
int count) = 0;
|
||||
virtual void setEntitiesScales(const Array<Entity>& entities,
|
||||
const Array<float>& scales) = 0;
|
||||
virtual void setEntitiesRotations(const Entity* entity,
|
||||
const Quat* rotations,
|
||||
int count) = 0;
|
||||
virtual void setEntitiesPositionsAndRotaions(const Entity* entity,
|
||||
const Vec3* position,
|
||||
const Quat* rotation,
|
||||
int count) = 0;
|
||||
virtual void setEntitiesPositions(const Entity* entities, const Vec3* positions, int count) = 0;
|
||||
virtual void setEntitiesScales(const Entity* entities, const float* scales, int count) = 0;
|
||||
virtual void setEntitiesRotations(const Entity* entity, const Quat* rotations, int count) = 0;
|
||||
virtual void setEntitiesPositionsAndRotations(const Entity* entity,
|
||||
const Vec3* position,
|
||||
const Quat* rotation,
|
||||
int count) = 0;
|
||||
virtual void setEntityName(Entity entity, const char* name) = 0;
|
||||
virtual void snapToTerrain() = 0;
|
||||
virtual void toggleGameMode() = 0;
|
||||
virtual void navigate(float forward, float right, float speed) = 0;
|
||||
virtual void setProperty(uint32_t component,
|
||||
int index,
|
||||
IPropertyDescriptor& property,
|
||||
const void* data,
|
||||
int size) = 0;
|
||||
virtual void addArrayPropertyItem(const ComponentUID& cmp,
|
||||
IArrayDescriptor& property) = 0;
|
||||
int index,
|
||||
IPropertyDescriptor& property,
|
||||
const void* data,
|
||||
int size) = 0;
|
||||
virtual void addArrayPropertyItem(const ComponentUID& cmp, IArrayDescriptor& property) = 0;
|
||||
virtual void removeArrayPropertyItem(const ComponentUID& cmp,
|
||||
int index,
|
||||
IArrayDescriptor& property) = 0;
|
||||
int index,
|
||||
IArrayDescriptor& property) = 0;
|
||||
virtual void onMouseDown(int x, int y, MouseButton::Value button) = 0;
|
||||
virtual void
|
||||
onMouseMove(int x, int y, int relx, int rely, int mouse_flags) = 0;
|
||||
virtual void onMouseMove(int x, int y, int relx, int rely, int mouse_flags) = 0;
|
||||
virtual void onMouseUp(int x, int y, MouseButton::Value button) = 0;
|
||||
virtual float getMouseX() const = 0;
|
||||
virtual float getMouseY() const = 0;
|
||||
|
|
|
@ -47,7 +47,7 @@ class Context
|
|||
public:
|
||||
Context()
|
||||
: m_allocator(m_main_allocator)
|
||||
, m_is_property_grid_shown(true)
|
||||
, m_is_property_grid_opened(true)
|
||||
, m_is_entity_list_shown(true)
|
||||
, m_finished(false)
|
||||
, m_is_style_editor_shown(false)
|
||||
|
@ -279,7 +279,7 @@ public:
|
|||
ImGui::MenuItem("Entity templates", nullptr, &m_is_entity_template_list_opened);
|
||||
ImGui::MenuItem("Log", nullptr, &m_log_ui->m_is_opened);
|
||||
ImGui::MenuItem("Profiler", nullptr, &m_profiler_ui->m_is_opened);
|
||||
ImGui::MenuItem("Properties", nullptr, &m_is_property_grid_shown);
|
||||
ImGui::MenuItem("Properties", nullptr, &m_is_property_grid_opened);
|
||||
ImGui::MenuItem("Style editor", nullptr, &m_is_style_editor_shown);
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
|
@ -550,15 +550,21 @@ public:
|
|||
{
|
||||
m_editor->setEntitiesRotations(&entity, &rot, 1);
|
||||
}
|
||||
|
||||
float scale = m_editor->getUniverse()->getScale(entity);
|
||||
if (ImGui::DragFloat("Scale", &scale, 0.1))
|
||||
{
|
||||
m_editor->setEntitiesScales(&entity, &scale, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void showPropertyGrid()
|
||||
{
|
||||
if (!m_is_property_grid_shown) return;
|
||||
if (!m_is_property_grid_opened) return;
|
||||
|
||||
auto& ents = m_editor->getSelectedEntities();
|
||||
if (ImGui::Begin("Properties", &m_is_property_grid_shown) && ents.size() == 1)
|
||||
if (ImGui::Begin("Properties", &m_is_property_grid_opened) && ents.size() == 1)
|
||||
{
|
||||
if (ImGui::Button("Add component"))
|
||||
{
|
||||
|
@ -931,7 +937,7 @@ public:
|
|||
|
||||
bool m_is_gameview_hovered;
|
||||
bool m_is_gameview_opened;
|
||||
bool m_is_property_grid_shown;
|
||||
bool m_is_property_grid_opened;
|
||||
bool m_is_entity_list_shown;
|
||||
bool m_is_entity_template_list_opened;
|
||||
bool m_is_style_editor_shown;
|
||||
|
|
|
@ -217,12 +217,7 @@ void EntityModel::addNameProperty()
|
|||
|
||||
void EntityModel::setEntityScale(float value)
|
||||
{
|
||||
Lumix::StackAllocator<256> allocator;
|
||||
Lumix::Array<Lumix::Entity> entities(allocator);
|
||||
Lumix::Array<float> scales(allocator);
|
||||
entities.push(m_entity);
|
||||
scales.push(value);
|
||||
m_editor.setEntitiesScales(entities, scales);
|
||||
m_editor.setEntitiesScales(&m_entity, &value, 1);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue