Merge pull request #64 from n00b87/blend_mode_2d

Blend mode 2d
This commit is contained in:
Rodney Cunningham
2025-09-20 19:02:05 -05:00
committed by GitHub
58 changed files with 3137 additions and 2039 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -551,6 +551,24 @@ ul, #myUL {
<li><a href="opencanvasspritelayer.html" target="main">OpenCanvasSpriteLayer</a></li>
<li><a href="setspritecanvasblendmode.html" target="main">SetSpriteCanvasBlendMode</a></li>
<li><a href="getspritecanvasblendmode.html" target="main">GetSpriteCanvasBlendMode</a></li>
<li><a href="setspritecanvasantialiasmode.html" target="main">SetSpriteCanvasAntiAliasMode</a></li>
<li><a href="getspritecanvasantialiasmode.html" target="main">GetSpriteCanvasAntiAliasMode</a></li>
<li><a href="setspritecanvasbilinearfilter.html" target="main">SetSpriteCanvasBilinearFilter</a></li>
<li><a href="getspritecanvasbilinearfilter.html" target="main">GetSpriteCanvasBilinearFilter</a></li>
<li><a href="getspritecanvasphysics.html" target="main">GetSpriteCanvasPhysics</a></li>
<li><a href="setspritecanvasrenderpriority.html" target="main">SetSpriteCanvasRenderPriority</a></li>
<li><a href="getspritecanvasrenderpriority.html" target="main">GetSpriteCanvasRenderPriority</a></li>
</ul>
</li>
@@ -887,6 +905,10 @@ ul, #myUL {
<li><a href="numgyros.html" target="main">NumGyros</a></li>
<li><a href="touchx.html" target="main">TouchX</a></li>
<li><a href="touchy.html" target="main">TouchY</a></li>
</ul>
</li>
@@ -1025,6 +1047,16 @@ ul, #myUL {
<li><a href="getgpuinfo.html" target="main">GetGPUInfo$</a></li>
<li><a href="steam_addachievement.html" target="main">Steam_AddAchievement</a></li>
<li><a href="steam_clearachievements.html" target="main">Steam_ClearAchievements</a></li>
<li><a href="steam_finalizeachievements.html" target="main">Steam_FinalizeAchievements</a></li>
<li><a href="steam_triggerachievement.html" target="main">Steam_TriggerAchievement</a></li>
<li><a href="steam_getid.html" target="main">Steam_GetID$</a></li>
</ul>
</li>
@@ -1645,6 +1677,12 @@ ul, #myUL {
<li><a href="deletean8.html" target="main">DeleteAN8</a></li>
<li><a href="setmeshboundingbox.html" target="main">SetMeshBoundingBox</a></li>
<li><a href="getmeshboundingbox.html" target="main">GetMeshBoundingBox</a></li>
<li><a href="recalculatemeshboundingbox.html" target="main">ReCalculateMeshBoundingBox</a></li>
</ul>
</li>

View File

@@ -11,6 +11,9 @@
<p>
<br>
</p>
<p>
<h2><u><b>TILE MAP</b></u></h2><br>
</p>
<p>
<b>Type Nirvana_TileMap</b>
</p>
@@ -43,10 +46,10 @@
</li>
</ul>
<p>
<br>
<br><br>
</p>
<p>
<b>Function Nirvana_GetLayerTileSetName$(layer_index)</b>
<h2><u><b>TILE LAYER PROPERTIES</b></u></h2><br> <b>Function Nirvana_GetLayerTileSetName$(layer_index)</b>
</p>
<ul>
<li>
@@ -76,7 +79,10 @@
</li>
</ul>
<p>
<br>
<br><br>
</p>
<p>
<h2><u><b>TILE MASK</b></u></h2><br>
</p>
<p>
<b>Function Nirvana_GetLayerTileMaskCount(layer_index)</b>
@@ -135,7 +141,58 @@
Returns TRUE if the tile at the given position is flagged in the given mask
<ul>
<li>
NOTE: (x, y) is a world position and not a row and column position in the tile map
NOTE: (x, y) is a world position and not a row/column position in the tile map
</li>
</ul>
</li>
</ul>
<p>
<br>
</p>
<p>
<h2><u><b>SET/GET TILES</b></u></h2><br>
</p>
<p>
<b>Function Nirvana_GetTile(layer_index, x, y)</b>
</p>
<ul>
<li>
Return the tile index of the tile at the given map position
<ul>
<li>
NOTE: (x, y) is a row/colum position and not a world position in the tile map
</li>
</ul>
</li>
</ul>
<p>
<br>
</p>
<p>
<b>Function Nirvana_GetTileMapPosition(layer_index, stage_x, stage_y) As Nirvana_Vector2D</b>
</p>
<ul>
<li>
Return a Nirvana_Vector2D object with the row/column position of the tile at the absolute world position in the layer
<ul>
<li>
NOTE: (x, y) is a world position and not a row/column position in the tile map
</li>
</ul>
</li>
</ul>
<p>
<br>
</p>
<p>
<b>Function Nirvana_SetTile(layer_index, tile_index, x, y)</b>
</p>
<ul>
<li>
Sets the tile at the given row/column position in the tile map for the layer
<ul>
<li>
NOTE: (x, y) is a row/column position in the tile map
</li>
</ul>
</li>

View File

@@ -14,7 +14,7 @@
<p>
The main properties panel is where a majority of settings for the material is set.
</p>
<p><img src="images/serenity_material_properties.png" ></p>
<p><img src="images/serenity_material_properties.png" width=600 height=600></p>
<p>
<br>
</p>
@@ -25,6 +25,16 @@
<p>
<br>
</p>
<p>
The FX Varialbe panel is where you can set variables that are used to control FX Materials. Check the SetMaterialConstant() function for info on which variables are available on which materials.
</p>
<p><img src="images/serenity_fx_var_panel.png" ></p>
<br><p>Related:
<a href="setmaterialconstant.html">SetMaterialConstant</a>
</p>
<p>
<br>
</p>
<p>
The material preview allows you to view the current material on a mesh.
</p>

View File

@@ -26,12 +26,12 @@
<br>
</p>
<p>
The mesh preview window has the same controls as the material preview.
The mesh preview window has the same controls as the material preview. Hold the middle mouse button down and move the mouse left/right to rotate around the mesh.
</p>
<p>
Hold the middle mouse button down and move the mouse left/right to rotate around the mesh.
In the ID panel, you can set the ID and choose a separate mesh for collision data.
</p>
<p><img src="images/serenity_mesh_editor.png" width=640 height=400></p>
<p><img src="images/mesh_id_panel.png" width=750 height=150></p>
<ol>
<li>
ID - Must be a valid RCBasic variable
@@ -40,16 +40,52 @@
File - The file the mesh was loaded from
</li>
<li>
Materials - Add materials and set them
Collider - You can select another mesh to use for collision geometry
</li>
</ol>
<p>
<br>
</p>
<p>
The material panel is where you can set materials for a mesh.
</p>
<p><img src="images/mesh_material_panel.png" width=600 height=240></p>
<ol>
<li>
Animations - Add and remove animations from mesh
Add - Add a material to the mesh
<ul>
<li>
NOTE: MD2 meshes will load default animations
Meshes can have more than one material if there are multiple materials on the 3D model
</li>
</ul>
</li>
<li>
Remove - Removes the selected mesh
</li>
<li>
Set/UnSet - Sets or Clears a material slot
</li>
</ol>
<p>
<br>
</p>
<p>
The animation panel is pretty simplistic. You can't modify any frames. You only assign which frames belong to an animation ID for reference in your project.
</p>
<p><img src="images/mesh_animation_panel.png" width=600 height=240></p>
<ol>
<li>
Animation ID - This is the name you want attached to the animation
</li>
<li>
Start Frame - The first frame of the animation
</li>
<li>
End Frame - The last frame of the animation
</li>
<li>
Speed - The speed in frames per second of the animation
</li>
</ol>
<p>

View File

@@ -25,6 +25,13 @@
<p>
<br>
</p>
<p>
The project tree is where the project is organized. To be able to add actors to a project there must be an active stage. <br> NOTE: A stage will be bold in the tree view when its active.
</p>
<p><img src="images/sn_project_tree.png" width=300 height=300></p>
<p>
<br>
</p>
<p>
The scene view is where most of the work is done.
</p>

View File

@@ -0,0 +1,4 @@
#title GetSpriteCanvasAntiAliasMode [RCBasic Doc]
#header function GetSpriteCanvasAntiAliasMode( c_num )

View File

@@ -0,0 +1,4 @@
#title GetSpriteCanvasBilinearFilter [RCBasic Doc]
#header function GetSpriteCanvasBilinearFilter( c_num )

View File

@@ -0,0 +1,4 @@
#title GetSpriteCanvasBlendMode [RCBasic Doc]
#header function GetSpriteCanvasBlendMode( c_num )

View File

@@ -0,0 +1,4 @@
#title GetSpriteCanvasPhysics [RCBasic Doc]
#header function GetSpriteCanvasPhysics( c_num )

View File

@@ -0,0 +1,4 @@
#title GetSpriteCanvasRenderPriority [RCBasic Doc]
#header sub GetSpriteCanvasRenderPriority( c_num, ByRef priority, ByRef order )

View File

@@ -0,0 +1,4 @@
#title SetSpriteCanvasAntiAliasMode [RCBasic Doc]
#header sub SetSpriteCanvasAntiAliasMode( c_num, aa_mode )

View File

@@ -0,0 +1,4 @@
#title SetSpriteCanvasBilinearFilter [RCBasic Doc]
#header sub SetSpriteCanvasBilinearFilter( c_num, flag )

View File

@@ -0,0 +1,4 @@
#title SetSpriteCanvasBlendMode [RCBasic Doc]
#header sub SetSpriteCanvasBlendMode( c_num, blend_mode )

View File

@@ -0,0 +1,4 @@
#title SetSpriteCanvasRenderPriority [RCBasic Doc]
#header function SetSpriteCanvasRenderPriority( c_num, priority, order )

View File

@@ -0,0 +1,4 @@
#title SetSpriteLayerPriority [RCBasic Doc]
#header Function SetSpriteLayerPriority( c_num, priority, order )

View File

@@ -0,0 +1,4 @@
#title SortSpriteLayer [RCBasic Doc]
#header Function SortSpriteLayer( c_num, sort_option )

View File

@@ -11,6 +11,9 @@
<p>
<br>
</p>
<p>
<h2><u><b>TILE MAP</b></u></h2><br>
</p>
<p>
<b>Type Nirvana_TileMap</b>
</p>
@@ -43,10 +46,10 @@
</li>
</ul>
<p>
<br>
<br><br>
</p>
<p>
<b>Function Nirvana_GetLayerTileSetName$(layer_index)</b>
<h2><u><b>TILE LAYER PROPERTIES</b></u></h2><br> <b>Function Nirvana_GetLayerTileSetName$(layer_index)</b>
</p>
<ul>
<li>
@@ -76,7 +79,10 @@
</li>
</ul>
<p>
<br>
<br><br>
</p>
<p>
<h2><u><b>TILE MASK</b></u></h2><br>
</p>
<p>
<b>Function Nirvana_GetLayerTileMaskCount(layer_index)</b>
@@ -135,7 +141,58 @@
Returns TRUE if the tile at the given position is flagged in the given mask
<ul>
<li>
NOTE: (x, y) is a world position and not a row and column position in the tile map
NOTE: (x, y) is a world position and not a row/column position in the tile map
</li>
</ul>
</li>
</ul>
<p>
<br>
</p>
<p>
<h2><u><b>SET/GET TILES</b></u></h2><br>
</p>
<p>
<b>Function Nirvana_GetTile(layer_index, x, y)</b>
</p>
<ul>
<li>
Return the tile index of the tile at the given map position
<ul>
<li>
NOTE: (x, y) is a row/colum position and not a world position in the tile map
</li>
</ul>
</li>
</ul>
<p>
<br>
</p>
<p>
<b>Function Nirvana_GetTileMapPosition(layer_index, stage_x, stage_y) As Nirvana_Vector2D</b>
</p>
<ul>
<li>
Return a Nirvana_Vector2D object with the row/column position of the tile at the absolute world position in the layer
<ul>
<li>
NOTE: (x, y) is a world position and not a row/column position in the tile map
</li>
</ul>
</li>
</ul>
<p>
<br>
</p>
<p>
<b>Function Nirvana_SetTile(layer_index, tile_index, x, y)</b>
</p>
<ul>
<li>
Sets the tile at the given row/column position in the tile map for the layer
<ul>
<li>
NOTE: (x, y) is a row/column position in the tile map
</li>
</ul>
</li>

View File

@@ -3,6 +3,9 @@
<br>
<h2><u><b>TILE MAP</b></u></h2><br>
<b>Type Nirvana_TileMap</b>
#list ul
#li Dim TilesetName$
@@ -17,9 +20,10 @@
#list ul
#li Create a Nirvana TileMap
#/list
<br>
<br><br>
<h2><u><b>TILE LAYER PROPERTIES</b></u></h2><br>
<b>Function Nirvana_GetLayerTileSetName$(layer_index)</b>
#list ul
#li Returns the name of tileset associated with the given layer or empty string if layer is not valid
@@ -36,7 +40,9 @@
#list ul
#li Returns the RCBasic tile map associated with the given layer or -1 if layer is not valid
#/list
<br>
<br><br>
<h2><u><b>TILE MASK</b></u></h2><br>
<b>Function Nirvana_GetLayerTileMaskCount(layer_index)</b>
#list ul
@@ -53,7 +59,6 @@
#/list
<br>
<b>Function Nirvana_GetTileMaskName$(mask_index)</b>
#list ul
#li Returns the name of the given tile mask or an empty string if the mask index is not valid
@@ -70,8 +75,39 @@
#list ul
#li Returns TRUE if the tile at the given position is flagged in the given mask
#list ul
#li NOTE: (x, y) is a world position and not a row and column position in the tile map
#li NOTE: (x, y) is a world position and not a row/column position in the tile map
#/list
#/list
<br>
<h2><u><b>SET/GET TILES</b></u></h2><br>
<b>Function Nirvana_GetTile(layer_index, x, y)</b>
#list ul
#li Return the tile index of the tile at the given map position
#list ul
#li NOTE: (x, y) is a row/colum position and not a world position in the tile map
#/list
#/list
<br>
<b>Function Nirvana_GetTileMapPosition(layer_index, stage_x, stage_y) As Nirvana_Vector2D</b>
#list ul
#li Return a Nirvana_Vector2D object with the row/column position of the tile at the absolute world position in the layer
#list ul
#li NOTE: (x, y) is a world position and not a row/column position in the tile map
#/list
#/list
<br>
<b>Function Nirvana_SetTile(layer_index, tile_index, x, y)</b>
#list ul
#li Sets the tile at the given row/column position in the tile map for the layer
#list ul
#li NOTE: (x, y) is a row/column position in the tile map
#/list
#/list
<br>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -14,7 +14,7 @@
<p>
The main properties panel is where a majority of settings for the material is set.
</p>
<p><img src="images/serenity_material_properties.png" ></p>
<p><img src="images/serenity_material_properties.png" width=600 height=600></p>
<p>
<br>
</p>
@@ -25,6 +25,16 @@
<p>
<br>
</p>
<p>
The FX Varialbe panel is where you can set variables that are used to control FX Materials. Check the SetMaterialConstant() function for info on which variables are available on which materials.
</p>
<p><img src="images/serenity_fx_var_panel.png" ></p>
<br><p>Related:
<a href="setmaterialconstant.html">SetMaterialConstant</a>
</p>
<p>
<br>
</p>
<p>
The material preview allows you to view the current material on a mesh.
</p>

View File

@@ -5,7 +5,7 @@ The material editor allows you to create, edit, and view materials. On the left
The main properties panel is where a majority of settings for the material is set.
#image "images/serenity_material_properties.png"
#image "images/serenity_material_properties.png", w=600, h=600
<br>
@@ -13,6 +13,11 @@ The texture panel is where you set textures for the material. Each material can
#image "images/serenity_material_texture_panel.png"
<br>
The FX Varialbe panel is where you can set variables that are used to control FX Materials. Check the SetMaterialConstant() function for info on which variables are available on which materials.
#image "images/serenity_fx_var_panel.png"
#ref SetMaterialConstant
<br>
The material preview allows you to view the current material on a mesh.
#list ul

View File

@@ -26,12 +26,12 @@
<br>
</p>
<p>
The mesh preview window has the same controls as the material preview.
The mesh preview window has the same controls as the material preview. Hold the middle mouse button down and move the mouse left/right to rotate around the mesh.
</p>
<p>
Hold the middle mouse button down and move the mouse left/right to rotate around the mesh.
In the ID panel, you can set the ID and choose a separate mesh for collision data.
</p>
<p><img src="images/serenity_mesh_editor.png" width=640 height=400></p>
<p><img src="images/mesh_id_panel.png" width=750 height=150></p>
<ol>
<li>
ID - Must be a valid RCBasic variable
@@ -40,16 +40,52 @@
File - The file the mesh was loaded from
</li>
<li>
Materials - Add materials and set them
Collider - You can select another mesh to use for collision geometry
</li>
</ol>
<p>
<br>
</p>
<p>
The material panel is where you can set materials for a mesh.
</p>
<p><img src="images/mesh_material_panel.png" width=600 height=240></p>
<ol>
<li>
Animations - Add and remove animations from mesh
Add - Add a material to the mesh
<ul>
<li>
NOTE: MD2 meshes will load default animations
Meshes can have more than one material if there are multiple materials on the 3D model
</li>
</ul>
</li>
<li>
Remove - Removes the selected mesh
</li>
<li>
Set/UnSet - Sets or Clears a material slot
</li>
</ol>
<p>
<br>
</p>
<p>
The animation panel is pretty simplistic. You can't modify any frames. You only assign which frames belong to an animation ID for reference in your project.
</p>
<p><img src="images/mesh_animation_panel.png" width=600 height=240></p>
<ol>
<li>
Animation ID - This is the name you want attached to the animation
</li>
<li>
Start Frame - The first frame of the animation
</li>
<li>
End Frame - The last frame of the animation
</li>
<li>
Speed - The speed in frames per second of the animation
</li>
</ol>
<p>

View File

@@ -10,17 +10,36 @@ The mesh editor performs the following functions
<br>
The mesh preview window has the same controls as the material preview.
Hold the middle mouse button down and move the mouse left/right to rotate around the mesh.
#image "images/serenity_mesh_editor.png", w=640, h=400
In the ID panel, you can set the ID and choose a separate mesh for collision data.
#image "images/mesh_id_panel.png", w=750, h=150
#list ol
#li ID - Must be a valid RCBasic variable
#li File - The file the mesh was loaded from
#li Materials - Add materials and set them
#li Animations - Add and remove animations from mesh
#list ul
#li NOTE: MD2 meshes will load default animations
#/list
#li Collider - You can select another mesh to use for collision geometry
#/list
<br>
The material panel is where you can set materials for a mesh.
#image "images/mesh_material_panel.png", w=600, h=240
#list ol
#li Add - Add a material to the mesh
#list ul
#li Meshes can have more than one material if there are multiple materials on the 3D model
#/list
#li Remove - Removes the selected mesh
#li Set/UnSet - Sets or Clears a material slot
#/list
<br>
The animation panel is pretty simplistic. You can't modify any frames. You only assign which frames belong to an animation ID for reference in your project.
#image "images/mesh_animation_panel.png", w=600, h=240
#list ol
#li Animation ID - This is the name you want attached to the animation
#li Start Frame - The first frame of the animation
#li End Frame - The last frame of the animation
#li Speed - The speed in frames per second of the animation
#/list

View File

@@ -25,6 +25,13 @@
<p>
<br>
</p>
<p>
The project tree is where the project is organized. To be able to add actors to a project there must be an active stage. <br> NOTE: A stage will be bold in the tree view when its active.
</p>
<p><img src="images/sn_project_tree.png" width=300 height=300></p>
<p>
<br>
</p>
<p>
The scene view is where most of the work is done.
</p>

View File

@@ -9,6 +9,14 @@ The scene editor performs the following functions
#/list
<br>
The project tree is where the project is organized. To be able to add actors to a project there must be an active stage.
<br>
NOTE: A stage will be bold in the tree view when its active.
#image "images/sn_project_tree.png", w=300, h=300
<br>
The scene view is where most of the work is done.
#image "images/serenity_scene_editor.png", w=640, h=400

View File

@@ -197,6 +197,15 @@ rc_canvasClip( CANVASCLIP_X, CANVASCLIP_Y, CANVASCLIP_W, CANVASCLIP_H )
rc_activeCanvas( )
rc_setCanvasPhysics2D( SETCANVASPHYSICS2D_C_NUM, SETCANVASPHYSICS2D_STATE )
rc_canvasOpenSpriteLayer( OPENCANVASSPRITELAYER_VIEWPORT_X, OPENCANVASSPRITELAYER_VIEWPORT_Y, OPENCANVASSPRITELAYER_VIEWPORT_W, OPENCANVASSPRITELAYER_VIEWPORT_H )
rc_setSpriteCanvasBlendMode( SETSPRITECANVASBLENDMODE_C_NUM, SETSPRITECANVASBLENDMODE_BLEND_MODE )
rc_getSpriteCanvasBlendMode( GETSPRITECANVASBLENDMODE_C_NUM )
rc_setSpriteCanvasAntiAliasMode( SETSPRITECANVASANTIALIASMODE_C_NUM, SETSPRITECANVASANTIALIASMODE_AA_MODE )
rc_getSpriteCanvasAntiAliasMode( GETSPRITECANVASANTIALIASMODE_C_NUM )
rc_setSpriteCanvasBilinearFilter( SETSPRITECANVASBILINEARFILTER_C_NUM, SETSPRITECANVASBILINEARFILTER_FLAG )
rc_getSpriteCanvasBilinearFilter( GETSPRITECANVASBILINEARFILTER_C_NUM )
rc_getSpriteCanvasPhysics( GETSPRITECANVASPHYSICS_C_NUM )
rc_setSpriteCanvasRenderPriority( SETSPRITECANVASRENDERPRIORITY_C_NUM, SETSPRITECANVASRENDERPRIORITY_PRIORITY, SETSPRITECANVASRENDERPRIORITY_ORDER )
rc_getSpriteCanvasRenderPriority( GETSPRITECANVASRENDERPRIORITY_C_NUM, &GETSPRITECANVASRENDERPRIORITY_PRIORITY, &GETSPRITECANVASRENDERPRIORITY_ORDER )
rc_drawCircle( CIRCLE_X, CIRCLE_Y, CIRCLE_RADIUS )
rc_drawCircleFill( CIRCLEFILL_X, CIRCLEFILL_Y, CIRCLEFILL_RADIUS )
rc_drawEllipse( ELLIPSE_X, ELLIPSE_Y, ELLIPSE_RX, ELLIPSE_RY )

View File

@@ -21,3 +21,12 @@ function CanvasClip(x, y, w, h)
function ActiveCanvas()
sub SetCanvasPhysics2D(c_num, state)
function OpenCanvasSpriteLayer(viewport_x, viewport_y, viewport_w, viewport_h)
sub SetSpriteCanvasBlendMode( c_num, blend_mode )
function GetSpriteCanvasBlendMode( c_num )
sub SetSpriteCanvasAntiAliasMode( c_num, aa_mode )
function GetSpriteCanvasAntiAliasMode( c_num )
sub SetSpriteCanvasBilinearFilter( c_num, flag )
function GetSpriteCanvasBilinearFilter( c_num )
function GetSpriteCanvasPhysics( c_num )
function SetSpriteCanvasRenderPriority( c_num, priority, order )
sub GetSpriteCanvasRenderPriority( c_num, ByRef priority, ByRef order )

View File

@@ -959,7 +959,7 @@ int main(int argc, char * argv[])
if(rc_filename.compare("--version")==0)
{
cout << "RCBASIC Compiler v4.4" << endl;
cout << "RCBASIC Compiler v4.5" << endl;
return 0;
}

View File

