add cover tool

add cover tool
some more cleanup
navmeshselecttool needs to use collideBox
duDebugDrawTorque now has the transparent blending option
This commit is contained in:
marauder2k7 2025-07-28 08:24:20 +01:00
parent 24ec55e8bc
commit b5d6601b96
11 changed files with 142 additions and 88 deletions

View file

@ -0,0 +1,40 @@
#include "coverTool.h"
IMPLEMENT_CONOBJECT(CoverTool);
CoverTool::CoverTool()
{
}
void CoverTool::onActivated(const Gui3DMouseEvent& evt)
{
Con::executef(this, "onActivated");
}
void CoverTool::onDeactivated()
{
Con::executef(this, "onDeactivated");
}
void CoverTool::on3DMouseDown(const Gui3DMouseEvent& evt)
{
if (mNavMesh.isNull())
return;
}
void CoverTool::on3DMouseMove(const Gui3DMouseEvent& evt)
{
if (mNavMesh.isNull())
return;
}
void CoverTool::onRender3D()
{
if (mNavMesh.isNull())
return;
}
bool CoverTool::updateGuiInfo()
{
return false;
}

View file

@ -0,0 +1,33 @@
#ifndef _COVERTOOL_H_
#define _COVERTOOL_H_
#ifndef _NAVMESH_TOOL_H_
#include "navigation/navMeshTool.h"
#endif
#ifndef _NAVPATH_H_
#include "navigation/navPath.h"
#endif
class CoverTool : public NavMeshTool
{
typedef NavMeshTool Parent;
public:
DECLARE_CONOBJECT(CoverTool);
CoverTool();
virtual ~CoverTool() {}
void onActivated(const Gui3DMouseEvent& evt) override;
void onDeactivated() override;
void on3DMouseDown(const Gui3DMouseEvent& evt) override;
void on3DMouseMove(const Gui3DMouseEvent& evt) override;
void onRender3D() override;
bool updateGuiInfo() override;
};
#endif // !_COVERTOOL_H_

View file

@ -44,7 +44,7 @@ void NavMeshSelectTool::on3DMouseDown(const Gui3DMouseEvent& evt)
Point3F endPnt = evt.pos + evt.vec * 1000.0f;
RayInfo ri;
if (gServerContainer.castRay(startPnt, endPnt, MarkerObjectType, &ri))
if (gServerContainer.collideBox(startPnt, endPnt, MarkerObjectType, &ri))
{
if (!ri.object)
return;
@ -53,6 +53,8 @@ void NavMeshSelectTool::on3DMouseDown(const Gui3DMouseEvent& evt)
if (selNavMesh)
{
mCurEditor->selectMesh(selNavMesh);
mSelMesh = selNavMesh;
Con::executef(this, "onNavMeshSelected");
return;
}
}
@ -68,7 +70,7 @@ void NavMeshSelectTool::on3DMouseMove(const Gui3DMouseEvent& evt)
Point3F endPnt = evt.pos + evt.vec * 1000.0f;
RayInfo ri;
if (gServerContainer.castRay(startPnt, endPnt, MarkerObjectType, &ri))
if (gServerContainer.collideBox(startPnt, endPnt, MarkerObjectType, &ri))
{
NavMesh* selNavMesh = dynamic_cast<NavMesh*>(ri.object);
if (selNavMesh)
@ -90,6 +92,8 @@ void NavMeshSelectTool::onRender3D()
{
if (!mCurMesh.isNull())
renderBoxOutline(mCurMesh->getWorldBox(), ColorI::LIGHT);
if (!mSelMesh.isNull())
renderBoxOutline(mSelMesh->getWorldBox(), ColorI::LIGHT);
}
bool NavMeshSelectTool::updateGuiInfo()

View file

@ -11,6 +11,7 @@ class NavMeshSelectTool : public NavMeshTool
typedef NavMeshTool Parent;
protected:
SimObjectPtr<NavMesh> mCurMesh;
SimObjectPtr<NavMesh> mSelMesh;
public:
DECLARE_CONOBJECT(NavMeshSelectTool);