mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-12-10 05:57:48 +00:00
Added support for preview scale on script templates
This commit is contained in:
@@ -132,5 +132,5 @@ CLight* CLightNode::Light()
|
||||
|
||||
CVector2f CLightNode::BillboardScale()
|
||||
{
|
||||
return mScale.xz() * 0.75f;
|
||||
return AbsoluteScale().xz() * 0.75f;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user