mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-13 03:33:48 +00:00
Adds a notes object that only displays in the editor, useful for when working on maps.
This commit is contained in:
parent
fb7ae70676
commit
4ffe6d2bb7
5 changed files with 304 additions and 0 deletions
103
Engine/source/T3D/notesObject.h
Normal file
103
Engine/source/T3D/notesObject.h
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
#pragma once
|
||||
|
||||
#ifndef _SCENEOBJECT_H_
|
||||
#include "scene/sceneObject.h"
|
||||
#endif
|
||||
#ifndef _GFXSTATEBLOCK_H_
|
||||
#include "gfx/gfxStateBlock.h"
|
||||
#endif
|
||||
#ifndef _GFXVERTEXBUFFER_H_
|
||||
#include "gfx/gfxVertexBuffer.h"
|
||||
#endif
|
||||
#ifndef _GFXPRIMITIVEBUFFER_H_
|
||||
#include "gfx/gfxPrimitiveBuffer.h"
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// This class implements a basic SceneObject that can exist in the world at a
|
||||
// 3D position and render itself. Note that NotesObject handles its own
|
||||
// rendering by submitting itself as an ObjectRenderInst (see
|
||||
// renderInstance\renderPassmanager.h) along with a delegate for its render()
|
||||
// function. However, the preffered rendering method in the engine is to submit
|
||||
// a MeshRenderInst along with a Material, vertex buffer, primitive buffer, and
|
||||
// transform and allow the RenderMeshMgr handle the actual rendering. You can
|
||||
// see this implemented in RenderMeshExample.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class NotesObject : public SceneObject
|
||||
{
|
||||
typedef SceneObject Parent;
|
||||
|
||||
String mNote;
|
||||
bool mShowArrow;
|
||||
F32 mArrowLength;
|
||||
F32 mArrowRadius;
|
||||
|
||||
LinearColorF mArrowColor;
|
||||
|
||||
// Networking masks
|
||||
// We need to implement at least one of these to allow
|
||||
// the client version of the object to receive updates
|
||||
// from the server version (like if it has been moved
|
||||
// or edited)
|
||||
enum MaskBits
|
||||
{
|
||||
TransformMask = Parent::NextFreeMask << 0,
|
||||
NextFreeMask = Parent::NextFreeMask << 1
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Rendering variables
|
||||
//--------------------------------------------------------------------------
|
||||
// Define our vertex format here so we don't have to
|
||||
// change it in multiple spots later
|
||||
typedef GFXVertexPCN VertexType;
|
||||
|
||||
// The handles for our StateBlocks
|
||||
GFXStateBlockRef mNormalSB;
|
||||
GFXStateBlockRef mReflectSB;
|
||||
|
||||
// The GFX vertex and primitive buffers
|
||||
GFXVertexBufferHandle< VertexType > mVertexBuffer;
|
||||
|
||||
public:
|
||||
NotesObject();
|
||||
virtual ~NotesObject();
|
||||
|
||||
// Declare this object as a ConsoleObject so that we can
|
||||
// instantiate it into the world and network it
|
||||
DECLARE_CONOBJECT(NotesObject);
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Object Editing
|
||||
// Since there is always a server and a client object in Torque and we
|
||||
// actually edit the server object we need to implement some basic
|
||||
// networking functions
|
||||
//--------------------------------------------------------------------------
|
||||
// Set up any fields that we want to be editable (like position)
|
||||
static void initPersistFields();
|
||||
|
||||
void inspectPostApply();
|
||||
|
||||
// Handle when we are added to the scene and removed from the scene
|
||||
bool onAdd();
|
||||
void onRemove();
|
||||
|
||||
// Override this so that we can dirty the network flag when it is called
|
||||
void setTransform(const MatrixF& mat);
|
||||
|
||||
// This function handles sending the relevant data from the server
|
||||
// object to the client object
|
||||
U32 packUpdate(NetConnection* conn, U32 mask, BitStream* stream);
|
||||
// This function handles receiving relevant data from the server
|
||||
// object and applying it to the client object
|
||||
void unpackUpdate(NetConnection* conn, BitStream* stream);
|
||||
|
||||
// This is the function that allows this object to submit itself for rendering
|
||||
void prepRenderImage(SceneRenderState* state);
|
||||
|
||||
void _render(ObjectRenderInst* ri, SceneRenderState* state, BaseMatInstance* overrideMat);
|
||||
|
||||
String getNote() { return mNote; }
|
||||
bool showArrow() { return mShowArrow; }
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue