PrimeWorldEditor/src/Core/ScriptExtra/CDamageableTriggerExtra.h

51 lines
1.5 KiB
C++

#ifndef CDAMAGEABLETRIGGEREXTRA_H
#define CDAMAGEABLETRIGGEREXTRA_H
#include "CScriptExtra.h"
class CDamageableTriggerExtra : public CScriptExtra
{
// Render fluid planes for doors in MP1
enum ERenderSide
{
eNoRender = 0x0,
eNorth = 0x1,
eSouth = 0x2,
eWest = 0x4,
eEast = 0x8,
eUp = 0x10,
eDown = 0x20
};
TVector3Property *mpSizeProp;
TEnumProperty *mpRenderSideProp;
TAssetProperty *mpTextureProps[3];
CVector3f mPlaneSize;
ERenderSide mRenderSide;
TResPtr<CTexture> mpTextures[3];
CMaterial *mpMat;
CVector2f mCoordScale;
float mCachedRayDistance;
public:
explicit CDamageableTriggerExtra(CScriptObject *pInstance, CScene *pScene, CScriptNode *pParent = 0);
~CDamageableTriggerExtra();
void CreateMaterial();
void UpdatePlaneTransform();
ERenderSide RenderSideForDirection(const CVector3f& rkDir);
ERenderSide TransformRenderSide(ERenderSide Side);
void OnTransformed();
void PropertyModified(IProperty *pProperty);
bool ShouldDrawNormalAssets();
void AddToRenderer(CRenderer *pRenderer, const SViewInfo& rkViewInfo);
void Draw(FRenderOptions Options, int ComponentIndex, ERenderCommand Command, const SViewInfo& rkViewInfo);
void DrawSelection();
void RayAABoxIntersectTest(CRayCollisionTester& rTester, const SViewInfo& rkViewInfo);
SRayIntersection RayNodeIntersectTest(const CRay& rkRay, u32 ComponentIndex, const SViewInfo& rkViewInfo);
};
#endif // CDAMAGEABLETRIGGEREXTRA_H