aboutsummaryrefslogtreecommitdiff
path: root/doc/SMELTdoc
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2018-02-06 00:00:23 +0800
committerGravatar Chris Xiong <chirs241097@gmail.com> 2018-02-06 00:00:23 +0800
commitdc2ec44f4c1ee977c0a911d6c343e15a9729e4e7 (patch)
tree50efe57b645e37f9df1690957ef2e16133aeedee /doc/SMELTdoc
parentc741895e45968b50114a1b6ec0307503bce59783 (diff)
downloadSMELT-dc2ec44f4c1ee977c0a911d6c343e15a9729e4e7.tar.xz
Remove nonsense.
Documentation work in progress.
Diffstat (limited to 'doc/SMELTdoc')
-rw-r--r--doc/SMELTdoc873
1 files changed, 0 insertions, 873 deletions
diff --git a/doc/SMELTdoc b/doc/SMELTdoc
deleted file mode 100644
index 3c5699d..0000000
--- a/doc/SMELTdoc
+++ /dev/null
@@ -1,873 +0,0 @@
-A simple SMELT documentation for SMELT developers (myself) ...
-API Level 3
-
-Types==========================================================================
-DWORD: ranged 0~4294967296 (32 bit unsigned int)
-WORD: ranged 0~65536 (16 bit unsigned int)
-BYTE: ranged 0~256 (8 bit unsigned int)
-smHook: bool() call backs
-SMCHN: Channel handle. Generated when a effect was played.
-SMSFX: Sound FX handle.
-SMTEX: Texture handle.
-SMTRG: Render Target handle. Targets provide render to texture support.
-
-Macros=========================================================================
-ARGB(a,r,g,b): Generates a hardware color with the specificed values.
-RGBA(r,g,b,a): Same as ARGB, with different parameter order.
-GET<A|R|G|B>(col): Extract alpha/red/green/blue value from a hardware color.
-SET<A|R|G|B>(col,a|r|g|b): Set alpha/red/green/blue value of a hardware color.
-
-PI: 3.14159265358979323846f
-
-BLEND_ALPHAADD/BLEND_ALPHABLEND: Alpha blending methods.
-BLEND_COLORADD/BLEND_COLORMUL/BLEND_COLORINV: Color blending methods.
-BLEND_ZWRITE/BLEND_NOZWRITE: Depth blending methods.
-The BLEND_* macros of the different types can be or'd together.
-
-FPS_FREE/FPS_VSYNC: Special fps values.
-
-INPUT_*: Input event types.
-
-PRIM_*: Primitive types.
-
-SMELT_APILEVEL: SMELT api version.
-
-SMINP_*: Key modifiers. They can be or'd together.
-SMKST_*: Key states.
-SMK_*: Keys.
-
-TPOT_*, TFLT_*: Texture Options.
-
-Sturctures=====================================================================
-smInpEvent: Input event structure.
--chcode: Char code.
--sccode: Key scan code.
--type: Input event type. The macros INPUT_* are used.
--flag: Modifiers. The macros SMINP_* are used.
--wheel: Wheel motion.
--x,y: Mouse position.
-
-smVertex: Vertex structure.
--x,y,z: Position. Z can be used for depth testing in 2D mode.
--col: Vertex color.
--tx,ty: Texture coordinates.
-
-smTriangle: Triangle primitive structure.
--v[3]: Vertexes of the triangle.
--tex: Texture of the triangle.
--blend: Blend mode of the triangle. The macros BLEND_* are used.
-
-smQuad: Quadrilateral primitive structure.
--v[4]: Vertexes of the quadrilateral.
--tex: Texture of the quadrilateral.
--blend: Blend mode of the quadrilateral. The macros BLEND_* are used.
-WARNING: Quadrilaterals are treated as two triangles internally.
-You may get unwanted results if the quadrilateral is not a parallelogram.
-
-smTexRect: Texture rectangle sturcture.
--x,y: Top left coordinate of the texture used.
--w,h: Width & height of the texture used.
-
-Exposed function===============================================================
-SMELT* smGetInterface(int apilevel)
-Returns an interface to the SMELT core functions if the apilevel matches the
-internal one, otherwise it returns NULL.
-
-Packaged SMELT core functions==================================================
-All these functions are packaged in the class "SMELT".
-
-void smRelease() [core]
-Release one reference to the SMELT core. Once all references are released,
-the core will commit suicide and all resources used by it will be freed.
-
-bool smInit() [core]
-Initialize the SMELT interface, including the OpenGL/Direct3D interfaces, the
-OpenAL interfaces and the input interfaces. Functions from these interfaces
-won't function until smInit() is called. The application window will also
-be created.
-If the interfaces are initialized successfully, this function returns true,
-otherwise it returns false. The errors are written to stderr and the log file
-if set.
-
-void smFinale() [core]
-Deinitialize the SMELT interface. This function closes the application window
-and frees all resources managed by SMELT.
-
-void smMainLoop() [core]
-Starts the main loop, which calls UpdateFunc/FocFunc/UnFocFunc/QuitFunc at
-proper occasion.
-This function requires the UpdateFunc set and the initialization of the SMELT
-interface.
-
-void smUpdateFunc(smHook func) [core]
-void smUpdateFunc(smHandler* h) [core]
-Sets the update function.
-The update function returns bool and takes no parameters.
-If the update function returns true, the main loop will break, otherwise
-the main loop runs perpetually.
-The update function is called every frame.
-If both the handler and the hook are set, the hook will be executed first.
-
-void smUnFocFunc(smHook func) [core]
-void smUnFocFunc(smHandler* h) [core]
-Sets the unfocus event handler.
-The unfocus function is called when the application window loses focus.
-If both the handler and the hook are set, the hook will be executed first.
-
-void smFocFunc(smHook func) [core]
-void smFocFunc(smHandler* h) [core]
-Sets the focus event handler.
-The focus functions is called when the application window gains focus.
-If both the handler and the hook are set, the hook will be executed first.
-
-void smQuitFunc(smHook func) [core]
-void smQuitFunc(smHandler* h) [core]
-Sets the quit event handler.
-Called when the user send a quit request to the application (e.g. by pressing
-the close button).
-If the handler/hook returns true, the quit request will be rejected and the
-application will keep running.
-
-void smWinTitle(const char* title) [core]
-Sets the application window title.
-The default title is "untitled".
-
-bool smIsActive() [core]
-Returns true if the application window has focus.
-
-void smNoSuspend(bool para) [core]
-By default, the update function won't be called when the application
-window doesn't have focus (para=false).
-Call this with para=true to make SMELT behave differently.
-
-void smVidMode(int resX,int resY,bool _windowed) [core]
-Sets the application video mode.
-The default mode is 800 x 600 fullscreen.
-Inappropriate values may cause the failure of smInit().
-In addition, only the _windowed parameter can be changed on-the-fly.
-
-void smLogFile(const char* path) [core]
-Sets the log file path.
-
-void smLog(const char* format,...) [core]
-Write something to the log file.
-The C-style formatting can be used.
-The log will be written to stderr and the log file if set.
-
-void smScreenShot(const char* path) [core]
-Takes a shot of the application window content and saves it to the
-given path.
-
-
-void smSetFPS(int fps) [core/FPS]
-Sets the desired FPS value.
-The macros FPS_* can be used.
-
-float smGetFPS() [core/FPS]
-Gets the current FPS value.
-The current FPS value is updated every second.
-
-float smGetDelta() [core/FPS]
-Gets the delta time between the current frame and the last frame.
-
-float smGetTime() [core/FPS]
-Gets the time in milliseconds since the call to smInit().
-
-SMSFX smSFXLoad(const char *path) [core/SFX]
-Loads a sound file from the given path. Only ogg and wav files are supported.
-Further more, due to the restrictions of OpenAL, only 8/16bit mono/stereo formats
-are supported.
-
-SMSFX smSFXLoadFromMemory(const char *ptr,DWORD size) [core/SFX]
-Loads a sound file from the given memory block. Limitations are the same to that
-of smSFXLoad.
-
-SMCHN smSFXPlay(SMSFX fx,int vol=100,int pan=0,float pitch=1.,bool loop=0)
-[core/SFX]
-Plays the given SFX. All parameters except the fx handle is optional.
-A channel is generated and can be used to control the playing of the SFX.
-The channel is valid until it stops.
-Volume should be 0~100.
-Panning should be -100~100.
-The values will be clamped to the range given above.
-
-float smSFXGetLengthf(SMSFX fx) [core/SFX]
-Gets the sound length in seconds.
-
-DWORD smSFXGetLengthd(SMSFX fx) [core/SFX]
-Gets the sound length in samples.
-
-void smSFXSetLoopPoint(SMSFX fx,DWORD l,DWORD r) [core/SFX]
-Sets the loop point of a SFX. The loop points will be used when the fx is
-played with loop=true.
-The loop points are expressed in samples.
-By default, the whole SFX is looped.
-This function uses AL_SOFT_loop_points and may not work if SMELT isn't built
-against OpenAl Soft.
-
-void smSFXFree(SMSFX fx) [core/SFX]
-Releases the sound file from memory.
-The handle will be invalid thereafter.
-
-void smChannelVol(SMCHN chn,int vol) [core/SFX]
-Sets channel volume (0~100).
-
-void smChannelPan(SMCHN chn,int pan) [core/SFX]
-Sets channel panning (-100~100).
-
-void smChannelPitch(SMCHN chn,float pitch) [core/SFX]
-Sets channel pitch.
-
-void smChannelPause(SMCHN chn) [core/SFX]
-Pauses the channel.
-
-void smChannelResume(SMCHN chn) [core/SFX]
-Resumes the paused channel.
-
-void smChannelStop(SMCHN chn) [core/SFX]
-Stops the channel. The channel handle will be invalid thereafter.
-
-void smChannelPauseAll() [core/SFX]
-Pauses all playing channels.
-
-void smChannelResumeAll() [core/SFX]
-Resumes all channels.
-
-void smChannelStopAll() [core/SFX]
-Stops all channels.
-
-bool smChannelIsPlaying(SMCHN chn) [core/SFX]
-Tests if a channel is playing.
-
-float smChannelGetPosf(SMCHN chn) [core/SFX]
-Gets current position in second.
-
-void smChannelSetPosf(SMCHN chn,float pos) [core/SFX]
-Sets current position in second.
-
-int smChannelGetPosd(SMCHN chn) [core/SFX]
-Gets current position in sample.
-
-void smChannelSetPosd(SMCHN chn,int pos) [core/SFX]
-Sets current position in sample.
-
-void smGetMouse2f(float *x,float *y) [core/input]
-Gets mouse position (within the window).
-
-void smSetMouse2f(float x,float y) [core/input]
-Sets mouse position (within the window).
-
-void smSetMouseGrab(bool enabled) [core/input]
-Enables or disables mouse grabbing.
-Useful for 3D camera control handling.
-
-int smGetWheel() [core/input]
-Gets mouse wheel motion since the last frame.
-
-bool smIsMouseOver() [core/input]
-Tests if the cursor is inside the application window.
-
-int smGetKeyState(int key) [core/input]
-Gets the state of the given key. The SMK_* macros can be used.
-Mouse buttons are treated as keys.
-The return values are one of the SMKST_* macros.
-
-SMKST_NONE: the key is not pressed and is not just released either.
-SMKST_RELEASE: the key is not pressed but is just released.
-SMKST_HIT: the key is pressed but it was not pressed in the last frame.
-SMKST_KEEP: the key is pressed and held since the last frame or earlier.
-
-int smGetKey() [core/input]
-Gets the key pressed last frame.
-If multiple keys are pressed, the last pressed one counts.
-
-bool smGetInpEvent(smInpEvent *e) [core/input]
-Gets a event from the input queue.
-The input parameter will be set to point the event.
-If there are no events in the input queue, this function will return false.
-
-bool smRenderBegin2D(bool ztest=0,SMTRG trg=0) [core/GFX]
-Starts rendering a 2D scene.
-Set ztest to true if you want to use the z coordinate to control overlapping.
-Set trg to the desired rendering target to render everything to the target.
-The function resets the camera. You should setup the camera every frame.
-NOTE: Any rendering function is not functional outside the smRenderBegin*D
-function and its corresponding smRenderEnd function.
-
-bool smRenderBegin3D(float fov,SMTRG trg=0) [core/GFX]
-Starts rendering a 3D scene.
-Ztest is forced on in 3D mode.
-Set trg to the desired rendering target to render everything to the target.
-The projection matrix always has the near clipping value 0.1 and the far
-clipping value 1000.
-The function resets the camera. You should setup the camera every frame.
-NOTE: Any rendering function is not functional outside the smRenderBegin*D
-function and its corresponding smRenderEnd function.
-
-bool smRenderEnd() [core/GFX]
-Ends rendering the scene.
-NOTE: Any rendering function is not functional outside the smRenderBegin*D
-function and its corresponding smRenderEnd function.
-
-void sm3DCamera6f2v(float *pos,float *rot) [core/GFX/Rendering]
-Sets the 3D camera position and panning.
-Each float vector should countain three elements.
-The panning is Euler rotation (all in degrees).
-If any of the vectors is NULL, the function will reset the camera.
-The behaviour of the function is undefined in a 2D rendering session.
-
-void sm2DCamera5f3v(float *pos,float *dpos,float *rot) [core/GFX/Rendering]
-Sets the 2D camera transformation.
-pos should contain two elements describing the camera position.
-dpos should countain two elements describing the rotation centre.
-rot is the pointer to a single float describing the rotation (in degrees).
-If any of the vectors is NULL, the function will reset the camera.
-The behaviour of the function is undefined in a 3D rendering session.
-
-void smMultViewMatrix(float *mat) [core/GFX/Rendering]
-Provides direct manipulation on the view matrix. You can use "look at" matrix
-here, for example.
-The matrix the same as the matrix defined in smMatrix, but stored in float.
-(That's fairly stupid...)
-
-void smClrscr(DWORD color,bool clearcol=true,bool cleardep=true) [core/GFX/Rendering]
-Clears the screen/rendering target with color.
-Alpha channel is not applicable to the back buffer.
-Depth buffer will only be cleared if cleardep is set to true.
-The same applies to the color buffer.
-
-void smRenderLinefd(float x1,float y1,float z1,float x2,float y2,float z2,DWORD
-color) [core/GFX/Rendering]
-Renders a line from (x1,y1,z1) to (x2,y2,z2) in the given color.
-Lines have no textures.
-
-void smRenderLinefvd(float *p1,float *p2,DWORD color) [core/GFX/Rendering]
-Renders a line from (p1[0],p1[1],p1[2]) to (p2[0],p2[1],p2[2]) in the given color.
-
-void smRenderTriangle(smTriangle *t) [core/GFX/Rendering]
-Renders a triangle.
-
-void smRenderQuad(smQuad *q) [core/GFX/Rendering]
-Renders a quadrilateral.
-
-smVertex* smGetVertArray() [core/GFX/Rendering]
-Return a pointer to the internal vertex array for advanced batching.
-The vertex array is rendered and cleared in this function. So you will always
-get a full vertex array.
-By default, the size of the vertex array is 4000.
-
-void smDrawVertArray(int prim,SMTEX texture,int blend,int _primcnt)
-[core/GFX/Rendering]
-Draws the vertex array modified by advanced batching.
-
-SMTRG smTargetCreate(int w,int h,int ms=0) [core/GFX]
-Creates a rendering target (sized w*h) with multisampling level ms.
-Modern OpenGL supports non-power-of-two targets, however some of the D3D9
-hardwares doesn't.
-The target will be automatically resized, larger than the requested size, if
-the given size is not supported.
-Multisampling is disabled if ms=0. If multisampling is not supported, it
-will be disabled automatically.
-
-SMTEX smTargetTexture(SMTRG targ) [core/GFX]
-Gets the texture of the rendering target.
-
-void smTargetFree(SMTRG targ) [core/GFX]
-Frees the rendering target.
-
-SMTEX smTextureCreate(int w,int h) [core/GFX]
-Creates a blank texture (sized w*h).
-OpenGL version supports non-power-of-two textures, however some of the D3D9
-hardwares doesn't.
-The texture will be automatically resized, larger than the requested size, if
-it is not supported.
-
-SMTEX smTextureLoad(const char *path,bool mipmap=false) [core/GFX]
-Loads texture from the given file.
-OpenGL version supports non-power-of-two textures, however some of the D3D9
-hardwares doesn't.
-The texture will be automatically resized, larger than the requested size, if
-it is not supported.
-mipmapping doesn't work in OpenGL versions.
-
-SMTEX smTextureLoadFromMemory(const char *ptr,DWORD size,bool mipmap=false)
-[core/GFX]
-Loads texture from the given memory block.
-OpenGL version supports non-power-of-two textures, however some of the D3D9
-hardwares doesn't.
-The texture will be automatically resized, larger than the requested size, if
-it is not supported.
-mipmapping doesn't work in OpenGL versions.
-
-void smTextureFree(SMTEX tex) [core/GFX]
-Release the texture from memory.
-
-void smTextureOpt(int potopt=TPOT_NONPOT,int filter=TFLT_LINEAR) [core/GFX]
-Sets texture options.
-TPOT_POT: textures dimensions are resized to the minimal power of two value.
-TPOT_NONPOT: use textures whose dimensions are not power of two directly.
-Please note that only power-of-two textures supports texture repeating.
-TFLT_LINEAR: use the linear filter for texture scaling.
-TFLT_NEAREST: use the nearest filter for texture scaling.
-
-int smTextureGetWidth(SMTEX tex,bool original=false) [core/GFX]
-Gets the width of the texture.
-If original==false and the texture is resized, the function will return the
-resized p-o-t width of the texture.
-Otherwise it returns the actual width of the texture file.
-
-int smTextureGetHeight(SMTEX tex,bool original=false) [core/GFX]
-Gets the height of the texture.
-If original==false and the texture is resized, the function will return the
-resized p-o-t height of the texture.
-Otherwise it returns the actual height of the texture file.
-
-DWORD* smTextureLock(SMTEX tex,int l,int t,int w,int h,bool ro=true) [core/GFX]
-Locks the texture for reading/writing.
-The locked area is defined as (l,t,w,h): left, top, width, height.
-if ro==true, the changes won't be written back to the video memory.
-Textures of rendering targets cannot be locked.
-
-void smTexutreUnlock(SMTEX tex) [core/GFX]
-Unlocks the texture so that it can be used for rendering.
-The changes will be commited to the video memory if ro==false when locking
-the texture.
-
-SMELT extensions===============================================================
-
-smAnimation====================================================================
-The extension provides texture management and animated entity support.
-
-Texture info class: smTexInfo
-smTexRect rect; Texture rectangle
-char *name,*path; name and internal path of the texture
-SMTEX tex; Texture handle
-
-Animation info class: smAnmInfo
-smTexInfo frames[256] Frames of the animation
-int framedur[256] Frame durations
-int mode loop mode: 0=noloop 1=loop 2=bidi loop
-int fc Frame count
-char* name Name of the animation
-
-Animation file class: smAnmFile
-For the format of the .anm file, please refer to the file datapackFormat.
--bool loadAnmFromMemory(char* ptr,DWORD size)
- Loads a .anm file from the given memory block.
- .anm file is always packaged in dtp files in practice so only the load from
- memory version is implemented.
- All textures are loaded into the video memory during the process, so make sure
- SMELT is initialized before calling this function.
--void close()
- Close the anm file, free all textures and do the cleanup.
--smTexInfo* getTextureInfo(const char* name)
- Gets the details of the texture with the given name.
--smAnmInfo* getAnimationInfo(const char* name)
- Gets the details of the animation with the given name.
-
-2D animated entity class: smAnimation2D
-smAnimation2D is derived from the smEntity2D class.
--Constructor from a smAnmInfo class
--void updateAnim(int f=1)
- Updates the animation with frame step f.
--void resetAnim()
- Resets the animation.
-
-3D animated entity class: smAnimation3D
-smAnimation3D is derived from the smEntity3D class.
--Constructor from a smAnmInfo class
--void updateAnim(int f=1)
- Updates the animation with frame step f.
--void resetAnim()
- Resets the animation.
-smBMFont=======================================================================
-The extension provides support of bitmap font rendering.
-Bitmap font used by SMELT is described in anm format, with a different meta
-file.
-
-Two classes are provided: smBMFont and smBMFontw. smBMFont accepts char stings
-and smBMFontw accepts wchar strings. Their interfaces are the same.
-
-smBMFontw uses std::map, so huge font files are discouraged.
-
-Public members of smBMFont(w):
--loadAnmFromMemory(char* ptr,DWORD size)
- Loads an anm file describing the font from the given memory block.
--close()
- Closes the anm file and frees any resources used by the class.
--render(float x,float y,float z,int align,float *rw,const char*/wchar_t* text)
- Render the given text at (x,y,z) with the given align.
- ailgns can be one of the macros ALIGN_LEFT/ALIGN_RIGHT/ALIGN_CENTER.
- if rw is not NULL, the width of the string will be returned to the pointer.
- '\n' is processed correctly. Other control characters are not processed and
- may not render correctly.
--printf(float x,float y,float z,int align,float *rw,const wchar_t* format,...)
- Render formated string at (x,y,z) with the given align.
- The parameters are the same as the render function.
--setColor(DWORD col)
- Sets the color for the next rendering.
--setBlend(int blend)
- Sets blending mode for the next rendering.
--setScale(int scale)
- Sets the font scaling.
-
-smColor========================================================================
-The extension implements two color classes: smColorRGBA and smColorHSVA.
-
-Public members of smColorRGBA:
--float r,g,b,a R/G/B/A components, ranged 0..1
--Default construction op Sets all components to zero
--Construction op from a hardware color
--Construction op from components
--Default destuction op
--void clamp() clamps all components to their range
--operator + - * color operations
--operator * / scalar operations
--void setHWColor(DWORD col) Sets the color accroding to the given
- hardware color
--DWORD getHWColor() Gets the hardware color. The color is
- automatically clamped.
-
-Public members of smColorHSVA:
--float h,s,v,a R/G/B/A components, ranged 0..1
--Default construction op Sets all components to zero
--Construction op from a hardware color
--Construction op from components
--Default destuction op
--void clamp() clamps all components to their range
--operator + - * color operations
--operator * / scalar operations
--void setHWColor(DWORD col) Sets the color accroding to the given
- hardware color
--DWORD getHWColor() Gets the hardware color. The color is
- automatically clamped.
-
-smDataPack=====================================================================
-The extension implements a data packaging method for increased integrity.
-smDtpFileR is used to read a dtp file, while smDtpFileW is used to create a
-dtp file.
-The format of the dtp file is described in the file datapackFormat.
-
-Public members of smDtpFileR:
--bool openDtp(const char* path)
- Opens a compressed dtp from the given path.
- Returns true on succeed, false on failure.
--bool openDtpFromMemory(char* ptr,DWORD size)
- Opens a uncompressed dtp from the memory block.
- Returns true on succeed, false on failure.
--void closeDtp()
- Close the opened dtp file. Release any internal allocated resources.
--char* getFirstFile()
- Returns the internal path of the first file in the dtp.
--char* getLastFile()
- Returns the internal path of the last file in the dtp.
--char* getNextFile(const char* path)
- Returns the internal path of the next file in the dtp.
--char* getPrevFile()
- Returns the internal path of the previous file in the dtp.
--char* getFilePtr(const char* path)
- Get the pointer to the file required.
- The file is loaded into memory during the process.
--void releaseFilePtr(const char* path)
- Release the file in the memory.
- Always free the file with this function.
--DWORD getFileSize(const char* path)
- Get the file size in bytes of the file required.
-
-Public members of smDtpFileW:
--bool addFile(const char* path,const char* realpath)
- Adds a file to the temporary dtp.
- path is used as the internal path, realpath is the path of the data
- to be packed.
--bool writeDtp(const char* path)
- Writes the temporary dtp to a file.
- The dtp file is compressed.
- The temporary dtp file is deleted after the process.
-
-A simple DaTaPack utility implementation is in the folder dtputil.
-smEntity=======================================================================
-The extension implements two entity classes for easy entity rendering.
-
-Public members of smEntity2D:
--Consturction op from texture and
- texture rectangle(SMTEX,float,float,float,float)
--Construction op from texture and
- texture rectangle(SMTEX,smTexRect)
--Construction op from another smEntity2D
--Destuction op
--void Render(float x,float y,float rot,float wsc,float hsc)
- Renders the entity at (x,y) with rotation rot (optional, in radians).
- wsc/hsc (optional) controls the scaling in width and height.
- if hsc is omitted, wsc is used as hsc. By default, wsc=1.
--void setTexutre(SMTex tex)
- Sets the texture of the entity.
--void setTextureRect4f(float _x,float _y,float _w,float _h)
- void setTextureRectv(smTextRect rect)
- Sets the area of texture used for rendering.
--void setColor(DWORD col,int v)
- Sets the color of the entity or one of the vertexes of the entity.
- If v is omitted or v is out of the range 0..3, all four vertexes are
- re-colored.
--void setZ(float z,int v)
- Sets the z value of the entity or one of the vertexes of the entity.
- If v is omitted or v is out of the range 0..3, all four vertexes are
- re-positioned.
--void setBlend(int blend)
- Sets the blend mode of the entity. The macros BLEND_* are used.
--void setCentre(float x,float y)
- Sets the centre of the entity. The centre is used as the rotation centre.
- When rendered, the centre is used to position the entity.
-
-//There's a pending overhaul of smEntity3D. Please ignore the section below.
-smEntity3D is almost the same as smEntity2D, except the lack of setZ function
-and some difference in the rendering methods. Further more, smEntity3D always
-writes to the Z buffer when rendered.
--void Render9f(float x,float y,float z,float ra,float rx,float ry,float rz,
- float wsc,float hsc)
- Renders the 3D entity at (x,y,z).
- The entity is rotated by the parameters (ra,rx,ry,rz), in which ra specifies
- the angle of rotation in radians and (rx,ry,rz) specify the rotation axis.
- The rotation parameters are optional. The vector (rx,ry,rz) is automatically
- normalized.
- wsc/hsc (optional) controls the scaling in width and height.
- if hsc is omitted, wsc is used as hsc. By default, wsc=1.
--void Renderfv(float* pos,float* rot,float* scale)
- Equivalent to Render9f(pos[0],pos[1],pos[2],rot[0],rot[1],rot[2],rot[3]
- scale[0],scale[1]).
-
-smGrid=========================================================================
-The extension implements a grid used for rendering distorted entity.
-Grid sample:
-+-----+-----+
-| | |
-| | |
-| | |
-+-----+-----+
-| | |
-| | |
-| | |
-+-----+-----+
-This is a simple 3*3 grid, undistorted. If we fit a texture onto it we will
-see a rectangle with that texture.
-Now we can distort it like this:
-+-----+-----+
- \ \ \
- \ \ \
- \ \ \
- +-----+-----+
- \ \ \
- \ \ \
- \ \ \
- +-----+-----+
-If we fit a texture onto this grid, we will see a parallelogram (probably
-glitched because it's only a 3*3 grid).
-The grid looks better when the resolution is higher.
-With this extension we can implement water/lens/wrapping effect and curved
-lasers easily.
-The indicatorCircular in the smIndicator extension is also implemented with
-smGrid.
-
-Public members of smGrid:
--Default construction op (int,int)
- This construction op requires the column&row count of the grid.
--Copy construction op(const smGrid &copy)
- Constructs a new smGrid copying the given one.
--Default destuction op.
--operator =
--void render(float x,float y)
- Renders the grid at (x,y). (x,y) is the top left coordinate.
--void clear(DWORD color)
- Resets the grid with the optional color.
--void setTexutre(SMTEX tex)
- Sets the texture of the grid.
--void setTextureRect4f(float _x,float _y,float _w,float _h)
- void setTextureRectv(smTexRect rect)
- Sets the texture region used by the grid.
--void setBlend(int blend)
- Sets the blend mode of the grid.
--void setColor(int c,int r,DWORD col)
- Sets the color of the node at row r column c.
- You can create interesting colorful effects with this.
--void setPos(int c,int r,float x,float y,float z,int ref)
- Sets the positioning of the node at row r column c.
- The z value is always directly set.
- The x/y values are set according the reference setting.
- Possible references are:
- GRID_REFNODE: reference point is the node position of a regular grid
- GRID_REFTOPLEFT: reference point is the top left corner of the grid
- GRID_REFCENTER: reference point is the centre of the grid
- GRID_REFCURRENT: reference point is the current position of the node
-
-smIndicator====================================================================
-The extension implements several value indicators.
-
-Public members of class indicatorCircular/indicatorLinear:
--void init(double r,double thkns,BYTE a,SMTEX tex,smTexRect tr)
- Initialize the indicator with radius r, thickness thkns.
- a is used as the initial alpha.
--void overrideColor(DWORD col)
- Overrides the default dynamic color with the static color.
--void setAlpha(BYTE a)
- Sets the indicator alpha
--void setValue(double v)
- Sets the value indicated by the indicator.
- The value should be within 0..1.
-
-smMath=========================================================================
-The extension provides several math routines.
-
-Common math routines:
-double smMath::deg2rad(double deg) converts degree to radian
-double smMath::rad2deg(double deg) converts radian to degree
-double smMath::clamprad(double a) clamps the given angle to [0,2*PI]
-double smMath::clampdeg(double a) clamps the given angle to [0,360]
-
-2D Vector: smvec2d
-double x,y coordinates
-Constructor(double,double) constructs the vector with the given
- coordinates
-Default constructor
-double l() returns the length of the vector
-void normalize() normalizes the vector
-smvec2d getNormalized() returns the normalized vector
-void swap() swaps the x,y coordinates
-void rotate(double rad) rotate the vector by rad radians
-smvec2d getRotate(double rad) returns the rotated vector
-smvec2d operator - +
-smvec2d/double operator * scalar/(length of) cross product
-double operator | point product
-double operator ^ angle between the vectors
-
-3D Vector: smvec3d
-double x,y,z coordinates
-Constructor(double,double,double) constructs the vector with the given
- coordinates
-Constructor(smvec2d) constructs the vector from the 2d
- vector with z=0
-Default constructor
-double l() returns the length of the vector
-void normalize() normalizes the vector
-smvec3d getNormalized() returns the normalized vector
-smvec3d operator - +
-smvec3d operator * scalar/cross product
-smvec3d operator | point product
-double operator ^ angle between the vectors
-
-Transformation matrix: smMatrix
-double m[16]
-sf 0 1 2 3
-0 00 04 08 12
-1 01 05 09 13
-2 02 06 10 14
-3 03 07 11 15
-Default constructor
-Copy constructor
-operator [] with this you can access the matrix
- like (smMatrix)a[col][row]
-void clear() sets the whole matrix to 0
-void loadIdentity() sets the matrix to the identity matrix
-void rotate(double,double,double,double)
- rotates the vector by (a,x,y,z) where
- a is the rotation angle in radians and
- (x,y,z) is the rotation axis.
-void lookat(double *eye,double *at,double *up)
- all vectors have three elements.
- This function produces a "look at"
- matrix.
- When the identity view matrix is
- multiplied by the "look at" matrix, it
- seems that you are at the "eye"
- position, looking at the "at" opsition.
- The up vector is used to determine the
- pitch of the camera.
-operator * Matrix-matrix multiplication.
-operator * Matrix-vector multiplication.
-smProgresser===================================================================
-The extension implements several progressers useful for making transitions.
-All progressers work in the same way: it returns a value within [a,b] according
-to the current progress.
-
-All progresser have these functions publicly accessible:
-void init(double _a,double _b,double _lim,[additional parameters])
-Initializes the progresser with a=_a, b=_b and maximum progress _lim.
-void launch()
-Launch the progresser. This function actually resets the progresser.
-void update(double delta)
-Updates the progress with delta value delta.
-bool isDone()
-Check if the progresser has completed its progress.
-double getValue()
-Gets the current progresser value.
-double getPercentage()
-Gets the current progress percentage(always linear).
-double getDelta()
-Gets the current delta between progresser value and a.
-double getElapsed()
-Gets the current elapsed progress.
-
-Currently two types of progressers are implemented.
--smProgresserLinear
-Normal linear progresser.
--smProgresserCurve
-Curve progresser. This progresser requires an additional parameter to
-Initialize, which is the radius of the curve. The bigger abs(curvepara) is,
-the steeper the progressing curve will be. If curvepara=0, it will act
-as the linear progresser. The sign of the parameter controls the bending
-direction of the curve.
-
-smRandom=======================================================================
-The extension implements a pseudo random number generator.
-Pseudo random number generator always generates the same sequence of number
-provided that the seed and the calling sequence is the same.
-
-Public members of smRandomEngine
-void setSeed(unsigned int seed)
-Sets the random seed. The seed affects the next number generated.
-int nextInt(int min,int max)
-Generate a random integer. The seed is updated too.
-Please note that max is not necessarily greater than min.
-double nextDouble(double min,double max)
-Generate a random double. The seed is updated too.
-Please note that max is not necessarily greater than min.
-smTTFont=======================================================================
-The extension implements a freetype interface for SMELT.
-Two classes are implemented: smTTChar and smTTFont. smTTChar is implemented for
-internal use and should not be used outside the smTTFont class. Class smTTFont
-provides all interfaces for font rendering.
-
-smTTFont uses std::map to cache character glyphs. The cache is manually managed
-by the application. A cache too large in size may cause lags.
-
-Public members of smTTFont:
--bool loadTTF(const char* path,int pt)
- Loads a font from the given path. pt is used as the size of the font in
- points.
--bool loadTTFFromMemory(char* ptr,DWORD size,int pt)
- Loads a font from the given memory block. pt is used as the size of the font
- in points.
--void releaseTTF()
- Clear the cache and release the loaded font.
--float getWidth()
--float getHeight()
- Gets the width/height of the buffered string.
- The buffered string is modified by the updateString function.
--void updateString(const wchar_t *format,...)
- Update the buffered string.
- Update the buffer only when you need to do so because this function is
- relatively slow.
- '\n' is processed correctly.
- If a char is in the internal cache, it will be reused. Otherwise it will be
- added to the cache.
--void render(float x,float y,DWORD col,int align)
- Renders the buffered string.
- The align mode ALIGN_CENTER is not supported.
- (x,y) defines the top-left coordinate of the rendered text when using
- ALIGN_LEFT while it defines the bottom-right coordinate when using
- ALIGN_RIGHT.
- col defines the color of the rendered text.
--DWORD getCacheSize()
- Gets the internal cache size.
- It is advised to keep the cache size relatively low, generally below
- 100 thousand.
--void clearCache()
- Clear the internal cache. \ No newline at end of file