@@ -526,6 +526,31 @@ void init_embedded_functions()
add_embedded_arg("viewport_y", ID_TYPE_NUM);
add_embedded_arg("viewport_w", ID_TYPE_NUM);
add_embedded_arg("viewport_h", ID_TYPE_NUM);
embed_function("SetSpriteCanvasBlendMode", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("blend_mode", ID_TYPE_NUM);
embed_function("GetSpriteCanvasBlendMode", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
embed_function("SetSpriteCanvasAntiAliasMode", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("aa_mode", ID_TYPE_NUM);
embed_function("GetSpriteCanvasAntiAliasMode", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
embed_function("SetSpriteCanvasBilinearFilter", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("GetSpriteCanvasBilinearFilter", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
embed_function("GetSpriteCanvasPhysics", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
embed_function("SetSpriteCanvasRenderPriority", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("priority", ID_TYPE_NUM);
add_embedded_arg("order", ID_TYPE_NUM);
embed_function("GetSpriteCanvasRenderPriority", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("priority", ID_TYPE_BYREF_NUM);
add_embedded_arg("order", ID_TYPE_BYREF_NUM);
embed_function("Circle", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);

Binary file not shown.

View File

@@ -1,5 +1,5 @@
# depslib dependency file v1.0
1752011337 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp
1756692651 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp
<iostream>
<stack>
<vector>
@@ -54,7 +54,7 @@
1752004854 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_global.h
<inttypes.h>
1752011318 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_builtin.h
1756692659 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_builtin.h
"identifier.h"
1752004854 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_vm_asm.h

View File

@@ -2,49 +2,26 @@
<CodeBlocks_layout_file>
<FileVersion major="1" minor="0" />
<ActiveTarget name="Debug" />
<File name="main.cpp" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="28436" topLine="896" />
</Cursor>
</File>
<File name="rc_builtin.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="112317" topLine="2509" />
</Cursor>
</File>
<File name="tokenizer.h" open="1" top="1" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="46887" topLine="1109" />
</Cursor>
</File>
<File name="identifier.h" open="0" top="0" tabpos="26" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="9544" topLine="341" />
</Cursor>
</File>
<File name="rc_global.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="keywords.h" open="0" top="0" tabpos="25" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="13014" topLine="163" />
<Cursor1 position="105" topLine="17" />
</Cursor>
</File>
<File name="parser.h" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="tokenizer.h" open="1" top="0" tabpos="17" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="192713" topLine="4632" />
<Cursor1 position="52116" topLine="1283" />
</Cursor>
<Folding>
<Collapse line="6341" />
</Folding>
</File>
<File name="rc_utility.h" open="0" top="0" tabpos="27" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1747" topLine="35" />
</Cursor>
</File>
<File name="rc_vm_asm.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="41761" topLine="1347" />
</Cursor>
</File>
<File name="env_resolve.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="615" topLine="32" />
@@ -55,9 +32,32 @@
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
<File name="keywords.h" open="0" top="0" tabpos="25" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="rc_vm_asm.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="105" topLine="17" />
<Cursor1 position="41761" topLine="1347" />
</Cursor>
</File>
<File name="parser.h" open="1" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="192713" topLine="4632" />
</Cursor>
<Folding>
<Collapse line="6341" />
</Folding>
</File>
<File name="main.cpp" open="1" top="1" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="28436" topLine="905" />
</Cursor>
</File>
<File name="rc_builtin.h" open="1" top="0" tabpos="19" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="112317" topLine="2532" />
</Cursor>
</File>
<File name="rc_global.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="13014" topLine="163" />
</Cursor>
</File>
</CodeBlocks_layout_file>

View File

@@ -520,6 +520,31 @@ add_embedded_arg("viewport_x", ID_TYPE_NUM);
add_embedded_arg("viewport_y", ID_TYPE_NUM);
add_embedded_arg("viewport_w", ID_TYPE_NUM);
add_embedded_arg("viewport_h", ID_TYPE_NUM);
embed_function("SetSpriteCanvasBlendMode", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("blend_mode", ID_TYPE_NUM);
embed_function("GetSpriteCanvasBlendMode", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
embed_function("SetSpriteCanvasAntiAliasMode", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("aa_mode", ID_TYPE_NUM);
embed_function("GetSpriteCanvasAntiAliasMode", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
embed_function("SetSpriteCanvasBilinearFilter", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("GetSpriteCanvasBilinearFilter", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
embed_function("GetSpriteCanvasPhysics", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
embed_function("SetSpriteCanvasRenderPriority", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("priority", ID_TYPE_NUM);
add_embedded_arg("order", ID_TYPE_NUM);
embed_function("GetSpriteCanvasRenderPriority", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("priority", ID_TYPE_BYREF_NUM);
add_embedded_arg("order", ID_TYPE_BYREF_NUM);
embed_function("Circle", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);

File diff suppressed because it is too large Load Diff

View File

@@ -622,6 +622,33 @@ case FN_SetCanvasPhysics2D: //Sub Procedure
case FN_OpenCanvasSpriteLayer: //Number Function
rc_push_num(rc_canvasOpenSpriteLayer( OPENCANVASSPRITELAYER_VIEWPORT_X, OPENCANVASSPRITELAYER_VIEWPORT_Y, OPENCANVASSPRITELAYER_VIEWPORT_W, OPENCANVASSPRITELAYER_VIEWPORT_H ));
break;
case FN_SetSpriteCanvasBlendMode: //Sub Procedure
rc_setSpriteCanvasBlendMode( SETSPRITECANVASBLENDMODE_C_NUM, SETSPRITECANVASBLENDMODE_BLEND_MODE );
break;
case FN_GetSpriteCanvasBlendMode: //Number Function
rc_push_num(rc_getSpriteCanvasBlendMode( GETSPRITECANVASBLENDMODE_C_NUM ));
break;
case FN_SetSpriteCanvasAntiAliasMode: //Sub Procedure
rc_setSpriteCanvasAntiAliasMode( SETSPRITECANVASANTIALIASMODE_C_NUM, SETSPRITECANVASANTIALIASMODE_AA_MODE );
break;
case FN_GetSpriteCanvasAntiAliasMode: //Number Function
rc_push_num(rc_getSpriteCanvasAntiAliasMode( GETSPRITECANVASANTIALIASMODE_C_NUM ));
break;
case FN_SetSpriteCanvasBilinearFilter: //Sub Procedure
rc_setSpriteCanvasBilinearFilter( SETSPRITECANVASBILINEARFILTER_C_NUM, SETSPRITECANVASBILINEARFILTER_FLAG );
break;
case FN_GetSpriteCanvasBilinearFilter: //Number Function
rc_push_num(rc_getSpriteCanvasBilinearFilter( GETSPRITECANVASBILINEARFILTER_C_NUM ));
break;
case FN_GetSpriteCanvasPhysics: //Number Function
rc_push_num(rc_getSpriteCanvasPhysics( GETSPRITECANVASPHYSICS_C_NUM ));
break;
case FN_SetSpriteCanvasRenderPriority: //Number Function
rc_push_num(rc_setSpriteCanvasRenderPriority( SETSPRITECANVASRENDERPRIORITY_C_NUM, SETSPRITECANVASRENDERPRIORITY_PRIORITY, SETSPRITECANVASRENDERPRIORITY_ORDER ));
break;
case FN_GetSpriteCanvasRenderPriority: //Sub Procedure
rc_getSpriteCanvasRenderPriority( GETSPRITECANVASRENDERPRIORITY_C_NUM, &GETSPRITECANVASRENDERPRIORITY_PRIORITY, &GETSPRITECANVASRENDERPRIORITY_ORDER );
break;
case FN_Circle: //Sub Procedure
rc_drawCircle( CIRCLE_X, CIRCLE_Y, CIRCLE_RADIUS );
break;

View File

@@ -1286,6 +1286,20 @@ string rc_keywordToken(string sline)
return "<num>3";
else if(sline.compare("SPRITE_SHAPE_CHAIN")==0)
return "<num>4";
else if(sline.compare("SPRITE_PRIORITY_NONE")==0)
return "<num>0";
else if(sline.compare("SPRITE_PRIORITY_LEAST_X")==0)
return "<num>1";
else if(sline.compare("SPRITE_PRIORITY_GREATEST_X")==0)
return "<num>2";
else if(sline.compare("SPRITE_PRIORITY_LEAST_Y")==0)
return "<num>3";
else if(sline.compare("SPRITE_PRIORITY_GREATEST_Y")==0)
return "<num>4";
else if(sline.compare("SPRITE_ORDER_ASCENDING")==0)
return "<num>0";
else if(sline.compare("SPRITE_ORDER_DESCENDING")==0)
return "<num>1";
else
{
for(int i = 0; i < rc_constants.size(); i++)

View File

@@ -4398,7 +4398,7 @@ int main(int argc, char * argv[])
if(rc_filename.compare("--version")==0)
{
cout << "RCBASIC Runtime v4.4" << endl;
cout << "RCBASIC Runtime v4.5" << endl;
return 0;
}
@@ -4452,7 +4452,7 @@ int main(int argc, char * argv[])
//ogles2 test
#ifdef RC_TESTING
rc_intern_dirChange("/home/n00b/Desktop/tutorial/sn_video_tutorial/SN_Tutorial");
rc_intern_dirChange("/home/n00b/Projects/SerenityEngine/Untitled_Project/test");
//rc_intern_dirChange("");
rc_filename = "main.cbc";

File diff suppressed because it is too large Load Diff

View File

@@ -622,6 +622,33 @@ case FN_SetCanvasPhysics2D: //Sub Procedure
case FN_OpenCanvasSpriteLayer: //Number Function
rc_push_num(rc_canvasOpenSpriteLayer( OPENCANVASSPRITELAYER_VIEWPORT_X, OPENCANVASSPRITELAYER_VIEWPORT_Y, OPENCANVASSPRITELAYER_VIEWPORT_W, OPENCANVASSPRITELAYER_VIEWPORT_H ));
break;
case FN_SetSpriteCanvasBlendMode: //Sub Procedure
rc_setSpriteCanvasBlendMode( SETSPRITECANVASBLENDMODE_C_NUM, SETSPRITECANVASBLENDMODE_BLEND_MODE );
break;
case FN_GetSpriteCanvasBlendMode: //Number Function
rc_push_num(rc_getSpriteCanvasBlendMode( GETSPRITECANVASBLENDMODE_C_NUM ));
break;
case FN_SetSpriteCanvasAntiAliasMode: //Sub Procedure
rc_setSpriteCanvasAntiAliasMode( SETSPRITECANVASANTIALIASMODE_C_NUM, SETSPRITECANVASANTIALIASMODE_AA_MODE );
break;
case FN_GetSpriteCanvasAntiAliasMode: //Number Function
rc_push_num(rc_getSpriteCanvasAntiAliasMode( GETSPRITECANVASANTIALIASMODE_C_NUM ));
break;
case FN_SetSpriteCanvasBilinearFilter: //Sub Procedure
rc_setSpriteCanvasBilinearFilter( SETSPRITECANVASBILINEARFILTER_C_NUM, SETSPRITECANVASBILINEARFILTER_FLAG );
break;
case FN_GetSpriteCanvasBilinearFilter: //Number Function
rc_push_num(rc_getSpriteCanvasBilinearFilter( GETSPRITECANVASBILINEARFILTER_C_NUM ));
break;
case FN_GetSpriteCanvasPhysics: //Number Function
rc_push_num(rc_getSpriteCanvasPhysics( GETSPRITECANVASPHYSICS_C_NUM ));
break;
case FN_SetSpriteCanvasRenderPriority: //Number Function
rc_push_num(rc_setSpriteCanvasRenderPriority( SETSPRITECANVASRENDERPRIORITY_C_NUM, SETSPRITECANVASRENDERPRIORITY_PRIORITY, SETSPRITECANVASRENDERPRIORITY_ORDER ));
break;
case FN_GetSpriteCanvasRenderPriority: //Sub Procedure
rc_getSpriteCanvasRenderPriority( GETSPRITECANVASRENDERPRIORITY_C_NUM, &GETSPRITECANVASRENDERPRIORITY_PRIORITY, &GETSPRITECANVASRENDERPRIORITY_ORDER );
break;
case FN_Circle: //Sub Procedure
rc_drawCircle( CIRCLE_X, CIRCLE_Y, CIRCLE_RADIUS );
break;

View File

@@ -1057,6 +1057,11 @@ int rc_canvasOpen(int w, int h, int vx, int vy, int vw, int vh, int mode, int ca
canvas.physics2D.contact_listener = new rc_contactListener_obj();
canvas.physics2D.world->SetContactListener(canvas.physics2D.contact_listener);
canvas.sprite_id.clear();
canvas.spriteCanvasProperties.blend_mode = irr::video::EBO_ADD;
canvas.spriteCanvasProperties.anti_alias = irr::video::EAAM_OFF;
canvas.spriteCanvasProperties.bilinear_filter = false;
canvas.spriteCanvasProperties.priority = RC_SPRITE_PRIORITY_NONE;
canvas.spriteCanvasProperties.order = RC_SPRITE_ORDER_ASCENDING;
}
switch(mode)
@@ -1188,9 +1193,85 @@ void rc_setCanvasPhysics2D(int canvas_id, bool flag)
rc_canvas[canvas_id].physics2D.enabled = flag;
}
int rc_getSpriteCanvasPhysics(int canvas_id)
{
if(canvas_id > 0 && canvas_id < rc_canvas.size())
return rc_canvas[canvas_id].physics2D.enabled;
return 0;
}
void rc_setSpriteCanvasBlendMode(int canvas_id, int blend_mode)
{
if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return;
rc_canvas[canvas_id].spriteCanvasProperties.blend_mode = (irr::video::E_BLEND_OPERATION)blend_mode;
}
int rc_getSpriteCanvasBlendMode(int canvas_id)
{
if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return 0;
return (int)rc_canvas[canvas_id].spriteCanvasProperties.blend_mode;
}
void rc_setSpriteCanvasAntiAliasMode(int canvas_id, int aa_mode)
{
if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return;
rc_canvas[canvas_id].spriteCanvasProperties.anti_alias = (irr::video::E_ANTI_ALIASING_MODE)aa_mode;
}
int rc_getSpriteCanvasAntiAliasMode(int canvas_id)
{
if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return 0;
return (int)rc_canvas[canvas_id].spriteCanvasProperties.anti_alias;
}
void rc_setSpriteCanvasBilinearFilter(int canvas_id, bool flag)
{
if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return;
rc_canvas[canvas_id].spriteCanvasProperties.bilinear_filter = flag;
}
int rc_getSpriteCanvasBilinearFilter(int canvas_id)
{
if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return 0;
return (int)rc_canvas[canvas_id].spriteCanvasProperties.bilinear_filter;
}
int rc_setSpriteCanvasRenderPriority( int canvas_id, int priority, int order )
{
if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return 0;
rc_canvas[canvas_id].spriteCanvasProperties.priority = priority;
rc_canvas[canvas_id].spriteCanvasProperties.order = order;
return 1;
}
void rc_getSpriteCanvasRenderPriority( int canvas_id, double* priority, double* order )
{
if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return;
*priority = (double)rc_canvas[canvas_id].spriteCanvasProperties.priority;
*order = (double)rc_canvas[canvas_id].spriteCanvasProperties.order;
}
void rc_setCanvasVisible(int canvas_id, bool flag)
{
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) //canvas 0 is being excluded because its the back buffer
if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return;
if(rc_canvas[canvas_id].texture)

View File

@@ -325,6 +325,15 @@ struct rc_physicsWorld2D_obj
int positionIterations = 3; //how strongly to correct position
};
struct rc_spriteCanvasProperties
{
irr::video::E_BLEND_OPERATION blend_mode; // = irr::video::EBO_ADD;
bool bilinear_filter; // = false;
irr::video::E_ANTI_ALIASING_MODE anti_alias; // = irr::video::EAAM_OFF;
int priority;
int order;
};
#define RC_CANVAS_TYPE_2D 0
#define RC_CANVAS_TYPE_3D 1
#define RC_CANVAS_TYPE_SPRITE 2
@@ -332,6 +341,15 @@ struct rc_physicsWorld2D_obj
#define RC_PROJECTION_TYPE_ORTHOGRAPHIC 0
#define RC_PROJECTION_TYPE_PERSPECTIVE 1
#define RC_SPRITE_PRIORITY_NONE 0
#define RC_SPRITE_PRIORITY_LEAST_X 1
#define RC_SPRITE_PRIORITY_GREATEST_X 2
#define RC_SPRITE_PRIORITY_LEAST_Y 3
#define RC_SPRITE_PRIORITY_GREATEST_Y 4
#define RC_SPRITE_ORDER_ASCENDING 0
#define RC_SPRITE_ORDER_DESCENDING 1
struct rc_canvas_obj
{
irr::video::ITexture* texture;
@@ -363,6 +381,7 @@ struct rc_canvas_obj
rc_physicsWorld2D_obj physics2D;
irr::core::array<irr::s32> sprite_id;
rc_spriteCanvasProperties spriteCanvasProperties;
};
irr::core::array<rc_canvas_obj> rc_canvas;
@@ -809,6 +828,29 @@ void rc_setDriverMaterial()
}
void rc_setDriverMaterial_B(irr::video::E_BLEND_OPERATION op, irr::video::E_ANTI_ALIASING_MODE aa, bool bf)
{
if(!VideoDriver)
return;
irr::video::SMaterial material;
material.Lighting = false;
material.ZWriteEnable = irr::video::EZW_OFF;
material.ZBuffer = false;
material.BackfaceCulling = false;
material.TextureLayer[0].Texture = 0;
material.TextureLayer[0].BilinearFilter = bf;
material.MaterialTypeParam = irr::video::pack_textureBlendFunc(irr::video::EBF_SRC_ALPHA, irr::video::EBF_ONE_MINUS_SRC_ALPHA, irr::video::EMFN_MODULATE_1X, irr::video::EAS_TEXTURE | irr::video::EAS_VERTEX_COLOR);
material.BlendOperation = op;
//material.BlendOperation = irr::video::EBO_ADD;
material.AntiAliasing = aa;
material.MaterialType = irr::video::EMT_ONETEXTURE_BLEND;
VideoDriver->setMaterial(material);
}
void draw2DImage(irr::video::IVideoDriver *driver, irr::video::ITexture* texture, irr::core::rect<irr::s32> sourceRect, irr::core::position2d<irr::s32> position, irr::core::position2d<irr::s32> rotationPoint, irr::f32 rotation, irr::core::vector2df scale, bool useAlphaChannel, irr::video::SColor color, irr::core::vector2d<irr::f32> screenSize)
{
if(rc_active_canvas < 0 || rc_active_canvas >= rc_canvas.size())

349
rcbasic_runtime/rc_spritelib.h Executable file → Normal file
View File

@@ -1535,6 +1535,100 @@ Uint32 rc_getSpriteAlpha(int spr_id)
//-----------------------------------PHYSICS----------------------------------------------------------------------------------
void draw2DImage_sprite(int canvas_id, irr::video::IVideoDriver *driver, irr::video::ITexture* texture, irr::core::rect<irr::s32> sourceRect, irr::core::position2d<irr::s32> position, irr::core::position2d<irr::s32> rotationPoint, irr::f32 rotation, irr::core::vector2df scale, bool useAlphaChannel, irr::video::SColor color, irr::core::vector2d<irr::f32> screenSize)
{
if(canvas_id < 0 || canvas_id >= rc_canvas.size())
return;
// Store and clear the projection matrix
irr::core::matrix4 oldProjMat = driver->getTransform(irr::video::ETS_PROJECTION);
driver->setTransform(irr::video::ETS_PROJECTION,irr::core::matrix4());
// Store and clear the view matrix
irr::core::matrix4 oldViewMat = driver->getTransform(irr::video::ETS_VIEW);
driver->setTransform(irr::video::ETS_VIEW,irr::core::matrix4());
// Store and clear the world matrix
irr::core::matrix4 oldWorldMat = driver->getTransform(irr::video::ETS_WORLD);
driver->setTransform(irr::video::ETS_WORLD,irr::core::matrix4());
// Find horizontal and vertical axes after rotation
irr::f32 c = cos(-rotation*irr::core::DEGTORAD);
irr::f32 s = sin(-rotation*irr::core::DEGTORAD);
irr::core::vector2df horizontalAxis(c,s);
irr::core::vector2df verticalAxis(s,-c);
// First, we'll find the offset of the center and then where the center would be after rotation
irr::core::vector2df centerOffset(position.X+sourceRect.getWidth()/2.0f*scale.X-rotationPoint.X,position.Y+sourceRect.getHeight()/2.0f*scale.Y-rotationPoint.Y);
irr::core::vector2df center = centerOffset.X*horizontalAxis - centerOffset.Y*verticalAxis;
center.X += rotationPoint.X;
center.Y += rotationPoint.Y;
// Now find the corners based off the center
irr::core::vector2df cornerOffset(sourceRect.getWidth()*scale.X/2.0f,sourceRect.getHeight()*scale.Y/2.0f);
verticalAxis *= cornerOffset.Y;
horizontalAxis *= cornerOffset.X;
irr::core::vector2df corner[4];
corner[0] = center + verticalAxis - horizontalAxis;
corner[1] = center + verticalAxis + horizontalAxis;
corner[2] = center - verticalAxis - horizontalAxis;
corner[3] = center - verticalAxis + horizontalAxis;
// Find the uv coordinates of the sourceRect
irr::core::vector2df textureSize(texture->getSize().Width, texture->getSize().Height);
irr::core::vector2df uvCorner[4];
uvCorner[0] = irr::core::vector2df(sourceRect.UpperLeftCorner.X,sourceRect.UpperLeftCorner.Y);
uvCorner[1] = irr::core::vector2df(sourceRect.LowerRightCorner.X,sourceRect.UpperLeftCorner.Y);
uvCorner[2] = irr::core::vector2df(sourceRect.UpperLeftCorner.X,sourceRect.LowerRightCorner.Y);
uvCorner[3] = irr::core::vector2df(sourceRect.LowerRightCorner.X,sourceRect.LowerRightCorner.Y);
for (irr::s32 i = 0; i < 4; i++)
uvCorner[i] /= textureSize;
// Vertices for the image
irr::video::S3DVertex vertices[4];
irr::u16 indices[6] = { 0, 1, 2, 3 ,2 ,1 };
// Convert pixels to world coordinates
//irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height);
for (irr::s32 i = 0; i < 4; i++) {
vertices[i].Pos = irr::core::vector3df(((corner[i].X/screenSize.X)-0.5f)*2.0f,((corner[i].Y/screenSize.Y)-0.5f)*-2.0f,1);
vertices[i].TCoords = uvCorner[i];
vertices[i].Color = color;
}
// Create the material
// IMPORTANT: For irrlicht 1.8 and above you MUST ADD THIS LINE:
// material.BlendOperation = irr::video::EBO_ADD;
irr::video::SMaterial material;
material.Lighting = false;
material.ZWriteEnable = irr::video::EZW_OFF;
material.ZBuffer = false;
material.BackfaceCulling = false;
material.TextureLayer[0].Texture = texture;
material.TextureLayer[0].BilinearFilter = rc_canvas[canvas_id].spriteCanvasProperties.bilinear_filter;
material.MaterialTypeParam = irr::video::pack_textureBlendFunc(irr::video::EBF_SRC_ALPHA, irr::video::EBF_ONE_MINUS_SRC_ALPHA, irr::video::EMFN_MODULATE_1X, irr::video::EAS_TEXTURE | irr::video::EAS_VERTEX_COLOR);
material.BlendOperation = rc_canvas[canvas_id].spriteCanvasProperties.blend_mode;
material.AntiAliasing = rc_canvas[canvas_id].spriteCanvasProperties.anti_alias;
//material.BlendOperation = irr::video::EBO_ADD;
if (useAlphaChannel)
material.MaterialType = irr::video::EMT_ONETEXTURE_BLEND;
else
material.MaterialType = irr::video::EMT_SOLID;
driver->setMaterial(material);
driver->drawIndexedTriangleList(&vertices[0],4,&indices[0],2);
// Restore projection, world, and view matrices
driver->setTransform(irr::video::ETS_PROJECTION,oldProjMat);
driver->setTransform(irr::video::ETS_VIEW,oldViewMat);
driver->setTransform(irr::video::ETS_WORLD,oldWorldMat);
rc_setDriverMaterial();
}
//This function is called on each canvas on update
void drawSprites(int canvas_id)
@@ -1581,9 +1675,258 @@ void drawSprites(int canvas_id)
int offset_x = rc_canvas[canvas_id].offset.X;
int offset_y = rc_canvas[canvas_id].offset.Y;
for(int spr_index = 0; spr_index < rc_canvas[canvas_id].sprite_id.size(); spr_index++)
irr::core::array<irr::s32> sorted_sprites(rc_canvas[canvas_id].sprite_id.size());
sorted_sprites.clear();
for(int spr_index = 0; spr_index < rc_canvas[canvas_id].sprite_id.size(); spr_index++)
{
sorted_sprites.push_back(rc_canvas[canvas_id].sprite_id[spr_index]);
}
switch(rc_canvas[canvas_id].spriteCanvasProperties.priority)
{
case RC_SPRITE_PRIORITY_NONE:
{
}
break;
case RC_SPRITE_PRIORITY_LEAST_X:
{
if(rc_canvas[canvas_id].spriteCanvasProperties.order == RC_SPRITE_ORDER_ASCENDING)
{
for(int a = 0; a < sorted_sprites.size(); a++)
{
for(int b = (a + 1); b < sorted_sprites.size(); b++)
{
int a_index = sorted_sprites[a];
int b_index = sorted_sprites[b];
int a_off_x = rc_sprite[a_index].physics.offset_x;
a_off_x += rc_sprite[a_index].physics.user_offset_x;
int a_x = rc_sprite[a_index].physics.body->GetPosition().x - a_off_x;
int b_off_x = rc_sprite[b_index].physics.offset_x;
b_off_x += rc_sprite[b_index].physics.user_offset_x;
int b_x = rc_sprite[b_index].physics.body->GetPosition().x - b_off_x;
if(b_x < a_x)
{
sorted_sprites[a] = b_index;
sorted_sprites[b] = a_index;
}
}
}
}
else
{
for(int a = 0; a < sorted_sprites.size(); a++)
{
for(int b = (a + 1); b < sorted_sprites.size(); b++)
{
int a_index = sorted_sprites[a];
int b_index = sorted_sprites[b];
int a_off_x = rc_sprite[a_index].physics.offset_x;
a_off_x += rc_sprite[a_index].physics.user_offset_x;
int a_x = rc_sprite[a_index].physics.body->GetPosition().x - a_off_x;
int b_off_x = rc_sprite[b_index].physics.offset_x;
b_off_x += rc_sprite[b_index].physics.user_offset_x;
int b_x = rc_sprite[b_index].physics.body->GetPosition().x - b_off_x;
if(b_x > a_x)
{
sorted_sprites[a] = b_index;
sorted_sprites[b] = a_index;
}
}
}
}
}
break;
case RC_SPRITE_PRIORITY_GREATEST_X:
{
if(rc_canvas[canvas_id].spriteCanvasProperties.order == RC_SPRITE_ORDER_ASCENDING)
{
for(int a = 0; a < sorted_sprites.size(); a++)
{
for(int b = (a + 1); b < sorted_sprites.size(); b++)
{
int a_index = sorted_sprites[a];
int b_index = sorted_sprites[b];
int a_off_x = rc_sprite[a_index].physics.offset_x;
a_off_x += rc_sprite[a_index].physics.user_offset_x;
int a_x = rc_sprite[a_index].physics.body->GetPosition().x - a_off_x;
int b_off_x = rc_sprite[b_index].physics.offset_x;
b_off_x += rc_sprite[b_index].physics.user_offset_x;
int b_x = rc_sprite[b_index].physics.body->GetPosition().x - b_off_x;
a_x += (rc_sprite[a_index].frame_size.Width * rc_sprite[a_index].scale.X);
b_x += (rc_sprite[b_index].frame_size.Width * rc_sprite[b_index].scale.X);
if(b_x < a_x)
{
sorted_sprites[a] = b_index;
sorted_sprites[b] = a_index;
}
}
}
}
else
{
for(int a = 0; a < sorted_sprites.size(); a++)
{
for(int b = (a + 1); b < sorted_sprites.size(); b++)
{
int a_index = sorted_sprites[a];
int b_index = sorted_sprites[b];
int a_off_x = rc_sprite[a_index].physics.offset_x;
a_off_x += rc_sprite[a_index].physics.user_offset_x;
int a_x = rc_sprite[a_index].physics.body->GetPosition().x - a_off_x;
int b_off_x = rc_sprite[b_index].physics.offset_x;
b_off_x += rc_sprite[b_index].physics.user_offset_x;
int b_x = rc_sprite[b_index].physics.body->GetPosition().x - b_off_x;
a_x += (rc_sprite[a_index].frame_size.Width * rc_sprite[a_index].scale.X);
b_x += (rc_sprite[b_index].frame_size.Width * rc_sprite[b_index].scale.X);
if(b_x > a_x)
{
sorted_sprites[a] = b_index;
sorted_sprites[b] = a_index;
}
}
}
}
}
break;
case RC_SPRITE_PRIORITY_LEAST_Y:
{
if(rc_canvas[canvas_id].spriteCanvasProperties.order == RC_SPRITE_ORDER_ASCENDING)
{
for(int a = 0; a < sorted_sprites.size(); a++)
{
for(int b = (a + 1); b < sorted_sprites.size(); b++)
{
int a_index = sorted_sprites[a];
int b_index = sorted_sprites[b];
int a_off_y = rc_sprite[a_index].physics.offset_y;
a_off_y += rc_sprite[a_index].physics.user_offset_y;
int a_y = rc_sprite[a_index].physics.body->GetPosition().y - a_off_y;
int b_off_y = rc_sprite[b_index].physics.offset_y;
b_off_y += rc_sprite[b_index].physics.user_offset_y;
int b_y = rc_sprite[b_index].physics.body->GetPosition().y - b_off_y;
if(b_y < a_y)
{
sorted_sprites[a] = b_index;
sorted_sprites[b] = a_index;
}
}
}
}
else
{
for(int a = 0; a < sorted_sprites.size(); a++)
{
for(int b = (a + 1); b < sorted_sprites.size(); b++)
{
int a_index = sorted_sprites[a];
int b_index = sorted_sprites[b];
int a_off_y = rc_sprite[a_index].physics.offset_y;
a_off_y += rc_sprite[a_index].physics.user_offset_y;
int a_y = rc_sprite[a_index].physics.body->GetPosition().y - a_off_y;
int b_off_y = rc_sprite[b_index].physics.offset_y;
b_off_y += rc_sprite[b_index].physics.user_offset_y;
int b_y = rc_sprite[b_index].physics.body->GetPosition().y - b_off_y;
if(b_y > a_y)
{
sorted_sprites[a] = b_index;
sorted_sprites[b] = a_index;
}
}
}
}
}
break;
case RC_SPRITE_PRIORITY_GREATEST_Y:
{
if(rc_canvas[canvas_id].spriteCanvasProperties.order == RC_SPRITE_ORDER_ASCENDING)
{
for(int a = 0; a < sorted_sprites.size(); a++)
{
for(int b = (a + 1); b < sorted_sprites.size(); b++)
{
int a_index = sorted_sprites[a];
int b_index = sorted_sprites[b];
int a_off_y = rc_sprite[a_index].physics.offset_y;
a_off_y += rc_sprite[a_index].physics.user_offset_y;
int a_y = rc_sprite[a_index].physics.body->GetPosition().y - a_off_y;
int b_off_y = rc_sprite[b_index].physics.offset_y;
b_off_y += rc_sprite[b_index].physics.user_offset_y;
int b_y = rc_sprite[b_index].physics.body->GetPosition().y - b_off_y;
a_y += (rc_sprite[a_index].frame_size.Height * rc_sprite[a_index].scale.Y);
b_y += (rc_sprite[b_index].frame_size.Height * rc_sprite[b_index].scale.Y);
if(b_y < a_y)
{
sorted_sprites[a] = b_index;
sorted_sprites[b] = a_index;
}
}
}
}
else
{
for(int a = 0; a < sorted_sprites.size(); a++)
{
for(int b = (a + 1); b < sorted_sprites.size(); b++)
{
int a_index = sorted_sprites[a];
int b_index = sorted_sprites[b];
int a_off_y = rc_sprite[a_index].physics.offset_y;
a_off_y += rc_sprite[a_index].physics.user_offset_y;
int a_y = rc_sprite[a_index].physics.body->GetPosition().y - a_off_y;
int b_off_y = rc_sprite[b_index].physics.offset_y;
b_off_y += rc_sprite[b_index].physics.user_offset_y;
int b_y = rc_sprite[b_index].physics.body->GetPosition().y - b_off_y;
a_y += (rc_sprite[a_index].frame_size.Height * rc_sprite[a_index].scale.Y);
b_y += (rc_sprite[b_index].frame_size.Height * rc_sprite[b_index].scale.Y);
if(b_y > a_y)
{
sorted_sprites[a] = b_index;
sorted_sprites[b] = a_index;
}
}
}
}
}
break;
}
for(int spr_index = 0; spr_index < sorted_sprites.size(); spr_index++)
{
int spr_id = rc_canvas[canvas_id].sprite_id[spr_index];
int spr_id = sorted_sprites[spr_index];
rc_sprite2D_obj* sprite = &rc_sprite[spr_id];
//std::cout << "debug info: " << canvas_id << " --> " << spr_index << " id = " << sprite->id << " anim_size = " << sprite->animation.size() << std::endl; continue;
//if(!sprite->visible)
@@ -1723,7 +2066,7 @@ void drawSprites(int canvas_id)
sprite->color_mod.getBlue());
//I don't want to draw an image that doesn't exists. Thats just crazy.
draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize);
draw2DImage_sprite(canvas_id, VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize);
}
//Must set back to canvas 0 (the backbuffer) before returning

View File

@@ -45,6 +45,33 @@
<Add directory="/home/n00b/Projects/steamworks_sdk_162/sdk/redistributable_bin/linux64" />
</Linker>
<Unit filename="../../an8-parser/an8parser.h" />
<Unit filename="../../irrBullet/include/irrBullet.h" />
<Unit filename="../../irrBullet/include/irrBulletBoxShape.h" />
<Unit filename="../../irrBullet/include/irrBulletBvhTriangleMeshShape.h" />
<Unit filename="../../irrBullet/include/irrBulletCapsuleShape.h" />
<Unit filename="../../irrBullet/include/irrBulletCollisionCallBackInformation.h" />
<Unit filename="../../irrBullet/include/irrBulletCollisionObject.h" />
<Unit filename="../../irrBullet/include/irrBulletCollisionObjectAffector.h" />
<Unit filename="../../irrBullet/include/irrBulletCollisionObjectAffectorAttract.h" />
<Unit filename="../../irrBullet/include/irrBulletCollisionObjectAffectorDelete.h" />
<Unit filename="../../irrBullet/include/irrBulletCollisionShape.h" />
<Unit filename="../../irrBullet/include/irrBulletCommon.h" />
<Unit filename="../../irrBullet/include/irrBulletCompileConfig.h" />
<Unit filename="../../irrBullet/include/irrBulletConeShape.h" />
<Unit filename="../../irrBullet/include/irrBulletConvexHullShape.h" />
<Unit filename="../../irrBullet/include/irrBulletCylinderShape.h" />
<Unit filename="../../irrBullet/include/irrBulletGImpactMeshShape.h" />
<Unit filename="../../irrBullet/include/irrBulletGhostObject.h" />
<Unit filename="../../irrBullet/include/irrBulletKinematicCharacterController.h" />
<Unit filename="../../irrBullet/include/irrBulletLiquidBody.h" />
<Unit filename="../../irrBullet/include/irrBulletMotionState.h" />
<Unit filename="../../irrBullet/include/irrBulletPhysicsDebug.h" />
<Unit filename="../../irrBullet/include/irrBulletRayCastVehicle.h" />
<Unit filename="../../irrBullet/include/irrBulletRigidBody.h" />
<Unit filename="../../irrBullet/include/irrBulletSoftBody.h" />
<Unit filename="../../irrBullet/include/irrBulletSphereShape.h" />
<Unit filename="../../irrBullet/include/irrBulletTriangleMeshShape.h" />
<Unit filename="../../irrBullet/include/irrBulletWorld.h" />
<Unit filename="../../irrBullet/src/irrBullet.cpp" />
<Unit filename="../../irrBullet/src/irrBulletBoxShape.cpp" />
<Unit filename="../../irrBullet/src/irrBulletBvhTriangleMeshShape.cpp" />

View File

@@ -1,5 +1,5 @@
# depslib dependency file v1.0
1755890851 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp
1756697836 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp
"rc_os_defines.h"
<emscripten.h>
<sys/param.h>
@@ -33,10 +33,10 @@
<irrtheora.h>
"rc_func130_cases.h"
1755890765 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h
1756697837 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h
<TargetConditionals.h>
1754605794 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h
1758301650 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h
1748042868 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_stdlib.h
"rc_os_defines.h"
@@ -1248,7 +1248,7 @@
1734372058 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.h
<irrlicht.h>
1754344132 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h
1758334476 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h
"SDL.h"
<SDL2/SDL.h>
<irrlicht.h>
@@ -1272,7 +1272,7 @@
"rc_joints.h"
<irrtheora.h>
1752028340 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h
1758303818 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h
"SDL.h"
"btBulletDynamicsCommon.h"
"BulletSoftBody/btSoftRigidDynamicsWorld.h"
@@ -2145,7 +2145,8 @@
<BulletCollision/Gimpact/btGImpactShape.h>
"irrBulletTriangleMeshShape.h"
1724469097 /home/n00b/Projects/irrBullet/include/irrBulletTriangleMeshShape.h
1756629046 /home/n00b/Projects/irrBullet/include/irrBulletTriangleMeshShape.h
<ITerrainSceneNode.h>
"irrBulletCollisionShape.h"
<BulletCollision/CollisionShapes/btTriangleMesh.h>
"irrBulletCommon.h"
@@ -2276,7 +2277,7 @@
"rc_gfx_core.h"
<irrtheora.h>
1754605794 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h
1758301650 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h
1724469097 source:/home/n00b/Projects/irrBullet/src/irrBullet.cpp
"irrBullet.h"
@@ -2287,10 +2288,11 @@
"btBulletCollisionCommon.h"
"irrBulletBoxShape.h"
1724469097 source:/home/n00b/Projects/irrBullet/src/irrBulletBvhTriangleMeshShape.cpp
1756630993 source:/home/n00b/Projects/irrBullet/src/irrBulletBvhTriangleMeshShape.cpp
<btBulletDynamicsCommon.h>
<btBulletCollisionCommon.h>
"irrBulletBvhTriangleMeshShape.h"
<iostream>
1724627004 source:/home/n00b/Projects/irrBullet/src/irrBulletCapsuleShape.cpp
<ISceneNode.h>
@@ -2442,12 +2444,15 @@
<btBulletCollisionCommon.h>
"irrBulletSphereShape.h"
1724469097 source:/home/n00b/Projects/irrBullet/src/irrBulletTriangleMeshShape.cpp
1756658396 source:/home/n00b/Projects/irrBullet/src/irrBulletTriangleMeshShape.cpp
<ITerrainSceneNode.h>
<IMesh.h>
<IMeshBuffer.h>
<CDynamicMeshBuffer.h>
"btBulletDynamicsCommon.h"
"btBulletCollisionCommon.h"
"irrBulletTriangleMeshShape.h"
<iostream>
1748037413 source:/home/n00b/Projects/irrBullet/src/irrBulletWorld.cpp
<IrrlichtDevice.h>
@@ -2494,7 +2499,7 @@
<SDL.h>
<SDL2/SDL.h>
1752028340 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_spritelib.h
1758334384 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_spritelib.h
"SDL.h"
<SDL2/SDL.h>
"rc_sprite2D.h"
@@ -2527,7 +2532,7 @@
1752028340 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_base_actor.h
"ProjectiveTextures.h"
1755897401 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_actor_material.h
1755925625 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_actor_material.h
"rc_fx_materials.h"
1752028340 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_actor_animation.h
@@ -2559,7 +2564,7 @@
<vector>
<algorithm>
1755890976 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_fx_materials.h
1755925625 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_fx_materials.h
<irrlicht.h>
"CShader.h"
"rc_fx_shaders.h"

View File

@@ -2,214 +2,9 @@
<CodeBlocks_layout_file>
<FileVersion major="1" minor="0" />
<ActiveTarget name="Debug" />
<File name="rc_tilemap.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="rc_physics3D_base.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="243" topLine="26" />
</Cursor>
</File>
<File name="rc_video.h" open="0" top="0" tabpos="21" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="169" topLine="6" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletcommon.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="924" topLine="6" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletRigidBody.cpp" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2248" topLine="493" />
</Cursor>
</File>
<File name="rc_actor_material.h" open="1" top="0" tabpos="20" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="751" topLine="1317" />
</Cursor>
</File>
<File name="gui_freetype_font.cpp" open="0" top="0" tabpos="24" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="792" topLine="0" />
</Cursor>
</File>
<File name="main.cpp" open="1" top="0" tabpos="23" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="130086" topLine="4447" />
</Cursor>
</File>
<File name="CShader.h" open="1" top="0" tabpos="21" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1204" topLine="34" />
</Cursor>
</File>
<File name="rc_matrix.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="34977" topLine="1288" />
</Cursor>
</File>
<File name="rc_os_defines.h" open="1" top="0" tabpos="25" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="91" topLine="0" />
</Cursor>
</File>
<File name="rc_gfx_core.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="23585" topLine="785" />
</Cursor>
</File>
<File name="rc_actor_animation.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="9592" topLine="289" />
</Cursor>
</File>
<File name="rc_mesh.h" open="0" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1830" topLine="71" />
</Cursor>
</File>
<File name="rc_fx_materials.h" open="1" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="921" topLine="589" />
</Cursor>
</File>
<File name="rc_spritelib.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="47918" topLine="1604" />
</Cursor>
</File>
<File name="rc_audio.h" open="0" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="6531" topLine="311" />
</Cursor>
</File>
<File name="rc_scene.h" open="0" top="0" tabpos="30" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1298" topLine="28" />
</Cursor>
</File>
<File name="rc_steam_lib.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1942" topLine="71" />
</Cursor>
</File>
<File name="rc_stdlib.h" open="1" top="0" tabpos="24" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1212" topLine="51" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletCollisionCallBackInformation.cpp" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1253" topLine="0" />
</Cursor>
</File>
<File name="rc_actor_physics.h" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
<File name="rc_media.h" open="0" top="0" tabpos="17" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="72119" topLine="1937" />
</Cursor>
</File>
<File name="rc_base_actor.h" open="1" top="0" tabpos="27" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="37687" topLine="1366" />
</Cursor>
</File>
<File name="rc_fx_shaders.h" open="1" top="0" tabpos="19" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="178" topLine="772" />
</Cursor>
</File>
<File name="rc_defines.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="190390" topLine="2847" />
</Cursor>
</File>
<File name="rc_constraint.h" open="0" top="0" tabpos="15" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="8391" topLine="231" />
</Cursor>
</File>
<File name="rc_font.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
<File name="rc_joints.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="310" topLine="0" />
</Cursor>
</File>
<File name="rc_net.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3769" topLine="186" />
</Cursor>
</File>
<File name="rc_particles.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="6262" topLine="615" />
</Cursor>
</File>
<File name="rc_func130_cases.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="84330" topLine="2045" />
</Cursor>
</File>
<File name="rc_gfx.h" open="1" top="1" tabpos="26" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="41480" topLine="234" />
</Cursor>
</File>
<File name="ProjectiveTextures.h" open="0" top="0" tabpos="34" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="110" topLine="0" />
</Cursor>
</File>
<File name="rc_gfx3D.h" open="0" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="565" topLine="0" />
</Cursor>
</File>
<File name="rc_sprite2D.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="558" topLine="13" />
</Cursor>
</File>
<File name="rc_test.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="115" topLine="0" />
</Cursor>
</File>
<File name="gui_freetype_font.h" open="0" top="0" tabpos="23" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="183" topLine="0" />
</Cursor>
</File>
<File name="rc_geometry.h" open="0" top="0" tabpos="20" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="20919" topLine="652" />
</Cursor>
</File>
<File name="rc_steam.cpp" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1410" topLine="0" />
</Cursor>
</File>
<File name="rc_tilelib.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="6694" topLine="319" />
</Cursor>
</File>
<File name="camera.h" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4758" topLine="241" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletWorld.cpp" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="18445" topLine="18" />
<Cursor1 position="3283" topLine="66" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBullet.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -217,39 +12,88 @@
<Cursor1 position="0" topLine="7" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletCollisionObject.cpp" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="rc_func130_cases.h" open="1" top="0" tabpos="15" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="322" topLine="4" />
<Cursor1 position="22965" topLine="627" />
</Cursor>
</File>
<File name="rc_windowclose.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="rc_defines.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="23822" topLine="643" />
<Cursor1 position="190390" topLine="2847" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletGhostObject.cpp" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="rc_audio.h" open="0" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1861" topLine="27" />
<Cursor1 position="6531" topLine="311" />
</Cursor>
</File>
<File name="CShader.cpp" open="1" top="0" tabpos="22" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="../../irrBullet/src/irrBulletRigidBody.cpp" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1032" topLine="31" />
<Cursor1 position="2248" topLine="493" />
</Cursor>
</File>
<File name="rc_physics3D_base.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="rc_stdlib.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3283" topLine="66" />
<Cursor1 position="1212" topLine="51" />
</Cursor>
</File>
<File name="rc_sprite_physics.h" open="0" top="0" tabpos="38" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="rc_gfx_core.h" open="1" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="16031" topLine="523" />
<Cursor1 position="11667" topLine="204" />
</Cursor>
<Folding>
<Collapse line="104" />
</Folding>
</File>
<File name="../../irrBullet/src/irrBulletBvhTriangleMeshShape.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="680" topLine="19" />
</Cursor>
</File>
<File name="rc_steam.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="rc_actor_animation.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="854" topLine="0" />
<Cursor1 position="9592" topLine="289" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletTriangleMeshShape.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5626" topLine="48" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletCollisionCallBackInformation.cpp" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1253" topLine="0" />
</Cursor>
</File>
<File name="rc_spritelib.h" open="1" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="60528" topLine="1252" />
</Cursor>
<Folding>
<Collapse line="464" />
<Collapse line="487" />
<Collapse line="498" />
<Collapse line="640" />
<Collapse line="651" />
<Collapse line="685" />
<Collapse line="702" />
<Collapse line="761" />
<Collapse line="780" />
<Collapse line="862" />
<Collapse line="938" />
<Collapse line="1016" />
<Collapse line="1068" />
<Collapse line="1080" />
<Collapse line="1091" />
<Collapse line="1102" />
<Collapse line="1114" />
<Collapse line="1125" />
<Collapse line="1143" />
</Folding>
</File>
<File name="rc_actor_physics.h" open="1" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletSoftBody.cpp" open="0" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -262,4 +106,204 @@
<Cursor1 position="348" topLine="166" />
</Cursor>
</File>
<File name="rc_tilelib.h" open="1" top="0" tabpos="17" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="10085" topLine="360" />
</Cursor>
</File>
<File name="rc_tilemap.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="243" topLine="26" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletGhostObject.cpp" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1861" topLine="27" />
</Cursor>
</File>
<File name="rc_fx_materials.h" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="921" topLine="589" />
</Cursor>
</File>
<File name="rc_steam.cpp" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1410" topLine="0" />
</Cursor>
</File>
<File name="rc_geometry.h" open="0" top="0" tabpos="20" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="20919" topLine="652" />
</Cursor>
</File>
<File name="rc_sprite_physics.h" open="0" top="0" tabpos="38" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="16031" topLine="523" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletWorld.cpp" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="18445" topLine="18" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletCollisionObject.cpp" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="322" topLine="4" />
</Cursor>
</File>
<File name="gui_freetype_font.cpp" open="0" top="0" tabpos="24" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="792" topLine="0" />
</Cursor>
</File>
<File name="rc_steam_lib.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1942" topLine="71" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletcommon.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="924" topLine="6" />
</Cursor>
</File>
<File name="rc_net.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3769" topLine="186" />
</Cursor>
</File>
<File name="camera.h" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4758" topLine="241" />
</Cursor>
</File>
<File name="ProjectiveTextures.h" open="0" top="0" tabpos="34" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="110" topLine="0" />
</Cursor>
</File>
<File name="CShader.h" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1204" topLine="34" />
</Cursor>
</File>
<File name="rc_media.h" open="0" top="0" tabpos="17" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="72119" topLine="1937" />
</Cursor>
</File>
<File name="rc_steam.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="854" topLine="0" />
</Cursor>
</File>
<File name="rc_joints.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="310" topLine="0" />
</Cursor>
</File>
<File name="CShader.cpp" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1032" topLine="31" />
</Cursor>
</File>
<File name="rc_sprite2D.h" open="1" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="558" topLine="2" />
</Cursor>
</File>
<File name="rc_font.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
<File name="main.cpp" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="132313" topLine="4388" />
</Cursor>
</File>
<File name="rc_mesh.h" open="0" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1830" topLine="71" />
</Cursor>
</File>
<File name="rc_os_defines.h" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="93" topLine="0" />
</Cursor>
</File>
<File name="gui_freetype_font.h" open="0" top="0" tabpos="23" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="183" topLine="0" />
</Cursor>
</File>
<File name="rc_gfx.h" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="27507" topLine="1044" />
</Cursor>
</File>
<File name="rc_actor_material.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="751" topLine="1310" />
</Cursor>
</File>
<File name="../../irrBullet/include/irrBulletTriangleMeshShape.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="366" topLine="0" />
</Cursor>
</File>
<File name="rc_matrix.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="34977" topLine="1288" />
</Cursor>
</File>
<File name="rc_windowclose.h" open="1" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="22534" topLine="595" />
</Cursor>
</File>
<File name="rc_constraint.h" open="0" top="0" tabpos="15" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="8391" topLine="231" />
</Cursor>
</File>
<File name="rc_base_actor.h" open="1" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4146" topLine="113" />
</Cursor>
</File>
<File name="rc_video.h" open="0" top="0" tabpos="21" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="169" topLine="6" />
</Cursor>
</File>
<File name="rc_test.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="115" topLine="0" />
</Cursor>
</File>
<File name="rc_fx_shaders.h" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="178" topLine="769" />
</Cursor>
</File>
<File name="../../irrBullet/include/irrBulletBvhTriangleMeshShape.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1301" topLine="20" />
</Cursor>
</File>
<File name="rc_particles.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="6262" topLine="615" />
</Cursor>
</File>
<File name="rc_gfx3D.h" open="0" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="565" topLine="0" />
</Cursor>
</File>
<File name="rc_scene.h" open="0" top="0" tabpos="30" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1298" topLine="28" />
</Cursor>
</File>
</CodeBlocks_layout_file>