#include "sio2.h"

| void sio2ObjectAddSound | ( | SIO2object * | _SIO2object, | |
| SIO2soundbuffer * | _SIO2soundbuffer, | |||
| unsigned int | _flags | |||
| ) |
Create a new sound source and attach it to the current SIO2object. The sound source position will be updated if the _updatesoundsource parameter of the sio2ObjectRender function parameter is positive, in the case of an SIO2_SOUND_FX type.
_SIO2object: A valid SIO2object pointer.
_SIO2soundbuffer: A valid SIO2soundbuffer pointer.
_flags: The mask to use for the new SIO2sound. Check SIO2sound for more information.
References SIO2object::_SIO2sound, SIO2object::_SIO2transform, SIO2sound::flags, SIO2transform::loc, SIO2object::n_sound, SIO2object::name, SIO2_MAX_CHAR, SIO2_SOUND_AUTOPLAY, SIO2_SOUND_FX, sio2IsStateEnabled(), sio2SoundGenId(), sio2SoundInit(), sio2SoundPlay(), sio2SoundSetFx(), and SIO2object::snd_rad.
Referenced by sio2ObjectBindSound().

| void sio2ObjectBillboard | ( | SIO2object * | _SIO2object, | |
| vec3 * | _vec | |||
| ) |
Function that re-align the SIO2object rotation to face the camera. Please take note that the up vector of the camera is assumed to be on the positive Z axis. Meaning that the direction vector of the SIO2object will point on the positive Y axis in order to align the rotation appropriately.
_SIO2object: A valid SIO2object pointer.
_vec3: The position of the object in world space.
References SIO2object::_SIO2transform, SIO2object::flags, SIO2transform::loc, SIO2_OBJECT_HALO, sio2CrossProduct(), sio2DotProductToDeg(), sio2IsStateEnabled(), sio2Normalize(), vec3::x, vec3::y, and vec3::z.
Referenced by sio2ObjectRender().

| void sio2ObjectBindSound | ( | SIO2object * | _SIO2object | ) |
Helper function that loop through all the SIO2vertexgroup of an SIO2object analyze its material and determine if a SIO2soundbuffer is attached. If yes the function will automatically create a new sound source for the appropriate SIO2soundbuffer, and use the sound flags contained in the SIO2material to create the appropriate type of sound source.
_SIO2object: A valid SIO2object pointer.
References SIO2object::_SIO2instance, SIO2vertexgroup::_SIO2material, SIO2object::_SIO2sound, SIO2sound::_SIO2soundbuffer, SIO2material::_SIO2soundbuffer, SIO2object::_SIO2vertexgroup, SIO2object::n_sound, SIO2object::n_vgroup, SIO2material::sbname, SIO2material::sflags, SIO2_MATERIAL_MAX_SOUNDBUFFER, and sio2ObjectAddSound().
Referenced by sio2ResourceBindAllSounds().

| void sio2ObjectBindVBO | ( | SIO2object * | _SIO2object, | |
| unsigned char | _usematerial | |||
| ) |
Attach the appropriate VBO ID to the current OpenGL context for rendering.
_SIO2object: A valid SIO2object pointer.
_usematerial: Determine whether or not to use material(s) when rendering the SIO2object.
References SIO2::_SIO2state, SIO2state::flags, sio2, SIO2_BUFFER_OFFSET, SIO2_COLOR_ARRAY, SIO2_LIGHTING, SIO2_NORMAL_ARRAY, SIO2_OBJECT_NORMALS, SIO2_OBJECT_TEXUV0, SIO2_OBJECT_TEXUV1, SIO2_OBJECT_VCOLOR, SIO2_TEXTURE_COORD_ARRAY0, SIO2_TEXTURE_COORD_ARRAY1, sio2IsStateEnabled(), sio2StateDisable(), sio2StateEnable(), SIO2object::vbo, and SIO2object::vbo_offset.
Referenced by sio2ObjectRender().

| void sio2ObjectBuildEdges | ( | SIO2object * | _SIO2object | ) |
Build the edges information based on the vertex buffer and indices.
_SIO2object: A valid SIO2object pointer that have access to the SIO2object vertices and indices of itself or its instance.
References SIO2object::_SIO2edge, SIO2object::_SIO2vertexgroup, SIO2object::buf, SIO2edge::ind, SIO2vertexgroup::ind, SIO2object::n_edge, SIO2vertexgroup::n_ind, SIO2object::n_vgroup, SIO2edge::nor, sio2CrossProduct(), sio2Normalize(), sio2ObjectGetNumVert(), vec3::x, vec3::y, and vec3::z.

| unsigned char sio2ObjectCopyPhysicAttributes | ( | SIO2object * | _SIO2object0, | |
| SIO2object * | _SIO2object1 | |||
| ) |
Copy the physic attributes from the _SIO2object1 to _SIO2object0.
_SIO2object0: A valid SIO2object pointer that doesn't have physic attributes set or need an update.
_SIO2object1: A valid SIO2object pointer currently have physic attributes set.
return 1 or 0 depending if the physic attributes copy took place or not.
References SIO2object::_SIO2objectphysic, SIO2objectphysic::bounds, SIO2objectphysic::citeration, SIO2objectphysic::damp, SIO2objectphysic::linstiff, SIO2objectphysic::margin, SIO2objectphysic::mass, SIO2objectphysic::piteration, SIO2objectphysic::rotdamp, SIO2objectphysic::shapematch, and sio2ObjectInitPhysicAttributes().
Referenced by sio2ObjectSoftCopy().

| void sio2ObjectDisableObjectCollisionCallback | ( | SIO2object * | _SIO2object | ) |
Disable the SIO2object collision shape to receive custom material callbacks.
Check the Bullet documentation for more details.
_SIO2object: A valid SIO2object pointer.
References SIO2objectphysic::_btRigidBody, and SIO2object::_SIO2objectphysic.
Referenced by sio2SensorFree().
| void sio2ObjectEnableObjectCollisionCallback | ( | SIO2object * | _SIO2object | ) |
Enable the SIO2object collision shape to receive custom material callbacks.
Check the Bullet documentation for more details.
_SIO2object: A valid SIO2object pointer.
References SIO2objectphysic::_btRigidBody, and SIO2object::_SIO2objectphysic.
Referenced by sio2SensorInitContact().
| SIO2object* sio2ObjectFree | ( | SIO2object * | _SIO2object | ) |
Free a valid SIO2object pointer, and remove its handle from the global sio2 SIO2resource handle.
_SIO2object: A valid SIO2object pointer.
return a NULL SIO2object structure pointer.
References SIO2objectphysic::_btTriangleMesh, SIO2object::_SIO2edge, SIO2object::_SIO2objectanimation, SIO2object::_SIO2objectphysic, SIO2::_SIO2resource, SIO2object::_SIO2sound, SIO2object::_SIO2vertexgroup, SIO2object::buf, SIO2object::n_sound, SIO2object::n_vgroup, sio2, SIO2_OBJECT, sio2ResourceDel(), sio2SoundFree(), sio2VertexGroupFree(), and SIO2object::vbo.
Referenced by sio2ResourceUnload().

| void sio2ObjectGenId | ( | SIO2object * | _SIO2object | ) |
Generate a new VBO ID for the SIO2object. Please make sure that the SIO2object->buf pointer is loaded with the proper information in bytes. In addition, you also have to set the proper size of the VBO offset in SIO2object->vbo_offset.
_SIO2object: A valid SIO2object pointer.
References SIO2object::_SIO2vertexgroup, SIO2object::buf, SIO2object::flags, SIO2object::n_vgroup, SIO2_OBJECT_DYNAMIC_DRAW, SIO2_OBJECT_SIZE, sio2IsStateEnabled(), sio2ObjectUpdateType(), sio2VertexGroupGenId(), SIO2vertexgroup::vbo, SIO2object::vbo, and SIO2object::vbo_offset.
Referenced by sio2ResourceGenId().

| unsigned int sio2ObjectGetNumVert | ( | SIO2object * | _SIO2object | ) |
Get the number of vertices an object geometry contains.
_SIO2object: A valid SIO2object pointer.
return the number of vertices used in the SIO2object VBO.
References SIO2object::_SIO2instance, SIO2_OBJECT_NORMALS, SIO2_OBJECT_SIZE, SIO2_OBJECT_TEXUV0, SIO2_OBJECT_TEXUV1, SIO2_OBJECT_VCOLOR, and SIO2object::vbo_offset.
Referenced by sio2ObjectBuildEdges(), sio2ObjectNextAction(), sio2ObjectRenderAction(), sio2ObjectSetAction(), sio2ObjectSetFrame(), sio2PhysicAddRigidBody(), sio2PhysicAddSoftBody(), and sio2VertexGroupRender().
| SIO2object* sio2ObjectHardCopy | ( | SIO2object * | _SIO2object, | |
| char * | _name | |||
| ) |
Similar as sio2ObjectSoftCopy at the exception that this call will create a brand new SIO2object duplicating all the VBO information in memory. After duplication, you will have to call sio2ObjectGenID to generate a new VBO ID in order to make this new SIO2object functional inside your 3D world. If the new SIO2object have physic attributes your will have to call the sio2PhysicObjectAdd function to insert it inside your physic world.
Please take note that all vertices and indices will be duplicated, this call will basically create a totally new SIO2object in local memory and video memory. This is indeed an expensive call. Only use sio2ObjectHardCopy for animated SIO2object or when the SIO2object use soft body physic. For the rest of the cases, please use sio2ObjectSoftCopy as much as you can.
_SIO2object: A valid "master" SIO2object handle.
_name: The name of the new SIO2object.
return an SIO2object handle pointing to the new SIO2object created.
References SIO2object::_SIO2instance, SIO2vertexgroup::_SIO2material, SIO2object::_SIO2vertexgroup, SIO2object::buf, SIO2vertexgroup::ind, SIO2object::instname, SIO2vertexgroup::mname, SIO2vertexgroup::mode, SIO2vertexgroup::n_ind, SIO2object::n_vgroup, SIO2vertexgroup::name, SIO2_OBJECT_NVBO_OFFSET, SIO2_OBJECT_SIZE, sio2MapBuffer(), sio2ObjectSoftCopy(), sio2StringCpy(), sio2UnmapBuffer(), sio2VertexGroupInit(), SIO2vertexgroup::vbo, SIO2object::vbo, and SIO2object::vbo_offset.

| SIO2object* sio2ObjectInit | ( | char * | _name | ) |
Create a new SIO2object, this new SIO2object pointer will be added to the global sio2 SIO2resource handle.
_name: The name to use to associate the SIO2object within the SIO2resource.
return a new SIO2object structure pointer.
References SIO2::_SIO2resource, SIO2object::_SIO2transform, SIO2object::dst, SIO2object::name, sio2, SIO2_OBJECT, sio2ResourceAdd(), sio2StringCpy(), and sio2TransformLoadIdentity().
Referenced by sio2ObjectLoad(), and sio2ObjectSoftCopy().

| void sio2ObjectInitAnimationAttributes | ( | SIO2object * | _SIO2object | ) |
Initialize in memory the necessary attributes for the SIO2object to playback animation.
_SIO2object: A valid SIO2object pointer.
References SIO2object::_SIO2objectanimation.
| void sio2ObjectInitPhysicAttributes | ( | SIO2object * | _SIO2object | ) |
Initialize the necessary structure in memory to allow the SIO2object to use physic.
_SIO2object: A valid SIO2object pointer that doesn't currently have physic attributes set.
References SIO2object::_SIO2objectphysic, SIO2objectphysic::damp, and SIO2objectphysic::rotdamp.
Referenced by sio2ObjectCopyPhysicAttributes(), and sio2ObjectLoad().
Function callback used by the parser to parse an SIO2object file.
_root: The root token.
_tok: The current token to parse.
_val: The value of the token.
return 1 or 0 if the token have been found.
References SIO2::_SIO2object, SIO2object::_SIO2objectphysic, SIO2object::_SIO2transform, SIO2object::_SIO2vertexgroup, SIO2objectphysic::bounds, SIO2object::buf, SIO2objectphysic::citeration, SIO2objectphysic::damp, SIO2object::dim, SIO2object::flags, SIO2vertexgroup::ind, SIO2object::instname, SIO2object::iponame, SIO2objectphysic::linstiff, SIO2transform::loc, SIO2objectphysic::margin, SIO2objectphysic::mass, SIO2vertexgroup::mname, SIO2vertexgroup::mode, SIO2vertexgroup::n_ind, SIO2object::n_vgroup, SIO2objectphysic::piteration, SIO2object::rad, SIO2transform::rot, SIO2objectphysic::rotdamp, SIO2transform::scl, SIO2objectphysic::shapematch, sio2, SIO2_MAX_CHAR, SIO2_OBJECT_ACTOR, SIO2_OBJECT_GHOST, SIO2_OBJECT_NORMALS, SIO2_OBJECT_SIZE, SIO2_OBJECT_TEXUV0, SIO2_OBJECT_TEXUV1, SIO2_OBJECT_VCOLOR, sio2IsStateEnabled(), sio2ObjectInit(), sio2ObjectInitPhysicAttributes(), sio2StringCmp(), sio2StringScanf(), sio2VertexGroupInit(), SIO2object::snd_rad, SIO2object::vbo_offset, vec3::x, vec3::y, and vec3::z.
Referenced by sio2ResourceCreateDictionary().

| unsigned char sio2ObjectNextAction | ( | SIO2object * | _SIO2object, | |
| SIO2action * | _SIO2action, | |||
| float | _interp, | |||
| float | _fps | |||
| ) |
Force the current SIO2action running for the SIO2object to directly interpolate the current frame with the first frame of another SIO2action.
SIO2object: A valid SIO2object pointer.
SIO2action: A valid SIO2action pointer.
_interp: The interpolation time (in delta time) between and SIO2action loop or next action.
_fps: The frame per second that the SIO2action should playback.
return 1 or 0 depending if the SIO2action have been succesfully set.
References SIO2objectanimation::_SIO2action, SIO2action::_SIO2frame, SIO2objectanimation::_SIO2frame1, SIO2objectanimation::_SIO2frame2, SIO2object::_SIO2objectanimation, SIO2objectanimation::d_time, SIO2objectanimation::fps, SIO2objectanimation::interp, SIO2objectanimation::next_action, SIO2objectanimation::next_frame, SIO2action::s_frame, sio2ObjectGetNumVert(), sio2ObjectSetAction(), and SIO2objectanimation::t_ratio.

| void sio2ObjectPause | ( | SIO2object * | _SIO2object | ) |
Pause an SIO2action, previously bind to the SIO2object.
SIO2object: A valid SIO2object pointer.
References SIO2object::_SIO2objectanimation, SIO2_PAUSE, and SIO2objectanimation::state.
| void sio2ObjectPlay | ( | SIO2object * | _SIO2object, | |
| unsigned char | _loop | |||
| ) |
Play an SIO2action, previously bind to the SIO2object.
SIO2object: A valid SIO2object pointer.
_loop: Determine whether or not the SIO2action should loop when finished.
References SIO2objectanimation::_SIO2action, SIO2object::_SIO2objectanimation, SIO2objectanimation::loop, SIO2_PLAY, and SIO2objectanimation::state.
| unsigned char sio2ObjectRender | ( | SIO2object * | _SIO2object, | |
| SIO2window * | _SIO2window, | |||
| SIO2camera * | _SIO2camera, | |||
| unsigned char | _usematerial, | |||
| unsigned char | _matrixtype, | |||
| unsigned char | _updatesoundsource | |||
| ) |
Render a "visible" SIO2object. The visibility of the SIO2object is determined by the SIO2object->dst value (which much be greated than 0) or if the SIO2object->flags doesn't contain the SIO2_OBJECT_GHOST tags. Please take note that if the SIO2object is using physic, the SIO2object->_SIO2transform->mat matrix will be updated based on the value that Bullet is maintaining for the current SIO2object collision shape.
_SIO2object: A valid SIO2object pointer.
_SIO2window: Only used to gather the delta time of the current SIO2window rendering a valid OpenGL context.
_SIO2camera: Only used when the SIO2_OBJECT_BILLBOARD or SIO2_OBJECT_HALO tags are present in the SIO2object->flags.
_usematerial: A positive value will cause the rendering function to use materials.
_matrixtype: Determine what type of matrix should be used when rendering the SIO2object. Check SIO2transform for more information.
_updatesoundsource: Will force the render function to update all positional sound source attached to the SIO2object.
return 1 or 0 depending if the SIO2object have been rendered.
References SIO2objectphysic::_btRigidBody, SIO2objectphysic::_btSoftBody, SIO2objectanimation::_SIO2action, SIO2object::_SIO2instance, SIO2object::_SIO2ipo, SIO2::_SIO2object, SIO2object::_SIO2objectanimation, SIO2object::_SIO2objectphysic, SIO2object::_SIO2sound, SIO2camera::_SIO2transform, SIO2ipo::_SIO2transform, SIO2object::_SIO2transform, SIO2object::_SIO2vertexgroup, SIO2object::buf, SIO2object::dst, SIO2object::flags, SIO2sound::flags, SIO2transform::loc, SIO2objectphysic::mass, SIO2transform::mat, SIO2object::n_sound, SIO2object::n_vgroup, SIO2transform::rot, SIO2transform::scl, sio2, SIO2_OBJECT_BILLBOARD, SIO2_OBJECT_HALO, SIO2_OBJECT_INVISIBLE, SIO2_OBJECT_NORMALS, SIO2_OBJECT_TWOSIDE, SIO2_PLAY, SIO2_SOUND_FX, SIO2_TRANSFORM_MATRIX_APPLY, SIO2_TRANSFORM_MATRIX_BIND, sio2IsStateEnabled(), sio2MapBuffer(), sio2ObjectBillboard(), sio2ObjectBindVBO(), sio2ObjectRenderAction(), sio2SoundSetFx(), sio2TransformApply(), sio2TransformGetLocFromMatrix(), sio2TransformRender(), sio2TransformSetLoc(), sio2TransformSetMatrix(), sio2TransformSetRot(), sio2TransformSetScl(), sio2UnmapBuffer(), sio2VertexGroupRender(), SIO2object::snd_rad, SIO2ipo::state, SIO2object::userdata, SIO2object::vbo, SIO2object::vbo_offset, vec3::x, vec3::y, and vec3::z.
Referenced by sio2ResourceRender(), and sio2ResourceSelect3D().

| void sio2ObjectRenderAction | ( | SIO2object * | _SIO2object, | |
| SIO2window * | _SIO2window | |||
| ) |
Render the current SIO2object SIO2action based on the delta time of the SIO2window.
SIO2object: A valid SIO2object pointer.
SIO2window: A valid SIO2window pointer.
References SIO2objectanimation::_SIO2action, SIO2action::_SIO2frame, SIO2objectanimation::_SIO2frame1, SIO2objectanimation::_SIO2frame2, SIO2object::_SIO2objectanimation, SIO2frame::buf, SIO2object::buf, SIO2objectanimation::curr_frame, SIO2window::d_time, SIO2objectanimation::d_time, SIO2frame::dim, SIO2object::dim, SIO2objectanimation::interp, SIO2objectanimation::loop, SIO2action::n_frame, SIO2objectanimation::next_action, SIO2objectanimation::next_frame, SIO2action::s_frame, SIO2_CLAMP, SIO2_OBJECT_NORMALS, SIO2_PLAY, sio2MapBuffer(), sio2ObjectGetNumVert(), sio2ObjectStop(), sio2ObjectUpdateTimeRatio(), sio2UnmapBuffer(), SIO2objectanimation::state, SIO2objectanimation::t_ratio, SIO2object::vbo, SIO2object::vbo_offset, vec3::x, vec3::y, and vec3::z.
Referenced by sio2ObjectRender().

| void sio2ObjectReset | ( | void | ) |
Reset the OpenGL machine state as well as the SIO2 state that the rendering of an SIO2object might have turn ON.
References SIO2::_SIO2object, SIO2::_SIO2state, SIO2::_SIO2vertexgroup, sio2, SIO2_COLOR_ARRAY, SIO2_NORMAL_ARRAY, and sio2StateDisable().
Referenced by sio2ResourceRender().

| unsigned char sio2ObjectSetAction | ( | SIO2object * | _SIO2object, | |
| SIO2action * | _SIO2action, | |||
| float | _interp, | |||
| float | _fps | |||
| ) |
Assign an SIO2action to the current SIO2object passed in parameters. Please take note that in order to assign the SIO2action, the number of vertices and normals (if exported) need to fit with the number of vertices and normals contained in the SIO2frame in order to validate that the SIO2frame have been created for the specific SIO2object.
SIO2object: A valid SIO2object pointer.
SIO2action: A valid SIO2action pointer.
_interp: The interpolation time (in delta time) between and SIO2action loop or next action.
_fps: The frame per second that the SIO2action should playback.
return 1 or 0 depending if the SIO2action have been succesfully set.
References SIO2objectanimation::_SIO2action, SIO2action::_SIO2frame, SIO2objectanimation::_SIO2frame1, SIO2objectanimation::_SIO2frame2, SIO2object::_SIO2instance, SIO2object::_SIO2objectanimation, SIO2objectanimation::curr_frame, SIO2objectanimation::fps, SIO2objectanimation::interp, SIO2objectanimation::next_frame, SIO2action::s_frame, sio2ObjectGetNumVert(), and sio2ObjectUpdateTimeRatio().
Referenced by sio2ObjectNextAction().

