mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-03-18 20:00:56 +00:00
Adds gui3DProjectionCtrl so a gui control can be tracked to a point in 3d space
This commit is contained in:
parent
775ca57047
commit
0760f35da0
2 changed files with 375 additions and 0 deletions
77
Engine/source/gui/controls/gui3DProjectionCtrl.h
Normal file
77
Engine/source/gui/controls/gui3DProjectionCtrl.h
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Gui3DProjectionCtrl
|
||||
// Doppelganger Inc
|
||||
// Orion Elenzil 200701
|
||||
//
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef _GUI3DPROJECTIONCTRL_H_
|
||||
#define _GUI3DPROJECTIONCTRL_H_
|
||||
|
||||
#include "gui/core/guiTypes.h"
|
||||
#include "gui/core/guiControl.h"
|
||||
#include "gui/3d/guiTSControl.h"
|
||||
#include "scene/sceneObject.h"
|
||||
#include "T3D/player.h"
|
||||
|
||||
class Gui3DProjectionCtrl : public GuiControl
|
||||
{
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// stock stuff
|
||||
public:
|
||||
Gui3DProjectionCtrl();
|
||||
typedef GuiControl Parent;
|
||||
|
||||
DECLARE_CONOBJECT(Gui3DProjectionCtrl);
|
||||
|
||||
static void initPersistFields ();
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// more interesting stuff
|
||||
|
||||
GuiTSCtrl* mTSCtrl; /// must be a child of one of these.
|
||||
SimObjectPtr<SceneObject> mAttachedTo; /// optional object we're attached to.
|
||||
SimObjectPtr<Player> mAttachedToPlayer; /// same pointer as mAttachedTo, but conveniently casted to player.
|
||||
|
||||
Point3F mPtWorld; /// the worldspace point which we're projecting
|
||||
Point2I mPtProj; /// the screenspace projected point. - note there are further modifiers before
|
||||
Point2I mPtScreen;
|
||||
|
||||
Point3F mOffsetObject; /// object-space offset applied first to the attached point to obtain mPtWorld.
|
||||
Point3F mOffsetWorld; /// world-space offset applied second to the attached point to obtain mPtWorld.
|
||||
Point2I mOffsetScreen; /// screen-space offset applied to mPtProj. note we still have centering, etc.
|
||||
|
||||
enum alignment
|
||||
{
|
||||
min = 0,
|
||||
center = 1,
|
||||
max = 2
|
||||
};
|
||||
|
||||
alignment mHAlign; /// horizontal alignment
|
||||
alignment mVAlign; /// horizontal alignment
|
||||
|
||||
bool mAutoDelete; /// optionally self-delete when mAttachedTo is deleted.
|
||||
Point2I mUseEyePoint; /// optionally use the eye point. x != 0 -> horiz. y != 0 -> vert.
|
||||
|
||||
|
||||
virtual void onRender (Point2I offset, const RectI &updateRect);
|
||||
virtual void resizeDuringRender ();
|
||||
|
||||
virtual bool onWake ();
|
||||
virtual void onSleep ();
|
||||
virtual void onDeleteNotify (SimObject *object);
|
||||
|
||||
void doPositioning ();
|
||||
void doProjection ();
|
||||
void doAlignment ();
|
||||
|
||||
void setAttachedTo (SceneObject* obj);
|
||||
SceneObject* getAttachedTo () { return mAttachedTo; }
|
||||
void setWorldPt (Point3F& pt) { mPtWorld = pt; }
|
||||
Point3F getWorldPt () { return mPtWorld; }
|
||||
};
|
||||
|
||||
#endif //_GUI3DPROJECTIONCTRL_H_
|
||||
Loading…
Add table
Add a link
Reference in a new issue