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.
parent
db977bf85c
commit
efdba568f6
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue