00001 #ifndef COM_M4NKIND_Object3DText_H
00002 #define COM_M4NKIND_Object3DText_H
00003
00004 #include "Object3DVirtual.h"
00005 #include "PackObjectReference.h"
00006 #include "PackULong_Flags.h"
00007 #include "PackFloatByte_Limits.h"
00008 #include "PackList.h"
00009 #include "PackDynamicFloat.h"
00010
00011
00012
00013
00014
00015
00016
00017 class Object3DText : public Object3DVirtual
00018 {
00019
00020
00021
00022 public:
00023
00024
00025
00026 Object3DText(void);
00027
00028
00029
00030
00031 BASEOBJECT_DEFINE_CLASS(Object3DText);
00032 #ifdef _ENGINE_EDITABLE_
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 virtual void ProcessPreview(double _frameDate,VirtualMachine::InternalViewPort *_pPreviewViewPort,const PreviewConfiguration *_pPreviewConfiguration);
00043 #endif
00044
00045
00046
00047
00048
00049
00050
00051
00052 virtual void RenderObject( double _frameDate,
00053 VirtualMachine::InternalViewPort *_pViewPort,
00054 const float _rgba[4],
00055 unsigned int _shapeIndex=0,
00056 ShapeModifierList *_pModifierList=0L );
00057
00058
00059
00060 protected:
00061 enum {
00062
00063 eFlag_OneLine=1,
00064
00065 eFlag_MoveWords=2,
00066
00067 eFlag_RandomOrder=4,
00068
00069
00070
00071
00072 };
00073
00074 PackULong_Flags mSer_Flags;
00075
00076 PackObjectReference mSer_AlphabetRef;
00077
00078 PackObjectReference mSer_TextRef;
00079
00080 PackFloatByte_Limits mSer_InterSpace;
00081
00082 PackFloatByte_Limits mSer_SpaceWidth;
00083
00084 PackFloatByte_Limits mSer_HeightSpace;
00085
00086 PackFloatByte_Limits mSer_HeightScale;
00087
00088
00089 float m_HeightMax;
00090
00091 float m_WidthMax;
00092 typedef struct
00093 {
00094 float m_xx,m_yy,m_zz;
00095 float m_sx,m_sy,m_sz;
00096 float m_zrotate;
00097 float m_rgba[4];
00098 float m_TimeDelta;
00099 } LetterState ;
00100
00101
00102
00103
00104 class TextShadeComplex : public PackStruct
00105 { public:
00106
00107 TextShadeComplex();
00108 enum {
00109 bTSF_ShadeAlpha=1,
00110 bTSF_CharRelative=2,
00111 };
00112
00113 PackULong_Flags mSer_Flags;
00114 PackFloat mSer_BeginAt;
00115 PackFloat mSer_EndAt;
00116
00117 PackFloatByte_Limits mSer_OutGoingLetterRatio;
00118 PackDynamicFloat mSer_EquForPosition;
00119 PackDynamicFloat mSer_EquForRotation;
00120 PackDynamicFloat mSer_EquForScale;
00121 PackDynamicFloat mSer_EquForColor;
00122 };
00123
00124
00125
00126
00127 class PackDynamicTextShadeIn : public PackDynamicType
00128 { public:
00129
00130 PackDynamicTextShadeIn();
00131
00132 TextShadeComplex mSer_TextShade;
00133 void ComputeShadeIn(LetterState &_lstate,double _framedate);
00134
00135 protected:
00136 void ComputeShade(LetterState &_lstate,double _framedate,float characterRate);
00137 };
00138
00139
00140
00141
00142 class PackDynamicTextShadeOut : public PackDynamicTextShadeIn
00143 { public:
00144
00145 PackDynamicTextShadeOut();
00146
00147 void ComputeShadeOut(LetterState &_lstate,double _framedate);
00148 };
00149
00150
00151
00152
00153 class PackDynamicTextShade : public PackDynamicType
00154 { public:
00155
00156 };
00157
00158
00159
00160
00161
00162
00163
00164 PackDynamicTextShadeIn mSer_ShadeIn;
00165
00166 PackDynamicTextShadeOut mSer_ShadeOut;
00167
00168 PackDynamicTextShade mSer_Shade;
00169
00170
00171
00172
00173
00174 virtual bool CreateInternal(void);
00175
00176 #ifdef _ENGINE_EDITABLE_
00177
00178
00179
00180 virtual void CloseInternal(void);
00181 #endif
00182
00183
00184
00185 class CharacterBase {
00186 public:
00187
00188 unsigned int m_ShapeIndex;
00189
00190 float m_xx;
00191 float m_yy;
00192 float m_zz;
00193
00194 float m_sx;
00195 float m_sy;
00196 float m_sz;
00197
00198 float m_TimeDelta;
00199 };
00200
00201 CharacterBase *m_pCharacterBase;
00202
00203 unsigned int m_CharacterUsed;
00204
00205 };
00206
00207 #endif