Added capsule collider component

This commit is contained in:
Antoine Pilote
2023-04-02 19:01:40 -04:00
parent 17849584e5
commit 80eadc2a5a
9 changed files with 144 additions and 46 deletions

View File

@@ -0,0 +1,37 @@
#pragma once
#include "ComponentPanel.h"
#include <src/Scene/Components/CapsuleColliderComponent.h>
class CapsuleColliderPanel: ComponentPanel
{
public:
CapsuleColliderPanel() = default;
void Draw(Nuake::Entity entity) override
{
if (!entity.HasComponent<Nuake::CapsuleColliderComponent>())
return;
auto& component = entity.GetComponent<Nuake::CapsuleColliderComponent>();
BeginComponentTable(CAPSULE COLLIDER, Nuake::CapsuleColliderComponent);
{
{
ImGui::Text("Radius");
ImGui::TableNextColumn();
ImGui::DragFloat("##Radius", &component.Radius);
ImGui::TableNextColumn();
ComponentTableReset(component.Radius, 0.5f)
}
ImGui::TableNextColumn();
{
ImGui::Text("Height");
ImGui::TableNextColumn();
ImGui::DragFloat("##Height", &component.Height);
ImGui::TableNextColumn();
ComponentTableReset(component.Height, 1.0f)
}
}
EndComponentTable()
}
};

View File

@@ -11,6 +11,8 @@
#include <dependencies/GLEW/include/GL/glew.h>
#include "src/Scene/Components/CapsuleColliderComponent.h"
GizmoDrawer::GizmoDrawer()
{
mLineShader = Nuake::ShaderManager::GetShader("resources/Shaders/line.shader");
@@ -199,10 +201,10 @@ void GizmoDrawer::DrawGizmos(Ref<Scene> scene)
Nuake::RenderCommand::DrawLines(0, 128);
}
auto capsuleColliderView = scene->m_Registry.view<TransformComponent, BoxColliderComponent>();
auto capsuleColliderView = scene->m_Registry.view<TransformComponent, CapsuleColliderComponent>();
for (auto e : capsuleColliderView)
{
auto [transform, capsule] = scene->m_Registry.get<TransformComponent, BoxColliderComponent>(e);
auto [transform, capsule] = scene->m_Registry.get<TransformComponent, CapsuleColliderComponent>(e);
mLineShader->Bind();
mLineShader->SetUniformMat4f("u_View", glm::translate(scene->m_EditorCamera->GetTransform(), transform.Translation));
mLineShader->SetUniformMat4f("u_Projection", scene->m_EditorCamera->GetPerspective());

View File

@@ -38,7 +38,7 @@ void EditorSelectionPanel::ResolveFile(Ref<Nuake::File> file)
void EditorSelectionPanel::Draw(EditorSelection selection)
{
if (ImGui::Begin("Propreties"))
if (ImGui::Begin("Properties"))
{
switch (selection.Type)
{
@@ -101,6 +101,7 @@ void EditorSelectionPanel::DrawEntity(Nuake::Entity entity)
mRigidbodyPanel.Draw(entity);
mBoxColliderPanel.Draw(entity);
mSphereColliderPanel.Draw(entity);
mCapsuleColliderPanel.Draw(entity);
mMeshColliderPanel.Draw(entity);
mCharacterControllerPanel.Draw(entity);
}
@@ -126,6 +127,7 @@ void EditorSelectionPanel::DrawAddComponentMenu(Nuake::Entity entity)
MenuItemComponent("Character Controller", Nuake::CharacterControllerComponent)
MenuItemComponent("Rigid body", Nuake::RigidBodyComponent)
MenuItemComponent("Box collider", Nuake::BoxColliderComponent)
MenuItemComponent("Capsule collider", Nuake::CapsuleColliderComponent)
MenuItemComponent("Sphere collider", Nuake::SphereColliderComponent)
MenuItemComponent("Mesh collider", Nuake::MeshColliderComponent)
ImGui::Separator();

View File

@@ -13,6 +13,7 @@
#include "../ComponentsPanel/CameraPanel.h"
#include "../ComponentsPanel/RigidbodyPanel.h"
#include "../ComponentsPanel/BoxColliderPanel.h"
#include "../ComponentsPanel/CapsuleColliderPanel.h"
#include "../ComponentsPanel/SphereColliderPanel.h"
#include "../ComponentsPanel/MeshColliderPanel.h"
#include "../ComponentsPanel/CharacterControllerPanel.h"
@@ -29,6 +30,8 @@ private:
BoxColliderPanel mBoxColliderPanel;
SphereColliderPanel mSphereColliderPanel;
MeshColliderPanel mMeshColliderPanel;
CapsuleColliderPanel mCapsuleColliderPanel;
CharacterControllerPanel mCharacterControllerPanel;
Ref<Nuake::File> currentFile;