| unsigned char sio2ObjectSetFrame | ( | SIO2object * | _SIO2object, | |
| unsigned int | _frame | |||
| ) |
Set the current SIO2action to a specific SIO2frame.
_SIO2object: A valid SIO2object pointer.
_frame: The frame number in the SIO2action array to be assigned.
return 1 or 0 depending if the SIO2frame of the current SIO2action have been succesfully set.
References SIO2objectanimation::_SIO2action, SIO2action::_SIO2frame, SIO2object::_SIO2objectanimation, SIO2frame::buf, SIO2object::buf, SIO2objectanimation::curr_frame, SIO2action::n_frame, SIO2objectanimation::next_frame, SIO2_OBJECT_NORMALS, sio2MapBuffer(), sio2ObjectGetNumVert(), sio2ObjectUpdateTimeRatio(), sio2UnmapBuffer(), SIO2object::vbo, and SIO2object::vbo_offset.

| SIO2object* sio2ObjectSoftCopy | ( | SIO2object * | _SIO2object, | |
| char * | _name | |||
| ) |
Create a soft copy of an SIO2object, commonly called "instance" in SIO2. Please take note that the SIO2object passed in parameters to this function need to be a "master" SIO2object, in other words not another instance.
In addition, to have the new SIO2object working in worldspace you will have to assign the SIO2transform parameters and specify where this new SIO2object will be located in world space. In the case that the new SIO2object is using physic, you will have to manually add it to the SIO2physic world of your choice. All variables will be duplicated and ready to be added in a SIO2physic handle.
Also in the case of duplicating a physic object of the type SIO2_PHYSIC_TRIANGLEMESH or SIO2_CONVEXHULL, you will have to map (sio2MapBuffer) the parent VBO buffer before sending the new SIO2object to the sio2PhysicAddObject function.
Please take note that soft body objects or animated objects cannot be duplicated with this function. You will have to use sio2ObjectHardCopy for this type of SIO2object.
_SIO2object: A valid "master" SIO2object pointer.
_name: The name to use for the new SIO2object.
return an SIO2object handle pointing to the new SIO2object created.
References SIO2object::_SIO2instance, SIO2object::_SIO2ipo, SIO2object::dim, SIO2object::flags, SIO2object::instname, SIO2object::name, SIO2object::rad, sio2ObjectCopyPhysicAttributes(), sio2ObjectInit(), sio2StringCpy(), SIO2object::snd_rad, and SIO2object::type.
Referenced by sio2ObjectHardCopy().

| void sio2ObjectStop | ( | SIO2object * | _SIO2object | ) |
Stop an SIO2action, previously bind to the SIO2object and reset the SIO2action back to its original startup position.
SIO2object: A valid SIO2object pointer.
References SIO2objectanimation::_SIO2action, SIO2action::_SIO2frame, SIO2objectanimation::_SIO2frame1, SIO2objectanimation::_SIO2frame2, SIO2object::_SIO2objectanimation, SIO2objectanimation::curr_frame, SIO2objectanimation::d_time, SIO2objectanimation::next_frame, SIO2_STOP, and SIO2objectanimation::state.
Referenced by sio2ObjectRenderAction().
| void sio2ObjectUpdateTimeRatio | ( | SIO2object * | _SIO2object | ) |
Update the SIO2action time ratio to use between two SIO2frame.
_SIO2object: A valid SIO2object pointer.
References SIO2objectanimation::_SIO2frame1, SIO2objectanimation::_SIO2frame2, SIO2object::_SIO2objectanimation, SIO2objectanimation::d_time, SIO2objectanimation::fps, SIO2frame::frame, and SIO2objectanimation::t_ratio.
Referenced by sio2ObjectRenderAction(), sio2ObjectSetAction(), and sio2ObjectSetFrame().
| void sio2ObjectUpdateType | ( | SIO2object * | _SIO2object | ) |
Update the SIO2object->type. Basically there's 3 type of SIO2object in SIO2, SIO2_OBJECT_SOLID, SIO2_OBJECT_TRANSPARENT and SIO2_OBJECT_ALPHA_TESTED, all of them require a different type of sorting when rendered. This function will analyze the SIO2object and its SIO2material(s) and determine in which category the SIO2object should be used by the sio2ResourceRender function.
_SIO2object: A valid SIO2object pointer.
References SIO2object::_SIO2instance, SIO2vertexgroup::_SIO2material, SIO2object::_SIO2vertexgroup, SIO2material::alvl, SIO2material::blend, SIO2object::n_vgroup, SIO2_OBJECT_ALPHA_TESTED, SIO2_OBJECT_SOLID, SIO2_OBJECT_TRANSPARENT, sio2DisableState(), sio2EnableState(), and SIO2object::type.
Referenced by sio2ObjectGenId().

1.5.6