mirror of
https://github.com/cyberarm/i-mic-fps.git
synced 2025-12-16 08:02:36 +00:00
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:
62
lib/ui/commands/reload_shader_command.rb
Normal file
62
lib/ui/commands/reload_shader_command.rb
Normal 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
|
||||
Reference in New Issue
Block a user