mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-12-12 22:56:13 +00:00
Added support for attaching assets from properties to locator bones in the World Editor
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
#include "Core/Render/CDrawUtil.h"
|
||||
#include "Core/Render/CRenderer.h"
|
||||
|
||||
CDamageableTriggerExtra::CDamageableTriggerExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent)
|
||||
CDamageableTriggerExtra::CDamageableTriggerExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent)
|
||||
: CScriptExtra(pInstance, pScene, pParent)
|
||||
, mpRenderSideProp(nullptr)
|
||||
, mpMat(nullptr)
|
||||
|
||||
@@ -31,7 +31,7 @@ class CDamageableTriggerExtra : public CScriptExtra
|
||||
float mCachedRayDistance;
|
||||
|
||||
public:
|
||||
explicit CDamageableTriggerExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent = 0);
|
||||
explicit CDamageableTriggerExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent = 0);
|
||||
~CDamageableTriggerExtra();
|
||||
void CreateMaterial();
|
||||
void UpdatePlaneTransform();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "CDoorExtra.h"
|
||||
#include "Core/Render/CRenderer.h"
|
||||
|
||||
CDoorExtra::CDoorExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent)
|
||||
CDoorExtra::CDoorExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent)
|
||||
: CScriptExtra(pInstance, pScene, pParent)
|
||||
, mpShieldModelProp(nullptr)
|
||||
, mpShieldColorProp(nullptr)
|
||||
@@ -117,22 +117,22 @@ SRayIntersection CDoorExtra::RayNodeIntersectTest(const CRay& rkRay, u32 AssetID
|
||||
{
|
||||
FRenderOptions Options = rkViewInfo.pRenderer->RenderOptions();
|
||||
|
||||
SRayIntersection out;
|
||||
out.pNode = mpParent;
|
||||
out.ComponentIndex = AssetID;
|
||||
SRayIntersection Out;
|
||||
Out.pNode = mpParent;
|
||||
Out.ComponentIndex = AssetID;
|
||||
|
||||
CRay TransformedRay = rkRay.Transformed(Transform().Inverse());
|
||||
std::pair<bool,float> Result = mpShieldModel->GetSurface(AssetID)->IntersectsRay(TransformedRay, ((Options & eEnableBackfaceCull) == 0));
|
||||
|
||||
if (Result.first)
|
||||
{
|
||||
out.Hit = true;
|
||||
Out.Hit = true;
|
||||
CVector3f HitPoint = TransformedRay.PointOnRay(Result.second);
|
||||
CVector3f WorldHitPoint = Transform() * HitPoint;
|
||||
out.Distance = rkRay.Origin().Distance(WorldHitPoint);
|
||||
Out.Distance = rkRay.Origin().Distance(WorldHitPoint);
|
||||
}
|
||||
|
||||
else out.Hit = false;
|
||||
else Out.Hit = false;
|
||||
|
||||
return out;
|
||||
return Out;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ class CDoorExtra : public CScriptExtra
|
||||
CColor mShieldColor;
|
||||
|
||||
public:
|
||||
explicit CDoorExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent = 0);
|
||||
explicit CDoorExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent = 0);
|
||||
void PropertyModified(IProperty *pProperty);
|
||||
void AddToRenderer(CRenderer *pRenderer, const SViewInfo& rkViewInfo);
|
||||
void Draw(FRenderOptions Options, int ComponentIndex, const SViewInfo& rkViewInfo);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
const CColor CPointOfInterestExtra::skRegularColor = CColor::Integral(0xFF,0x70,0x00);
|
||||
const CColor CPointOfInterestExtra::skImportantColor = CColor::Integral(0xFF,0x00,0x00);
|
||||
|
||||
CPointOfInterestExtra::CPointOfInterestExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent)
|
||||
CPointOfInterestExtra::CPointOfInterestExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent)
|
||||
: CScriptExtra(pInstance, pScene, pParent)
|
||||
, mpScanProperty(nullptr)
|
||||
, mpScanData(nullptr)
|
||||
|
||||
@@ -12,7 +12,7 @@ class CPointOfInterestExtra : public CScriptExtra
|
||||
TResPtr<CScan> mpScanData;
|
||||
|
||||
public:
|
||||
explicit CPointOfInterestExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent = 0);
|
||||
explicit CPointOfInterestExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent = 0);
|
||||
void PropertyModified(IProperty* pProperty);
|
||||
void ModifyTintColor(CColor& Color);
|
||||
CScan* GetScan() const { return mpScanData; }
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include "Core/Render/CDrawUtil.h"
|
||||
#include "Core/Render/CRenderer.h"
|
||||
|
||||
CRadiusSphereExtra::CRadiusSphereExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent)
|
||||
CRadiusSphereExtra::CRadiusSphereExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent)
|
||||
: CScriptExtra(pInstance, pScene, pParent)
|
||||
, mpRadius(nullptr)
|
||||
{
|
||||
|
||||
@@ -10,7 +10,7 @@ class CRadiusSphereExtra : public CScriptExtra
|
||||
TFloatProperty *mpRadius;
|
||||
|
||||
public:
|
||||
explicit CRadiusSphereExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent = 0);
|
||||
explicit CRadiusSphereExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent = 0);
|
||||
void AddToRenderer(CRenderer *pRenderer, const SViewInfo& rkViewInfo);
|
||||
void Draw(FRenderOptions Options, int ComponentIndex, const SViewInfo& rkViewInfo);
|
||||
CColor Color() const;
|
||||
|
||||
@@ -52,9 +52,9 @@ CScriptExtra* CScriptExtra::CreateExtra(CScriptNode *pNode)
|
||||
pExtra = new CRadiusSphereExtra(pObj, pNode->Scene(), pNode);
|
||||
break;
|
||||
|
||||
case 0x53505041: // SplinePath (DKCR)
|
||||
case 0x5043544C: // PathControl (DKCR)
|
||||
case 0x434C5043: // ClingPathControl (DKCR)
|
||||
case 0x53505041: // "SPPA" SplinePath (DKCR)
|
||||
case 0x5043544C: // "PCTL" PathControl (DKCR)
|
||||
case 0x434C5043: // "CLPC" ClingPathControl (DKCR)
|
||||
pExtra = new CSplinePathExtra(pObj, pNode->Scene(), pNode);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "Core/Scene/CSceneNode.h"
|
||||
#include "Core/Scene/CScriptNode.h"
|
||||
#include <Common/Assert.h>
|
||||
|
||||
/* CScriptExtra is a class that allows for additional coded behavior on any given
|
||||
* script object type. Subclass IScriptExtra, add the new class to CScriptExtra.cpp,
|
||||
@@ -15,18 +16,20 @@
|
||||
class CScriptExtra : public CSceneNode
|
||||
{
|
||||
protected:
|
||||
CScriptNode *mpScriptNode;
|
||||
CScriptObject *mpInstance;
|
||||
EGame mGame;
|
||||
|
||||
public:
|
||||
explicit CScriptExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent = 0)
|
||||
: CSceneNode(pScene, -1, pParent),
|
||||
mpInstance(pInstance),
|
||||
mGame(pInstance->Template()->Game())
|
||||
explicit CScriptExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent = 0)
|
||||
: CSceneNode(pScene, -1, pParent)
|
||||
, mpScriptNode(pParent)
|
||||
, mpInstance(pInstance)
|
||||
, mGame(pInstance->Template()->Game())
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~CScriptExtra() {}
|
||||
virtual ~CScriptExtra() {}
|
||||
inline CScriptObject* Instance() const { return mpInstance; }
|
||||
inline EGame Game() const { return mGame; }
|
||||
|
||||
@@ -43,6 +46,7 @@ public:
|
||||
// Virtual CScriptExtra functions
|
||||
virtual void InstanceTransformed() {}
|
||||
virtual void PropertyModified(IProperty* /*pProperty*/) {}
|
||||
virtual void DisplayAssetChanged(CResource* /*pNewDisplayAsset*/) {}
|
||||
virtual void LinksModified() {}
|
||||
virtual bool ShouldDrawNormalAssets() { return true; }
|
||||
virtual bool ShouldDrawVolume() { return true; }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "CSpacePirateExtra.h"
|
||||
|
||||
CSpacePirateExtra::CSpacePirateExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent)
|
||||
CSpacePirateExtra::CSpacePirateExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent)
|
||||
: CScriptExtra(pInstance, pScene ,pParent)
|
||||
, mpPowerVuln(nullptr)
|
||||
, mpWaveVuln(nullptr)
|
||||
|
||||
@@ -13,7 +13,7 @@ class CSpacePirateExtra : public CScriptExtra
|
||||
TEnumProperty *mpPlasmaVuln;
|
||||
|
||||
public:
|
||||
explicit CSpacePirateExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent = 0);
|
||||
explicit CSpacePirateExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent = 0);
|
||||
CColor TevColor();
|
||||
};
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include "Core/Resource/Script/CLink.h"
|
||||
#include "Core/Scene/CScene.h"
|
||||
|
||||
CSplinePathExtra::CSplinePathExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent)
|
||||
CSplinePathExtra::CSplinePathExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent)
|
||||
: CScriptExtra(pInstance, pScene, pParent)
|
||||
{
|
||||
mpPathColor = TPropCast<TColorProperty>(pInstance->Properties()->PropertyByID(0x00DD86E2));
|
||||
|
||||
@@ -15,7 +15,7 @@ class CSplinePathExtra : public CScriptExtra
|
||||
std::list<CWaypointExtra*> mWaypoints;
|
||||
|
||||
public:
|
||||
explicit CSplinePathExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent = 0);
|
||||
explicit CSplinePathExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent = 0);
|
||||
~CSplinePathExtra() { ClearWaypoints(); }
|
||||
inline CColor PathColor() const { return (mpPathColor ? mpPathColor->Get() : CColor::skBlack); }
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "Core/Render/CRenderer.h"
|
||||
#include "Core/Scene/CScene.h"
|
||||
|
||||
CWaypointExtra::CWaypointExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent)
|
||||
CWaypointExtra::CWaypointExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent)
|
||||
: CScriptExtra(pInstance, pScene, pParent)
|
||||
, mColor(CColor::skBlack)
|
||||
, mLinksBuilt(false)
|
||||
|
||||
@@ -20,7 +20,7 @@ class CWaypointExtra : public CScriptExtra
|
||||
std::vector<SWaypointLink> mLinks;
|
||||
|
||||
public:
|
||||
explicit CWaypointExtra(CScriptObject *pInstance, CScene *pScene, CSceneNode *pParent = 0);
|
||||
explicit CWaypointExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent = 0);
|
||||
~CWaypointExtra();
|
||||
void CheckColor();
|
||||
void AddToSplinePath(CSplinePathExtra *pPath);
|
||||
|
||||
Reference in New Issue
Block a user