PATH-198: Laid out the pathfinding buttons per Leo's design. Functionality is currently hooked up to stubs that report a warning message about lack of implementation.

master
Todd Stinson 2012-02-01 17:40:16 -08:00
parent 28be2c4364
commit 2beb9c1903
3 changed files with 68 additions and 1 deletions

View File

@ -68,6 +68,7 @@
#include "llworld.h"
#include "pipeline.h"
#include "llviewershadermgr.h"
#include "llradiogroup.h"
#include "lldrawpool.h"
#include "lluictrlfactory.h"
@ -158,6 +159,14 @@ BOOL LLPanelVolume::postBuild()
mSpinPhysicsRestitution->setCommitCallback(boost::bind(&LLPanelVolume::sendPhysicsRestitution, this, _1, mSpinPhysicsRestitution));
}
// Pathfinding Parameters
{
// Pathfinding state
mPathfindingType = findChild<LLRadioGroup>("edit_pathfinding_state");
llassert(mPathfindingType != NULL);
mPathfindingType->setCommitCallback(boost::bind(&LLPanelVolume::sendPathfindingType, this));
}
std::map<std::string, std::string> material_name_map;
material_name_map["Stone"]= LLTrans::getString("Stone");
material_name_map["Metal"]= LLTrans::getString("Metal");
@ -194,7 +203,8 @@ BOOL LLPanelVolume::postBuild()
LLPanelVolume::LLPanelVolume()
: LLPanel(),
mComboMaterialItemCount(0)
mComboMaterialItemCount(0),
mPathfindingType(NULL)
{
setMouseOpaque(FALSE);
@ -463,6 +473,8 @@ void LLPanelVolume::getState( )
mSpinPhysicsRestitution->set(objectp->getPhysicsRestitution());
mSpinPhysicsRestitution->setEnabled(editable);
mPathfindingType->setEnabled(editable);
// update the physics shape combo to include allowed physics shapes
mComboPhysicsShapeType->removeall();
mComboPhysicsShapeType->add(getString("None"), LLSD(1));
@ -546,6 +558,8 @@ void LLPanelVolume::refresh()
getChildView("Physics Friction")->setVisible(enable_mesh);
getChildView("Physics Density")->setVisible(enable_mesh);
getChildView("Physics Restitution")->setVisible(enable_mesh);
mPathfindingType->setVisible(enable_mesh);
/* TODO: add/remove individual physics shape types as per the PhysicsShapeTypes simulator features */
}
@ -600,6 +614,8 @@ void LLPanelVolume::clearCtrls()
mSpinPhysicsDensity->setEnabled(FALSE);
mSpinPhysicsRestitution->setEnabled(FALSE);
mPathfindingType->setEnabled(FALSE);
mComboMaterial->setEnabled( FALSE );
}
@ -685,6 +701,12 @@ void LLPanelVolume::sendPhysicsDensity(LLUICtrl* ctrl, void* userdata)
LLSelectMgr::getInstance()->selectionSetDensity(val);
}
void LLPanelVolume::sendPathfindingType()
{
S32 val = mPathfindingType->getValue().asInteger();
llwarns << "functionality to set '" << mPathfindingType->getName() << "' to value " << val << " has not been implemented." << llendl;
}
void LLPanelVolume::refreshCost()
{
LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getFirstObject();

View File

@ -40,6 +40,7 @@ class LLButton;
class LLViewerObject;
class LLComboBox;
class LLColorSwatchCtrl;
class LLRadioGroup;
class LLPanelVolume : public LLPanel
{
@ -84,6 +85,8 @@ protected:
void sendPhysicsRestitution(LLUICtrl* ctrl, void* userdata);
void sendPhysicsDensity(LLUICtrl* ctrl, void* userdata);
void sendPathfindingType();
/*
LLTextBox* mLabelSelectSingleMessage;
// Light
@ -118,6 +121,8 @@ protected:
LLSpinCtrl* mSpinPhysicsFriction;
LLSpinCtrl* mSpinPhysicsDensity;
LLSpinCtrl* mSpinPhysicsRestitution;
LLRadioGroup* mPathfindingType;
};
#endif

View File

@ -2401,6 +2401,46 @@ even though the user gets a free copy.
name="Physics Restitution"
top_pad="8"
width="132" />
<text
type="string"
length="1"
follows="left|top"
height="10"
layout="topleft"
left_delta="0"
top_delta="45"
name="pathfinding_type_label"
width="121">
Pathfinding Type:
</text>
<radio_group
follows="top|left"
height="55"
layout="topleft"
name="edit_pathfinding_state"
left_delta="0"
top_delta="15"
value="1"
width="75">
<radio_item
label="Walkable"
layout="topleft"
height="13"
name="edit_pathfinding_state_walkable"
value="1"/>
<radio_item
label="Obstacle"
layout="topleft"
height="13"
name="edit_pathfinding_state_obstacle"
value="2"/>
<radio_item
label="Ignored"
layout="topleft"
height="13"
name="edit_pathfinding_state_ignored"
value="3"/>
</radio_group>
</panel>
<panel
border="false"