Resources.lua: Difference between revisions
No edit summary |
|||
| (3 intermediate revisions by one other user not shown) | |||
| Line 4: | Line 4: | ||
==Purpose== | ==Purpose== | ||
This file is used by a game to reference textures for use in [[CEG|Custom Explosion Generators]], as well as various default explosions and other engine textures such as default trees and water etc. Maps have a corresponding file, <code>resources_map.lua</code> which | This file is used by a game to reference textures for use in [[CEG|Custom Explosion Generators]], as well as various default explosions and other engine textures such as default trees and water etc. Maps have a corresponding file, <code>resources_map.lua</code> which behaves in the same way. | ||
==Source== | |||
The engine source code which parses the data from this file is viewable here: | |||
* {{sourcelink|file=rts/Rendering/ProjectileDrawer.cpp}} (smoke, groundfx & projectiletextures) <code>resources_map.lua</code> is only read here. | |||
{{sourcelink|file=rts/Rendering/GroundDecalHandler.cpp}} (scars) | * {{sourcelink|file=rts/Rendering/GroundDecalHandler.cpp}} (scars) | ||
{{sourcelink|file=rts/Rendering/Env/AdvTreeGenerator.cpp}} (trees) | * {{sourcelink|file=rts/Rendering/Env/AdvTreeGenerator.cpp}} (trees) | ||
{{sourcelink|file=rts/Map/MapInfo.cpp}} (caustics & maps) | * {{sourcelink|file=rts/Map/MapInfo.cpp}} (caustics & maps) | ||
==Details== | ==Details== | ||
| Line 35: | Line 31: | ||
The following example (which is becoming a [http://en.wikipedia.org/wiki/De_facto_standard de facto standard]) sets out the engine default textures, and recursively adds any textures from the game's <code>Bitmaps/projectileTextures/</code> and <code>Bitmaps/groundFX/</code> directories, respectively. It will ignore any directories created by [http://en.wikipedia.org/wiki/Apache_Subversion SVN], and can be easily edited to filter out [http://en.wikipedia.org/wiki/Git_(software) git] or any other version control software. | The following example (which is becoming a [http://en.wikipedia.org/wiki/De_facto_standard de facto standard]) sets out the engine default textures, and recursively adds any textures from the game's <code>Bitmaps/projectileTextures/</code> and <code>Bitmaps/groundFX/</code> directories, respectively. It will ignore any directories created by [http://en.wikipedia.org/wiki/Apache_Subversion SVN], and can be easily edited to filter out [http://en.wikipedia.org/wiki/Git_(software) git] or any other version control software. | ||
<pre> | |||
local resources = { | local resources = { | ||
graphics = { | graphics = { | ||
| Line 102: | Line 98: | ||
return resources | return resources | ||
</pre | </pre> | ||
===External=== | ===External=== | ||
{{sourcelink|file=cont/base/springcontent/gamedata/resources.lua}} - Engine base content <code>resources.lua</code> | {{sourcelink|file=cont/base/springcontent/gamedata/resources.lua}} - Engine base content <code>resources.lua</code> | ||
[[Category:Gamedata]] | [[Category:Gamedata]] | ||
Latest revision as of 11:25, 2 December 2018
Location
resources.lua is a file in the Gamedata/ directory of a Spring Game.
resources_map.lua is a file in the Gamedata/ directory of a Spring Map.
Purpose
This file is used by a game to reference textures for use in Custom Explosion Generators, as well as various default explosions and other engine textures such as default trees and water etc. Maps have a corresponding file, resources_map.lua which behaves in the same way.
Source
The engine source code which parses the data from this file is viewable here:
- rts/Rendering/ProjectileDrawer.cpp (smoke, groundfx & projectiletextures)
resources_map.luais only read here.
- rts/Rendering/GroundDecalHandler.cpp (scars)
- rts/Rendering/Env/AdvTreeGenerator.cpp (trees)
- rts/Map/MapInfo.cpp (caustics & maps)
Details
The engine loads textures from seven subtables within the graphics subtable of the returned resources table. Certain tables are automatically added by the engine if a game is not overriding them, they are numerical arrays whereas all others are key-value associative arrays. Engine defaults which are required to be present are included in the #Automatic example below.
caustics- Textures used with bumpmapped water. Automatically added by the engine.smoke- Textures used for engine default smoke. Automatically added by the engine.scars- Textures used for the burn scars left on the map by weapon explosions. Automatically added by the engine.trees- Textures for engine default trees.maps- Base textures in case a map does not provide it's own.groundfx- Game or Map specific textures for CSimpleGroundFlash CEG's as well as engine default explosion groundflash.projectiletextures- Game or Map specific textures for the other CEG-Classes as well as engine defaults. This is the only table that is read fromresources_map.lua
Example
Automatic
The following example (which is becoming a de facto standard) sets out the engine default textures, and recursively adds any textures from the game's Bitmaps/projectileTextures/ and Bitmaps/groundFX/ directories, respectively. It will ignore any directories created by SVN, and can be easily edited to filter out git or any other version control software.
local resources = {
graphics = {
-- Spring Defaults
trees = {
bark = 'Bark.bmp',
leaf = 'bleaf.bmp',
gran1 = 'gran.bmp',
gran2 = 'gran2.bmp',
birch1 = 'birch1.bmp',
birch2 = 'birch2.bmp',
birch3 = 'birch3.bmp',
},
maps = {
detailtex = 'detailtex2.bmp',
watertex = 'ocean.jpg',
},
groundfx = {
groundflash = 'groundflash.tga',
groundring = 'groundring.tga',
seismic = 'circles.tga',
},
projectiletextures = {
circularthingy = 'circularthingy.tga',
laserend = 'laserend.tga',
laserfalloff = 'laserfalloff.tga',
randdots = 'randdots.tga',
smoketrail = 'smoketrail.tga',
wake = 'wake.tga',
flare = 'flare.tga',
explo = 'explo.tga',
explofade = 'explofade.tga',
heatcloud = 'explo.tga',
flame = 'flame.tga',
muzzleside = 'muzzleside.tga',
muzzlefront = 'muzzlefront.tga',
largebeam = 'largelaserfalloff.tga',
},
}
}
local VFSUtils = VFS.Include('gamedata/VFSUtils.lua')
local function AutoAdd(subDir, map, filter)
local dirList = RecursiveFileSearch("bitmaps/" .. subDir)
for _, fullPath in ipairs(dirList) do
local path, key, ext = fullPath:match("bitmaps/(.*/(.*)%.(.*))")
if not fullPath:match("/%.svn") then
local subTable = resources["graphics"][subDir] or {}
resources["graphics"][subDir] = subTable
if not filter or filter == ext then
if not map then
table.insert(subTable, path)
else -- a mapped subtable
subTable[key] = path
end
end
end
end
end
-- Add mod projectiletextures and groundfx
AutoAdd("projectiletextures", true)
AutoAdd("groundfx", true)
return resources
External
cont/base/springcontent/gamedata/resources.lua - Engine base content resources.lua