PATH-284: Altering the design toward the new layout. Starting to re-hookup the functionality to the new controls. NOTE: This DOES break the pathing floater functionality.

meow-7.2.2
Todd Stinson 2012-02-10 19:59:03 -08:00
parent db977bf85c
commit efdba568f6
3 changed files with 425 additions and 741 deletions

View File

@ -42,13 +42,6 @@
#include "LLPathingLib.h"
#define XUI_RENDER_OVERLAY_ON_FIXED_PHYSICS_GEOMETRY 1
#define XUI_RENDER_OVERLAY_ON_ALL_RENDERABLE_GEOMETRY 2
#define XUI_PATH_SELECT_NONE 0
#define XUI_PATH_SELECT_START_POINT 1
#define XUI_PATH_SELECT_END_POINT 2
#define XUI_CHARACTER_TYPE_A 1
#define XUI_CHARACTER_TYPE_B 2
#define XUI_CHARACTER_TYPE_C 3
@ -63,32 +56,33 @@ const int MAX_OBSERVERS = 10;
BOOL LLFloaterPathfindingConsole::postBuild()
{
childSetAction("view_and_edit_linksets", boost::bind(&LLFloaterPathfindingConsole::onViewEditLinksetClicked, this));
childSetAction("rebuild_navmesh", boost::bind(&LLFloaterPathfindingConsole::onRebuildNavMeshClicked, this));
childSetAction("refresh_navmesh", boost::bind(&LLFloaterPathfindingConsole::onRefreshNavMeshClicked, this));
mShowNavMeshCheckBox = findChild<LLCheckBoxCtrl>("show_navmesh_overlay");
mShowNavMeshCheckBox = findChild<LLCheckBoxCtrl>("show_navmesh");
llassert(mShowNavMeshCheckBox != NULL);
mShowNavMeshCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowNavMeshToggle, this));
mShowExcludeVolumesCheckBox = findChild<LLCheckBoxCtrl>("show_exclusion_volumes");
llassert(mShowExcludeVolumesCheckBox != NULL);
mShowExcludeVolumesCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowExcludeVolumesToggle, this));
mShowWalkablesCheckBox = findChild<LLCheckBoxCtrl>("show_walkables");
llassert(mShowWalkablesCheckBox != NULL);
mShowWalkablesCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowWalkablesToggle, this));
mShowPathCheckBox = findChild<LLCheckBoxCtrl>("show_path");
llassert(mShowPathCheckBox != NULL);
mShowPathCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowPathToggle, this));
mShowStaticObstaclesCheckBox = findChild<LLCheckBoxCtrl>("show_static_obstacles");
llassert(mShowStaticObstaclesCheckBox != NULL);
mShowStaticObstaclesCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowStaticObstaclesToggle, this));
mShowWaterPlaneCheckBox = findChild<LLCheckBoxCtrl>("show_water_plane");
llassert(mShowWaterPlaneCheckBox != NULL);
mShowWaterPlaneCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowWaterPlaneToggle, this));
mShowMaterialVolumesCheckBox = findChild<LLCheckBoxCtrl>("show_material_volumes");
llassert(mShowMaterialVolumesCheckBox != NULL);
mShowMaterialVolumesCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowMaterialVolumesToggle, this));
mRegionOverlayDisplayRadioGroup = findChild<LLRadioGroup>("region_overlay_display");
llassert(mRegionOverlayDisplayRadioGroup != NULL);
mRegionOverlayDisplayRadioGroup->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onRegionOverlayDisplaySwitch, this));
mShowExclusionVolumesCheckBox = findChild<LLCheckBoxCtrl>("show_exclusion_volumes");
llassert(mShowExclusionVolumesCheckBox != NULL);
mShowExclusionVolumesCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowExclusionVolumesToggle, this));
mPathSelectionRadioGroup = findChild<LLRadioGroup>("path_selection");
llassert(mPathSelectionRadioGroup != NULL);
mPathSelectionRadioGroup ->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onPathSelectionSwitch, this));
mShowWorldCheckBox = findChild<LLCheckBoxCtrl>("show_world");
llassert(mShowWorldCheckBox != NULL);
mShowWorldCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowWorldToggle, this));
mPathfindingStatus = findChild<LLTextBase>("pathfinding_status");
llassert(mPathfindingStatus != NULL);
mCharacterWidthSlider = findChild<LLSliderCtrl>("character_width");
llassert(mCharacterWidthSlider != NULL);
@ -98,113 +92,9 @@ BOOL LLFloaterPathfindingConsole::postBuild()
llassert(mCharacterTypeRadioGroup != NULL);
mCharacterTypeRadioGroup->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onCharacterTypeSwitch, this));
mPathfindingStatus = findChild<LLTextBase>("pathfinding_status");
llassert(mPathfindingStatus != NULL);
mTerrainMaterialA = findChild<LLLineEditor>("terrain_material_a");
llassert(mTerrainMaterialA != NULL);
mTerrainMaterialA->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onTerrainMaterialASet, this));
mTerrainMaterialA->setPrevalidate(LLTextValidate::validateFloat);
mTerrainMaterialB = findChild<LLLineEditor>("terrain_material_b");
llassert(mTerrainMaterialB != NULL);
mTerrainMaterialB->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onTerrainMaterialBSet, this));
mTerrainMaterialB->setPrevalidate(LLTextValidate::validateFloat);
mTerrainMaterialC = findChild<LLLineEditor>("terrain_material_c");
llassert(mTerrainMaterialC != NULL);
mTerrainMaterialC->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onTerrainMaterialCSet, this));
mTerrainMaterialC->setPrevalidate(LLTextValidate::validateFloat);
mTerrainMaterialD = findChild<LLLineEditor>("terrain_material_d");
llassert(mTerrainMaterialD != NULL);
mTerrainMaterialD->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onTerrainMaterialDSet, this));
mTerrainMaterialD->setPrevalidate(LLTextValidate::validateFloat);
return LLFloater::postBuild();
}
LLFloaterPathfindingConsole::ERegionOverlayDisplay LLFloaterPathfindingConsole::getRegionOverlayDisplay() const
{
ERegionOverlayDisplay regionOverlayDisplay;
switch (mRegionOverlayDisplayRadioGroup->getValue().asInteger())
{
case XUI_RENDER_OVERLAY_ON_FIXED_PHYSICS_GEOMETRY :
regionOverlayDisplay = kRenderOverlayOnFixedPhysicsGeometry;
break;
case XUI_RENDER_OVERLAY_ON_ALL_RENDERABLE_GEOMETRY :
regionOverlayDisplay = kRenderOverlayOnAllRenderableGeometry;
break;
default :
regionOverlayDisplay = kRenderOverlayOnFixedPhysicsGeometry;
llassert(0);
break;
}
return regionOverlayDisplay;
}
void LLFloaterPathfindingConsole::setRegionOverlayDisplay(ERegionOverlayDisplay pRegionOverlayDisplay)
{
LLSD radioGroupValue;
switch (pRegionOverlayDisplay)
{
case kRenderOverlayOnFixedPhysicsGeometry :
radioGroupValue = XUI_RENDER_OVERLAY_ON_FIXED_PHYSICS_GEOMETRY;
break;
case kRenderOverlayOnAllRenderableGeometry :
radioGroupValue = XUI_RENDER_OVERLAY_ON_ALL_RENDERABLE_GEOMETRY;
break;
default :
radioGroupValue = XUI_RENDER_OVERLAY_ON_FIXED_PHYSICS_GEOMETRY;
llassert(0);
break;
}
mRegionOverlayDisplayRadioGroup->setValue(radioGroupValue);
}
LLFloaterPathfindingConsole::EPathSelectionState LLFloaterPathfindingConsole::getPathSelectionState() const
{
EPathSelectionState pathSelectionState;
switch (mPathSelectionRadioGroup->getValue().asInteger())
{
case XUI_PATH_SELECT_START_POINT :
pathSelectionState = kPathSelectStartPoint;
break;
case XUI_PATH_SELECT_END_POINT :
pathSelectionState = kPathSelectEndPoint;
break;
default :
pathSelectionState = kPathSelectNone;
break;
}
return pathSelectionState;
}
void LLFloaterPathfindingConsole::setPathSelectionState(EPathSelectionState pPathSelectionState)
{
LLSD radioGroupValue;
switch (pPathSelectionState)
{
case kPathSelectStartPoint :
radioGroupValue = XUI_PATH_SELECT_START_POINT;
break;
case kPathSelectEndPoint :
radioGroupValue = XUI_PATH_SELECT_END_POINT;
break;
default :
radioGroupValue = XUI_PATH_SELECT_NONE;
break;
}
mPathSelectionRadioGroup->setValue(radioGroupValue);
}
F32 LLFloaterPathfindingConsole::getCharacterWidth() const
{
return mCharacterWidthSlider->getValueF32();
@ -269,46 +159,6 @@ void LLFloaterPathfindingConsole::setCharacterType(ECharacterType pCharacterType
mCharacterTypeRadioGroup->setValue(radioGroupValue);
}
F32 LLFloaterPathfindingConsole::getTerrainMaterialA() const
{
return mTerrainMaterialA->getValue().asReal();
}
void LLFloaterPathfindingConsole::setTerrainMaterialA(F32 pTerrainMaterial)
{
mTerrainMaterialA->setValue(LLSD(pTerrainMaterial));
}
F32 LLFloaterPathfindingConsole::getTerrainMaterialB() const
{
return mTerrainMaterialB->getValue().asReal();
}
void LLFloaterPathfindingConsole::setTerrainMaterialB(F32 pTerrainMaterial)
{
mTerrainMaterialB->setValue(LLSD(pTerrainMaterial));
}
F32 LLFloaterPathfindingConsole::getTerrainMaterialC() const
{
return mTerrainMaterialC->getValue().asReal();
}
void LLFloaterPathfindingConsole::setTerrainMaterialC(F32 pTerrainMaterial)
{
mTerrainMaterialC->setValue(LLSD(pTerrainMaterial));
}
F32 LLFloaterPathfindingConsole::getTerrainMaterialD() const
{
return mTerrainMaterialD->getValue().asReal();
}
void LLFloaterPathfindingConsole::setTerrainMaterialD(F32 pTerrainMaterial)
{
mTerrainMaterialD->setValue(LLSD(pTerrainMaterial));
}
void LLFloaterPathfindingConsole::setHasNavMeshReceived()
{
std::string str = getString("navmesh_fetch_complete_available");
@ -330,18 +180,14 @@ void LLFloaterPathfindingConsole::setHasNoNavMesh()
LLFloaterPathfindingConsole::LLFloaterPathfindingConsole(const LLSD& pSeed)
: LLFloater(pSeed),
mShowNavMeshCheckBox(NULL),
mShowExcludeVolumesCheckBox(NULL),
mShowPathCheckBox(NULL),
mShowWaterPlaneCheckBox(NULL),
mRegionOverlayDisplayRadioGroup(NULL),
mPathSelectionRadioGroup(NULL),
mShowWalkablesCheckBox(NULL),
mShowStaticObstaclesCheckBox(NULL),
mShowMaterialVolumesCheckBox(NULL),
mShowExclusionVolumesCheckBox(NULL),
mShowWorldCheckBox(NULL),
mCharacterWidthSlider(NULL),
mCharacterTypeRadioGroup(NULL),
mPathfindingStatus(NULL),
mTerrainMaterialA(NULL),
mTerrainMaterialB(NULL),
mTerrainMaterialC(NULL),
mTerrainMaterialD(NULL),
mNavMeshCnt(0),
mHasStartPoint(false),
mHasEndPoint(false)
@ -423,9 +269,19 @@ void LLFloaterPathfindingConsole::onOpen(const LLSD& pKey)
llinfos<<"Region has does not required caps of type ["<<capability<<"]"<<llendl;
}
}
LLPathingLib::getInstance()->setRenderPath(true);
}
}
void LLFloaterPathfindingConsole::onClose(bool app_quitting)
{
//make sure we have a pathing system
if ( !LLPathingLib::getInstance() )
{
LLPathingLib::getInstance()->setRenderPath(false);
}
}
void LLFloaterPathfindingConsole::onShowNavMeshToggle()
{
BOOL checkBoxValue = mShowNavMeshCheckBox->get();
@ -442,9 +298,64 @@ void LLFloaterPathfindingConsole::onShowNavMeshToggle()
}
}
void LLFloaterPathfindingConsole::onShowExcludeVolumesToggle()
void LLFloaterPathfindingConsole::onShowWalkablesToggle()
{
BOOL checkBoxValue = mShowExcludeVolumesCheckBox->get();
BOOL checkBoxValue = mShowWalkablesCheckBox->get();
LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance();
if (llPathingLibInstance != NULL)
{
//llPathingLibInstance->setRenderNavMesh(checkBoxValue);
llwarns << "functionality has not yet been implemented to set walkables to "
<< (checkBoxValue ? "TRUE" : "FALSE") << llendl;
}
else
{
mShowWalkablesCheckBox->set(FALSE);
llwarns << "cannot find LLPathingLib instance" << llendl;
}
}
void LLFloaterPathfindingConsole::onShowStaticObstaclesToggle()
{
BOOL checkBoxValue = mShowStaticObstaclesCheckBox->get();
LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance();
if (llPathingLibInstance != NULL)
{
//llPathingLibInstance->setRenderNavMesh(checkBoxValue);
llwarns << "functionality has not yet been implemented to set static obstacles to "
<< (checkBoxValue ? "TRUE" : "FALSE") << llendl;
}
else
{
mShowStaticObstaclesCheckBox->set(FALSE);
llwarns << "cannot find LLPathingLib instance" << llendl;
}
}
void LLFloaterPathfindingConsole::onShowMaterialVolumesToggle()
{
BOOL checkBoxValue = mShowMaterialVolumesCheckBox->get();
LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance();
if (llPathingLibInstance != NULL)
{
//llPathingLibInstance->setRenderNavMesh(checkBoxValue);
llwarns << "functionality has not yet been implemented to set material volumes to "
<< (checkBoxValue ? "TRUE" : "FALSE") << llendl;
}
else
{
mShowMaterialVolumesCheckBox->set(FALSE);
llwarns << "cannot find LLPathingLib instance" << llendl;
}
}
void LLFloaterPathfindingConsole::onShowExclusionVolumesToggle()
{
BOOL checkBoxValue = mShowExclusionVolumesCheckBox->get();
LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance();
if (llPathingLibInstance != NULL)
@ -453,89 +364,27 @@ void LLFloaterPathfindingConsole::onShowExcludeVolumesToggle()
}
else
{
mShowExcludeVolumesCheckBox->set(FALSE);
mShowExclusionVolumesCheckBox->set(FALSE);
llwarns << "cannot find LLPathingLib instance" << llendl;
}
}
void LLFloaterPathfindingConsole::onShowPathToggle()
void LLFloaterPathfindingConsole::onShowWorldToggle()
{
BOOL checkBoxValue = mShowPathCheckBox->get();
BOOL checkBoxValue = mShowWorldCheckBox->get();
LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance();
if (llPathingLibInstance != NULL)
{
llPathingLibInstance->setRenderPath(checkBoxValue);
llPathingLibInstance->setRenderOverlayMode(checkBoxValue);
}
else
{
mShowPathCheckBox->set(FALSE);
mShowWorldCheckBox->set(FALSE);
llwarns << "cannot find LLPathingLib instance" << llendl;
}
}
void LLFloaterPathfindingConsole::onShowWaterPlaneToggle()
{
BOOL checkBoxValue = mShowWaterPlaneCheckBox->get();
LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance();
if (llPathingLibInstance != NULL)
{
llPathingLibInstance->setRenderWaterPlane(checkBoxValue);
}
else
{
mShowWaterPlaneCheckBox->set(FALSE);
llwarns << "cannot find LLPathingLib instance" << llendl;
}
llwarns << "functionality has not yet been implemented to toggle '"
<< mShowWaterPlaneCheckBox->getLabel() << "' to "
<< (checkBoxValue ? "ON" : "OFF") << llendl;
}
void LLFloaterPathfindingConsole::onRegionOverlayDisplaySwitch()
{
LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance();
if (llPathingLibInstance != NULL)
{
switch (getRegionOverlayDisplay())
{
case kRenderOverlayOnFixedPhysicsGeometry :
llPathingLibInstance->setRenderOverlayMode(false);
break;
case kRenderOverlayOnAllRenderableGeometry :
llPathingLibInstance->setRenderOverlayMode(true);
break;
default :
llPathingLibInstance->setRenderOverlayMode(false);
llassert(0);
break;
}
}
else
{
this->setRegionOverlayDisplay(kRenderOverlayOnFixedPhysicsGeometry);
llwarns << "cannot find LLPathingLib instance" << llendl;
}
}
void LLFloaterPathfindingConsole::onPathSelectionSwitch()
{
switch (getPathSelectionState())
{
case kPathSelectNone :
break;
case kPathSelectStartPoint :
break;
case kPathSelectEndPoint :
break;
default :
llassert(0);
break;
}
}
void LLFloaterPathfindingConsole::onCharacterWidthSet()
{
generatePath();
@ -577,47 +426,10 @@ void LLFloaterPathfindingConsole::onViewEditLinksetClicked()
LLFloaterPathfindingLinksets::openLinksetsEditor();
}
void LLFloaterPathfindingConsole::onRebuildNavMeshClicked()
{
llwarns << "functionality has not yet been implemented to handle rebuilding of the navmesh" << llendl;
}
void LLFloaterPathfindingConsole::onRefreshNavMeshClicked()
{
llwarns << "functionality has not yet been implemented to handle refreshing of the navmesh" << llendl;
}
void LLFloaterPathfindingConsole::onTerrainMaterialASet()
{
F32 terrainMaterial = getTerrainMaterialA();
llwarns << "functionality has not yet been implemented to setting '" << mTerrainMaterialA->getName()
<< "' to value (" << terrainMaterial << ")" << llendl;
}
void LLFloaterPathfindingConsole::onTerrainMaterialBSet()
{
F32 terrainMaterial = getTerrainMaterialB();
llwarns << "functionality has not yet been implemented to setting '" << mTerrainMaterialB->getName()
<< "' to value (" << terrainMaterial << ")" << llendl;
}
void LLFloaterPathfindingConsole::onTerrainMaterialCSet()
{
F32 terrainMaterial = getTerrainMaterialC();
llwarns << "functionality has not yet been implemented to setting '" << mTerrainMaterialC->getName()
<< "' to value (" << terrainMaterial << ")" << llendl;
}
void LLFloaterPathfindingConsole::onTerrainMaterialDSet()
{
F32 terrainMaterial = getTerrainMaterialD();
llwarns << "functionality has not yet been implemented to setting '" << mTerrainMaterialD->getName()
<< "' to value (" << terrainMaterial << ")" << llendl;
}
void LLFloaterPathfindingConsole::providePathingData( const LLVector3& point1, const LLVector3& point2 )
{
#if 0
switch (getPathSelectionState())
{
case kPathSelectNone :
@ -639,7 +451,7 @@ void LLFloaterPathfindingConsole::providePathingData( const LLVector3& point1, c
llassert(0);
break;
}
#endif
generatePath();
}

View File

@ -45,19 +45,6 @@ class LLFloaterPathfindingConsole
friend class LLFloaterReg;
public:
typedef enum
{
kRenderOverlayOnFixedPhysicsGeometry = 0,
kRenderOverlayOnAllRenderableGeometry = 1
} ERegionOverlayDisplay;
typedef enum
{
kPathSelectNone = 0,
kPathSelectStartPoint = 1,
kPathSelectEndPoint = 2
} EPathSelectionState;
typedef enum
{
kCharacterTypeA = 0,
@ -70,30 +57,12 @@ public:
//Populates a data packet that is forwarded onto the LLPathingSystem
void providePathingData( const LLVector3& point1, const LLVector3& point2 );
ERegionOverlayDisplay getRegionOverlayDisplay() const;
void setRegionOverlayDisplay(ERegionOverlayDisplay pRegionOverlayDisplay);
EPathSelectionState getPathSelectionState() const;
void setPathSelectionState(EPathSelectionState pPathSelectionState);
F32 getCharacterWidth() const;
void setCharacterWidth(F32 pCharacterWidth);
ECharacterType getCharacterType() const;
void setCharacterType(ECharacterType pCharacterType);
F32 getTerrainMaterialA() const;
void setTerrainMaterialA(F32 pTerrainMaterial);
F32 getTerrainMaterialB() const;
void setTerrainMaterialB(F32 pTerrainMaterial);
F32 getTerrainMaterialC() const;
void setTerrainMaterialC(F32 pTerrainMaterial);
F32 getTerrainMaterialD() const;
void setTerrainMaterialD(F32 pTerrainMaterial);
void setHasNavMeshReceived();
void setHasNoNavMesh();
@ -106,37 +75,28 @@ private:
virtual ~LLFloaterPathfindingConsole();
virtual void onOpen(const LLSD& pKey);
virtual void onClose(bool app_quitting);
void onShowNavMeshToggle();
void onShowExcludeVolumesToggle();
void onShowPathToggle();
void onShowWaterPlaneToggle();
void onRegionOverlayDisplaySwitch();
void onPathSelectionSwitch();
void onShowWalkablesToggle();
void onShowStaticObstaclesToggle();
void onShowMaterialVolumesToggle();
void onShowExclusionVolumesToggle();
void onShowWorldToggle();
void onCharacterWidthSet();
void onCharacterTypeSwitch();
void onViewEditLinksetClicked();
void onRebuildNavMeshClicked();
void onRefreshNavMeshClicked();
void onTerrainMaterialASet();
void onTerrainMaterialBSet();
void onTerrainMaterialCSet();
void onTerrainMaterialDSet();
void generatePath();
LLCheckBoxCtrl *mShowNavMeshCheckBox;
LLCheckBoxCtrl *mShowExcludeVolumesCheckBox;
LLCheckBoxCtrl *mShowPathCheckBox;
LLCheckBoxCtrl *mShowWaterPlaneCheckBox;
LLRadioGroup *mRegionOverlayDisplayRadioGroup;
LLRadioGroup *mPathSelectionRadioGroup;
LLCheckBoxCtrl *mShowWalkablesCheckBox;
LLCheckBoxCtrl *mShowStaticObstaclesCheckBox;
LLCheckBoxCtrl *mShowMaterialVolumesCheckBox;
LLCheckBoxCtrl *mShowExclusionVolumesCheckBox;
LLCheckBoxCtrl *mShowWorldCheckBox;
LLSliderCtrl *mCharacterWidthSlider;
LLRadioGroup *mCharacterTypeRadioGroup;
LLTextBase *mPathfindingStatus;
LLLineEditor *mTerrainMaterialA;
LLLineEditor *mTerrainMaterialB;
LLLineEditor *mTerrainMaterialC;
LLLineEditor *mTerrainMaterialD;
LLNavMeshDownloadObserver mNavMeshDownloadObserver[10];
int mCurrentMDO;

View File

@ -2,15 +2,15 @@
<floater
open_positioning="cascading"
can_tear_off="false"
height="228"
height="270"
layout="topleft"
name="floater_pathfinding"
help_topic="floater_pathfinding"
name="floater_pathfinding_console"
help_topic="floater_pathfinding_console"
reuse_instance="true"
save_rect="true"
single_instance="true"
title="Pathfinding setup"
width="833">
title="Pathfinding"
width="450">
<floater.string name="navmesh_fetch_initial"></floater.string>
<floater.string name="navmesh_fetch_inprogress">Downloading the navmesh ...</floater.string>
<floater.string name="navmesh_fetch_complete_available">Navmesh received.</floater.string>
@ -29,16 +29,40 @@
left="12"
top="20"
width="208">
Show overlays:
Show:
</text>
<check_box
height="19"
label="Navmesh"
layout="topleft"
left="20"
name="show_navmesh_overlay"
name="show_navmesh"
top_pad="5"
width="90" />
<check_box
height="19"
label="Walkables"
layout="topleft"
left="20"
name="show_walkables"
top_pad="0"
width="90" />
<check_box
height="19"
label="Static obstacles"
layout="topleft"
left="20"
name="show_static_obstacles"
top_pad="0"
width="90" />
<check_box
height="19"
label="Material volumes"
layout="topleft"
left="20"
name="show_material_volumes"
top_pad="0"
width="90" />
<check_box
height="19"
label="Exclusion volumes"
@ -49,418 +73,306 @@
width="90" />
<check_box
height="19"
label="Path"
label="World"
layout="topleft"
left="20"
name="show_path"
name="show_world"
top_pad="0"
width="90" />
<check_box
height="19"
label="Water plane"
layout="topleft"
left="20"
name="show_water_plane"
top_pad="0"
width="90" />
<text
height="13"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
layout="topleft"
left="12"
top_pad="10"
width="208">
Overlay on:
</text>
<radio_group
follows="top|left"
height="45"
value="1"
layout="topleft"
left_delta="8"
name="region_overlay_display"
top_delta="17"
width="200">
<radio_item
label="Fixed physics geometry"
layout="topleft"
height="14"
name="display_overlay_on_fixed"
value="1"/>
<radio_item
label="All renderable geometry"
layout="topleft"
height="14"
name="display_overlay_on_all"
value="2"/>
</radio_group>
<view_border
<panel
border="true"
bevel_style="none"
follows="top|left"
height="203"
layout="topleft"
name="horiz_separator_1"
top="15"
left="228"
width="0"/>
<text
height="24"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
line_spacing.pixels="2"
follows="left|top"
layout="topleft"
left="240"
top="18"
width="208">
Click on two points
to see the path between them.
</text>
<radio_group
allow_deselect="true"
follows="top|left"
height="45"
layout="topleft"
left_delta="0"
name="path_selection"
top_delta="33"
value="0"
height="60"
width="200">
<radio_item
label="Choose start point"
<text
height="13"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
layout="topleft"
height="14"
name="choose_path_start_point"
value="1"/>
<radio_item
label="Choose end point"
left="5"
top_pad="5"
width="190">
Status:
</text>
<text
height="28"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
height="14"
name="choose_path_end_point"
value="2"/>
</radio_group>
<text
height="14"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
left="240"
width="208">
Character width
</text>
<slider
decimal_digits="1"
height="14"
increment="0.1"
layout="topleft"
max_val="2"
min_val="0.2"
name="character_width"
top_pad="7"
value="1"
width="145" />
<text
height="14"
word_wrap="false"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
top_pad="-14"
left="382"
width="208">
m
</text>
<text
height="14"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
left="240"
top_pad="10"
width="208">
Character type
</text>
<radio_group
follows="top|left"
height="20"
layout="topleft"
left_delta="0"
name="character_type"
top_delta="20"
value="1"
width="200">
<radio_item
label="A"
height="14"
width="30"
value="1"
name="character_type_a"/>
<radio_item
label="B"
height="14"
width="30"
layout="topleft"
top="4"
left="50"
value="2"
name="character_type_b"/>
<radio_item
label="C"
height="14"
width="30"
layout="topleft"
top="4"
left="100"
value="3"
name="character_type_c"/>
<radio_item
label="D"
height="14"
width="30"
layout="topleft"
top="4"
left="150"
value="4"
name="character_type_d"/>
</radio_group>
<text
height="14"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
left="240"
name="pathfinding_status"
top_pad="10"
width="208">
</text>
<view_border
bevel_style="none"
follows="top|left"
height="203"
layout="topleft"
name="horiz_separator_2"
top="15"
left="456"
width="0"/>
<text
height="13"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
left="470"
top="18"
width="180">
View / edit linkset attributes:
</text>
left="15"
name="pathfinding_status"
top_pad="10"
width="180">
</text>
</panel>
<button
follows="left|top"
height="21"
label="Linksets..."
left="20"
label="Characters..."
layout="topleft"
name="view_and_edit_linksets"
name="view_characters_floater"
top_pad="10"
width="96"/>
<text
height="25"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
line_spacing.pixels="4"
<tab_container
follows="left|top"
layout="topleft"
top_pad="22"
width="180">
If you have made changes
to objects or terrain:
</text>
<button
follows="left|top"
height="22"
label="Rebuild navmesh"
layout="topleft"
name="rebuild_navmesh"
top_pad="14"
width="149"/>
<text
height="25"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
line_spacing.pixels="4"
follows="left|top"
layout="topleft"
top_pad="14"
width="180">
To load the current state
of the mesh:
</text>
<button
follows="left|top"
height="21"
label="Refresh"
layout="topleft"
name="refresh_navmesh"
top_pad="9"
width="95"/>
<view_border
bevel_style="none"
follows="top|left"
height="203"
layout="topleft"
name="horiz_separator_3"
top="15"
left="667"
width="0"/>
<text
height="13"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
left="689"
top="18"
width="208">
Terrain materials
</text>
<text
height="13"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
top_pad="17"
width="208">
A
</text>
<line_editor
border_style="line"
border_thickness="1"
follows="top|left"
height="21"
layout="topleft"
left_delta="22"
max_length_bytes="10"
name="terrain_material_a"
width="46" />
<text
height="13"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
layout="topleft"
left_pad="-68"
top_pad="17"
width="208">
B
</text>
<line_editor
border_style="line"
border_thickness="1"
follows="top|left"
height="21"
layout="topleft"
left_delta="22"
max_length_bytes="10"
name="terrain_material_b"
width="46" />
<text
height="13"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
layout="topleft"
left_pad="-68"
top_pad="17"
width="208">
C
</text>
<line_editor
border_style="line"
border_thickness="1"
follows="top|left"
height="21"
layout="topleft"
left_delta="22"
max_length_bytes="10"
name="terrain_material_c"
width="46" />
<text
height="13"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
layout="topleft"
left_pad="-68"
top_pad="17"
width="208">
D
</text>
<line_editor
border_style="line"
border_thickness="1"
follows="top|left"
height="21"
layout="topleft"
left_delta="22"
max_length_bytes="10"
name="terrain_material_d"
width="46" />
<text
height="38"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
line_spacing.pixels="4"
follows="left|top"
layout="topleft"
left_pad="-68"
top_pad="14"
width="180">
Rebuild the navmesh
after making any
changes.
</text>
tab_position="top"
left="220"
top="20"
height="230"
width="220">
<panel
border="true"
bevel_style="none"
follows="left|top"
layout="topleft"
name="edit_panel"
left="1"
label="Edit">
<text
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
left="20"
top_pad="10"
height="13"
width="180">
To blah blah blah:
</text>
<button
follows="left|top"
height="21"
left="30"
enabled="false"
label="Unfreeze"
layout="topleft"
name="enter_unfrozen_mode"
top_pad="0"
width="96"/>
<text
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
left="20"
top_pad="10"
height="13"
width="180">
To blah blah blah:
</text>
<button
follows="left|top"
height="21"
left="30"
enabled="false"
label="Freeze"
layout="topleft"
name="enter_frozen_mode"
top_pad="0"
width="96"/>
<text
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
left="20"
top_pad="10"
height="13"
width="180">
View / edit linkset attributes:
</text>
<button
follows="left|top"
height="21"
left="30"
label="Linksets..."
layout="topleft"
name="view_and_edit_linksets"
top_pad="0"
width="96"/>
<button
follows="left|top"
height="21"
label="Clear path"
layout="topleft"
name="clear_path_on_edit"
left="20"
top="175"
width="96"/>
</panel>
<panel
border="true"
bevel_style="none"
follows="left|top"
layout="topleft"
left="1"
name="test_panel"
label="Test">
<text
height="14"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
left="20"
width="190">
Character width
</text>
<slider
decimal_digits="1"
height="14"
increment="0.1"
layout="topleft"
follows="left|top"
max_val="2"
min_val="0.2"
name="character_width"
top_pad="5"
value="1"
width="145" />
<text
height="14"
word_wrap="false"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
top_pad="-14"
left_pad="0"
width="20">
m
</text>
<text
height="14"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
left_pad="-165"
top_pad="10"
width="190">
Character type
</text>
<radio_group
follows="top|left"
height="20"
layout="topleft"
left_delta="0"
name="character_type"
top_delta="20"
value="1"
width="190">
<radio_item
label="A"
height="14"
width="30"
value="1"
name="character_type_a"/>
<radio_item
label="B"
height="14"
width="30"
layout="topleft"
top="4"
left="50"
value="2"
name="character_type_b"/>
<radio_item
label="C"
height="14"
width="30"
layout="topleft"
top="4"
left="100"
value="3"
name="character_type_c"/>
<radio_item
label="D"
height="14"
width="30"
layout="topleft"
top="4"
left="150"
value="4"
name="character_type_d"/>
</radio_group>
<text
height="14"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
left_pad="-190"
top_pad="10"
width="190">
Ctrl-click to select start point.
</text>
<text
height="14"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="LabelTextColor"
length="1"
follows="left|top"
layout="topleft"
top_pad="5"
width="190">
Alt-click to select start point.
</text>
<text
height="14"
word_wrap="true"
use_ellipses="false"
type="string"
text_color="DrYellow"
length="1"
follows="left|top"
layout="topleft"
top_pad="15"
width="190">
Result: No path found.
</text>
<button
follows="left|top"
height="21"
label="Clear path"
layout="topleft"
name="clear_path_on_test"
left="20"
top="175"
width="96"/>
</panel>
</tab_container>
</floater>