sample app - scale

This commit is contained in:
Mikulas Florek 2015-09-21 00:11:12 +02:00
parent 1e41088840
commit 8a95196df2
5 changed files with 53 additions and 63 deletions

View file

@ -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());
}

View file

@ -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>(

View file

@ -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;

View file

@ -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;

View file

@ -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);
}