2 #include "math/ParaRect.h" 3 #include "AssetEntity.h" 4 #include "IObjectScriptingInterface.h" 35 ATTRIBUTE_METHOD1(
CBufferPicking, GetPickingCount_s,
int*) { *p1 = cls->GetPickingCount();
return S_OK; }
36 ATTRIBUTE_METHOD1(
CBufferPicking, GetPickingID_s, DWORD*) { *p1 = cls->GetPickingID(-1);
return S_OK; }
37 ATTRIBUTE_METHOD1(
CBufferPicking, FetchPickingResult_s,
void**) { cls->FetchPickingResult((DWORD **)p1);
return S_OK; }
38 ATTRIBUTE_METHOD(
CBufferPicking, ClearPickingResult_s) { cls->ClearPickingResult();
return S_OK; }
39 ATTRIBUTE_METHOD(
CBufferPicking, CheckDoPick_s) { cls->CheckDoPick();
return S_OK; }
41 ATTRIBUTE_METHOD1(
CBufferPicking, GetPickLeftTop_s,
Vector2*) { *p1 = cls->GetPickLeftTop();
return S_OK; }
42 ATTRIBUTE_METHOD1(
CBufferPicking, SetPickLeftTop_s,
Vector2) { cls->SetPickLeftTop(p1);
return S_OK; }
44 ATTRIBUTE_METHOD1(
CBufferPicking, GetPickWidthHeight_s,
Vector2*) { *p1 = cls->GetPickWidthHeight();
return S_OK; }
45 ATTRIBUTE_METHOD1(
CBufferPicking, SetPickWidthHeight_s,
Vector2) { cls->SetPickWidthHeight(p1);
return S_OK; }
47 ATTRIBUTE_METHOD1(
CBufferPicking, IsResultDirty_s,
bool*) { *p1 = cls->IsResultDirty();
return S_OK; }
48 ATTRIBUTE_METHOD1(
CBufferPicking, SetResultDirty_s,
bool) { cls->SetResultDirty(p1);
return S_OK; }
50 ATTRIBUTE_METHOD1(
CBufferPicking, GetPickIndex_s,
int*) { *p1 = cls->GetPickIndex();
return S_OK; }
51 ATTRIBUTE_METHOD1(
CBufferPicking, SetPickIndex_s,
int) { cls->SetPickIndex(p1);
return S_OK; }
53 ATTRIBUTE_METHOD1(
CBufferPicking, GetViewport_s,
int*) { *p1 = cls->GetViewport();
return S_OK; }
54 ATTRIBUTE_METHOD1(
CBufferPicking, SetViewport_s,
int) { cls->SetViewport(p1);
return S_OK; }
57 virtual HRESULT InitDeviceObjects();
58 virtual HRESULT DeleteDeviceObjects();
65 DWORD
Pick(
int nX,
int nY,
int nViewportId = -1);
72 int Pick(
const QRect& region,
int nViewportId = -1);
91 void SetPickLeftTop(
const Vector2& vPos);
92 const Vector2& GetPickLeftTop();
93 void SetPickWidthHeight(
const Vector2& vPos);
94 const Vector2& GetPickWidthHeight();
96 int GetPickIndex()
const;
97 void SetPickIndex(
int val);
99 bool IsResultDirty()
const;
100 void SetResultDirty(
bool bDirty=
true);
103 int GetViewport()
const;
105 void SetViewport(
int val);
122 vector <DWORD> m_pickingResult;
126 int m_currentPickIndex;
150 void SetResultDirty();
an attribute class is a collection of attribute fields.
Definition: AttributeClass.h:10
all picking buffers There is a default one called BufferPickingManager::GetInstance().GetEntity("backbuffer"); which is the current backbuffer Some predefined picking object can be retrieved via NPL script using
Definition: BufferPicking.h:143
virtual IAttributeFields * GetChildAttributeObject(const std::string &sName)
get attribute by child object.
Definition: BufferPicking.cpp:204
DWORD GetPickingID(int nIndex=0)
get the picked item id of the given picking item.
Definition: BufferPicking.cpp:48
picking from frame buffer (back buffer) When there is picking query, it will render scene again (if o...
Definition: BufferPicking.h:16
a render target scene object.
Definition: RenderTarget.h:16
different physics engine has different winding order.
Definition: EventBinding.h:32
void ClearPickingResult()
clear last picking result
Definition: BufferPicking.cpp:30
void CheckDoPick(bool bForceUpdate=false)
do picking using current picking rectangle.
Definition: BufferPicking.cpp:124
void FetchPickingResult(DWORD **ppResult)
Definition: BufferPicking.cpp:56
when concerting QRect with QRectF and RECT, we ensure that their left, top and width, height are the same.
Definition: ParaRect.h:16
virtual int GetChildAttributeObjectCount(int nColumnIndex=0)
get the number of child objects (row count) in the given column.
Definition: BufferPicking.cpp:213
AssetManager manages a set of asset entities of a certain type.
Definition: AssetManager.h:13
Standard 2-dimensional vector.
Definition: ParaVector2.h:16
const vector< DWORD > & GetPickingResult()
return an array of unique picking id in the last pick call.
Definition: BufferPicking.h:75
A common interface for all classes implementing IAttributeFields By implementing this class's virtual...
Definition: IAttributeFields.h:59
DWORD Pick(int nX, int nY, int nViewportId=-1)
pick by a point in the viewport.
Definition: BufferPicking.cpp:140
std::string AssetKey
the unique key object for asset entity.
Definition: AssetEntity.h:13
virtual int InstallFields(CAttributeClass *pClass, bool bOverride)
this class should be implemented if one wants to add new attribute.
Definition: BufferPicking.cpp:393
virtual int GetChildAttributeColumnCount()
we support multi-dimensional child object.
Definition: BufferPicking.cpp:218
Base class for managed asset entity in ParaEngine.
Definition: AssetEntity.h:25
virtual CRenderTarget * CreateGetRenderTarget(bool bCreateIfNotExist=true)
a render target will be created with the same name as this object.
Definition: BufferPicking.cpp:237
int GetPickingCount()
return the number of objects picked.
Definition: BufferPicking.cpp:65