Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
hoffstadt committed Jun 22, 2024
1 parent 0ce7207 commit b7b6b79
Showing 1 changed file with 33 additions and 4 deletions.
37 changes: 33 additions & 4 deletions editor/editor.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Index of this file:

typedef struct _plAppData plAppData;
static void pl_show_ecs_window(plAppData*, bool* pbShowWindow);
static void pl_render_translation_gizmo(plDrawList3D*, const plVec3* ptCenter, const plVec3* ptCameraPos);
static void pl_render_translation_gizmo(plDrawList3D*, const plVec3* ptCenter, const plCameraComponent* ptCamera);
static void pl_render_rotation_gizmo(plDrawList3D*, const plVec3* ptCenter, const plVec3* ptCameraPos);
static void pl_render_scale_gizmo(plDrawList3D*, const plVec3* ptCenter, const plVec3* ptCameraPos);

Expand Down Expand Up @@ -387,6 +387,34 @@ pl_app_update(plAppData* ptAppData)
pl_show_ecs_window(ptAppData, &ptAppData->bShowEntityWindow);
}

{
static bool bSelected = false;

static plVec3 tInitialPos = {0};
static plVec3 tFinalPos = {0};

bool bOwnMouse = gptIO->get_io()->bWantCaptureMouse;
if(!bOwnMouse && gptIO->is_mouse_clicked(PL_MOUSE_BUTTON_LEFT, false))
{
plVec2 tMousePos = gptIO->get_mouse_pos();

plMat4 tBlah = pl_mul_mat4(&ptCamera->tProjMat, &ptCamera->tViewMat);
tBlah = pl_mat4_invert(&tBlah);

plVec4 tNDC = {-1.0f + 2.0f * tMousePos.x / gptIO->get_io()->afMainViewportSize[0], -1.0f + 2.0f * tMousePos.y / gptIO->get_io()->afMainViewportSize[1], 1.0f, 1.0f};
tNDC = pl_mul_mat4_vec4(&tBlah, tNDC);
tNDC = pl_div_vec4_scalarf(tNDC, tNDC.w);
tFinalPos = tNDC.xyz;
tInitialPos = ptCamera->tPos;
bSelected = true;
}

if(bSelected)
{
gptDraw->add_3d_line(gptRenderer->get_debug_drawlist(ptAppData->uSceneHandle0, ptAppData->uViewHandle0), tInitialPos, tFinalPos, (plVec4){1.0f, 1.0f, 0.0f, 1.0f}, 0.02f);
}
}

if(ptAppData->tSelectedEntity.uIndex != UINT32_MAX)
{
plObjectComponent* ptSelectedObject = gptEcs->get_component(ptMainComponentLibrary, PL_COMPONENT_TYPE_OBJECT, ptAppData->tSelectedEntity);
Expand All @@ -397,7 +425,7 @@ pl_app_update(plAppData* ptAppData)
{
plDrawList3D* ptGizmoDrawlist = gptRenderer->get_gizmo_drawlist(ptAppData->uSceneHandle0, ptAppData->uViewHandle0);
if(ptAppData->tSelectionMode == PL_SELECTION_MODE_TRANSLATION)
pl_render_translation_gizmo(ptGizmoDrawlist, &ptSelectedTransform->tWorld.col[3].xyz, &ptCamera->tPos);
pl_render_translation_gizmo(ptGizmoDrawlist, &ptSelectedTransform->tWorld.col[3].xyz, ptCamera);
else if(ptAppData->tSelectionMode == PL_SELECTION_MODE_ROTATION)
pl_render_rotation_gizmo(ptGizmoDrawlist, &ptSelectedTransform->tWorld.col[3].xyz, &ptCamera->tPos);
else if(ptAppData->tSelectionMode == PL_SELECTION_MODE_SCALE)
Expand Down Expand Up @@ -507,6 +535,7 @@ pl_app_update(plAppData* ptAppData)

// add full screen quad for offscreen render
gptDraw->add_image(ptAppData->ptDrawLayer, gptRenderer->get_view_color_texture(ptAppData->uSceneHandle0, ptAppData->uViewHandle0), (plVec2){0}, (plVec2){ptIO->afMainViewportSize[0], ptIO->afMainViewportSize[1]});

gptDraw->submit_2d_layer(ptAppData->ptDrawLayer);

gptRenderer->end_frame();
Expand All @@ -520,9 +549,9 @@ pl_app_update(plAppData* ptAppData)
//-----------------------------------------------------------------------------

static void
pl_render_translation_gizmo(plDrawList3D* ptDrawlist, const plVec3* ptCenter, const plVec3* ptCameraPos)
pl_render_translation_gizmo(plDrawList3D* ptDrawlist, const plVec3* ptCenter, const plCameraComponent* ptCamera)
{
const float fScale = pl_length_vec3(pl_sub_vec3(*ptCenter, *ptCameraPos));
const float fScale = pl_length_vec3(pl_sub_vec3(*ptCenter, ptCamera->tPos));
const float fAxisRadius = 0.0035f * fScale;
const float fArrowRadius = 0.0075f * fScale;
const float fArrowLength = 0.03f * fScale;
Expand Down

0 comments on commit b7b6b79

Please sign in to comment.