[add] Added CubeProgram.

This commit is contained in:
2019-10-11 00:00:00 +00:00
parent 361678a94f
commit 58e88e9eb4
4 changed files with 254 additions and 8 deletions

View File

@@ -1,24 +1,46 @@
/// License: MIT
module sj.ProgramSet;
import std.meta,
std.typecons;
static import sjplayer = sjplayer.ProgramSet;
import sj.CubeProgram;
///
class ProgramSet {
public:
alias Programs = Tuple!(
CubeProgram,
);
///
this() {
for_players_ = new sjplayer.ProgramSet;
for_player_ = new sjplayer.ProgramSet;
foreach (ref p; programs_) {
p = new typeof(p);
}
}
~this() {
for_players_.destroy();
for_player_.destroy();
foreach (p; programs_) {
p.destroy();
}
}
///
@property sjplayer.ProgramSet forPlayers() {
return for_players_;
T Get(T)() {
enum index = staticIndexOf!(T, Programs.Types);
static if (index >= 0) {
return programs_[index];
} else {
return for_player_.Get!T;
}
}
private:
sjplayer.ProgramSet for_players_;
sjplayer.ProgramSet for_player_;
Programs programs_;
}