Added support for preview scale on script templates

This commit is contained in:
parax0
2015-11-29 04:28:10 -07:00
parent 7622bb2032
commit c260e547c9
10 changed files with 45 additions and 19 deletions

View File

@@ -132,5 +132,5 @@ CLight* CLightNode::Light()
CVector2f CLightNode::BillboardScale()
{
return mScale.xz() * 0.75f;
return AbsoluteScale().xz() * 0.75f;
}

View File

@@ -21,6 +21,7 @@ CSceneNode::CSceneNode(CSceneManager *pScene, CSceneNode *pParent)
mPosition = CVector3f::skZero;
mRotation = CQuaternion::skIdentity;
mScale = CVector3f::skOne;
mScaleMultiplier = CVector3f::skOne;
_mTransformOutdated = true;
_mInheritsPosition = true;
@@ -46,11 +47,6 @@ CSceneNode::~CSceneNode()
}
// ************ VIRTUAL ************
TString CSceneNode::PrefixedName() const
{
return Name();
}
void CSceneNode::DrawSelection()
{
// Default implementation for virtual function
@@ -68,16 +64,19 @@ void CSceneNode::RayAABoxIntersectTest(CRayCollisionTester& Tester, const SViewI
bool CSceneNode::IsVisible() const
{
// Default implementation for virtual function
return mVisible;
}
CColor CSceneNode::TintColor(const SViewInfo& ViewInfo) const
{
// Default implementation for virtual function
return (IsSelected() && !ViewInfo.GameMode ? skSelectionTint : CColor::skWhite);
}
CColor CSceneNode::WireframeColor() const
{
// Default implementation for virtual function
return CColor::skWhite;
}
@@ -367,7 +366,7 @@ CVector3f CSceneNode::LocalScale() const
CVector3f CSceneNode::AbsoluteScale() const
{
CVector3f ret = mScale;
CVector3f ret = mScale * mScaleMultiplier;
if ((mpParent) && (InheritsScale()))
ret *= mpParent->AbsoluteScale();

View File

@@ -38,7 +38,9 @@ protected:
CVector3f mPosition;
CQuaternion mRotation;
CVector3f mScale;
CVector3f mScaleMultiplier;
CAABox mLocalAABox;
bool mMouseHovering;
bool mSelected;
bool mVisible;
@@ -53,7 +55,6 @@ public:
explicit CSceneNode(CSceneManager *pScene, CSceneNode *pParent = 0);
virtual ~CSceneNode();
virtual ENodeType NodeType() = 0;
virtual TString PrefixedName() const;
virtual void AddToRenderer(CRenderer* /*pRenderer*/, const SViewInfo& /*ViewInfo*/) {}
virtual void DrawSelection();
virtual void RayAABoxIntersectTest(CRayCollisionTester& Tester, const SViewInfo& ViewInfo);

View File

@@ -32,7 +32,10 @@ CScriptNode::CScriptNode(CSceneManager *pScene, CSceneNode *pParent, CScriptObje
SetName("[" + pTemp->TemplateName(mpInstance->NumProperties()) + "] " + mpInstance->InstanceName());
if (pTemp->ScaleType() == CScriptTemplate::eScaleEnabled)
{
mScale = mpInstance->Scale();
mScaleMultiplier = mpInstance->Template()->PreviewScale();
}
MarkTransformChanged();
@@ -99,11 +102,6 @@ ENodeType CScriptNode::NodeType()
return eScriptNode;
}
TString CScriptNode::PrefixedName() const
{
return "[" + mpInstance->Template()->TemplateName() + "] " + mpInstance->InstanceName();
}
void CScriptNode::AddToRenderer(CRenderer *pRenderer, const SViewInfo& ViewInfo)
{
if (!mpInstance) return;
@@ -474,6 +472,6 @@ CAABox CScriptNode::PreviewVolumeAABox()
CVector2f CScriptNode::BillboardScale()
{
CVector2f out = (mpInstance->Template()->ScaleType() == CScriptTemplate::eScaleEnabled ? mScale.xz() : CVector2f(1.f));
CVector2f out = (mpInstance->Template()->ScaleType() == CScriptTemplate::eScaleEnabled ? AbsoluteScale().xz() : CVector2f(1.f));
return out * 0.5f;
}

View File

@@ -27,7 +27,6 @@ class CScriptNode : public CSceneNode
public:
CScriptNode(CSceneManager *pScene, CSceneNode *pParent = 0, CScriptObject *pObject = 0);
ENodeType NodeType();
TString PrefixedName() const;
void AddToRenderer(CRenderer *pRenderer, const SViewInfo& ViewInfo);
void Draw(ERenderOptions Options, int ComponentIndex, const SViewInfo& ViewInfo);
void DrawSelection();