Added command to reload shaders at runtime, added support for shared scripts to Manifest, lights are now loadable from MapParser, misc changes.

This commit is contained in:
2020-03-24 09:51:20 -05:00
parent 2ad1385fb4
commit 578c00673d
18 changed files with 201 additions and 39 deletions

View File

@@ -0,0 +1,62 @@
class IMICFPS
class Commands
class ReloadShaderCommand < Command
def group
:reload_shader
end
def command
:reload_shader
end
def handle(arguments, console)
if arguments.size > 2
console.stdin("to many arguments for #{Style.highlight("#{command}")}, got #{Style.error(arguments.size)} expected #{Style.notice(1)}.")
return
end
shader = nil
stdout = $stdout
$stdout = StringIO.new
case arguments.size
when 0
console.stdin( usage )
return
when 1
name = arguments.first
shader = Shader.new(
name: name,
includes_dir: "shaders/include",
vertex: "shaders/vertex/#{name}.glsl",
fragment: "shaders/fragment/#{name}.glsl"
)
when 2
vertex = arguments.first
fragment = arguments.last
shader = Shader.new(
name: vertex,
includes_dir: "shaders/include",
vertex: "shaders/vertex/#{vertex}.glsl",
fragment: "shaders/fragment/#{fragment}.glsl"
)
end
string = $stdout.string
if shader.compiled?
console.stdin("#{Style.notice("Successfully reloaded shader")}: #{shader.name}")
else
console.stdin("#{Style.error("Failed to reload #{shader.name}")}")
console.stdin(string)
end
ensure
$stdout = stdout
end
def usage
"#{Style.highlight(command)} #{Style.notice("vertex_name [fragment_name]")}"
end
end
end
end