Disable gizmo mode actions when the selected nodes don't allow them

This commit is contained in:
parax0
2015-12-06 22:44:56 -07:00
parent 0da183b161
commit b4855e37ed
12 changed files with 87 additions and 39 deletions

View File

@@ -15,6 +15,7 @@ public:
void DrawSelection();
void RayAABoxIntersectTest(CRayCollisionTester& Tester, const SViewInfo& ViewInfo);
SRayIntersection RayNodeIntersectTest(const CRay &Ray, u32 AssetID, const SViewInfo& ViewInfo);
bool AllowsRotate() const { return false; }
CLight* Light();
CVector2f BillboardScale();

View File

@@ -58,6 +58,9 @@ public:
virtual void DrawSelection();
virtual void RayAABoxIntersectTest(CRayCollisionTester& Tester, const SViewInfo& ViewInfo);
virtual SRayIntersection RayNodeIntersectTest(const CRay& Ray, u32 AssetID, const SViewInfo& ViewInfo) = 0;
virtual bool AllowsTranslate() const { return true; }
virtual bool AllowsRotate() const { return true; }
virtual bool AllowsScale() const { return true; }
virtual bool IsVisible() const;
virtual CColor TintColor(const SViewInfo& ViewInfo) const;
virtual CColor WireframeColor() const;

View File

@@ -363,6 +363,18 @@ SRayIntersection CScriptNode::RayNodeIntersectTest(const CRay& Ray, u32 AssetID,
return out;
}
bool CScriptNode::AllowsRotate() const
{
CScriptTemplate *pTemp = mpInstance->Template();
return (pTemp->RotationType() == CScriptTemplate::eRotationEnabled);
}
bool CScriptNode::AllowsScale() const
{
CScriptTemplate *pTemp = mpInstance->Template();
return (pTemp->ScaleType() != CScriptTemplate::eScaleDisabled);
}
bool CScriptNode::IsVisible() const
{
// Reimplementation of CSceneNode::IsVisible() to allow for layer and template visiblity to be taken into account

View File

@@ -33,6 +33,8 @@ public:
void DrawSelection();
void RayAABoxIntersectTest(CRayCollisionTester& Tester, const SViewInfo& ViewInfo);
SRayIntersection RayNodeIntersectTest(const CRay &Ray, u32 AssetID, const SViewInfo& ViewInfo);
bool AllowsRotate() const;
bool AllowsScale() const;
bool IsVisible() const;
CColor TintColor(const SViewInfo &ViewInfo) const;
CColor WireframeColor() const;