XJ music engine  1.9.6
In-game runtime engine for XJ music.
Engine.h
Go to the documentation of this file.
1 // Copyright (c) XJ Music Inc. (https://xjmusic.com) All Rights Reserved.
2 
3 #ifndef XJMUSIC_ENGINE_H
4 #define XJMUSIC_ENGINE_H
5 
6 #include "work/WorkManager.h"
7 
8 #include <string>
9 
10 namespace XJ {
11 
12  class Engine {
13  WorkSettings settings;
14  std::unique_ptr<SegmentEntityStore> store;
15  std::unique_ptr<ContentEntityStore> projectContent;
16  std::unique_ptr<ContentEntityStore> templateContent;
17  std::unique_ptr<WorkManager> work;
18  std::filesystem::path buildPathPrefix;
19 
20  public:
30  explicit Engine(
31  const std::optional<std::string>& pathToProjectFile,
32  std::optional<Fabricator::ControlMode> controlMode,
33  std::optional<int> craftAheadSeconds,
34  std::optional<int> dubAheadSeconds,
35  std::optional<int> deadlineSeconds,
36  std::optional<int> persistenceWindowSeconds);
37 
46  void start(const std::optional<std::string> &templateIdentifier);
47 
51  void finish(bool cancelled) const;
52 
58  [[nodiscard]] std::vector<AudioScheduleEvent> RunCycle(unsigned long long atChainMicros) const;
59 
63  [[nodiscard]] SegmentEntityStore *getSegmentStore() const;
64 
70  [[nodiscard]] ContentEntityStore *getProjectContent() const;
71 
76  [[nodiscard]] ContentEntityStore *getTemplateContent() const;
77 
81  [[nodiscard]] WorkState getWorkState() const;
82 
86  [[nodiscard]] std::optional<MemeTaxonomy> getMemeTaxonomy() const;
87 
91  [[nodiscard]] std::vector<const Program *> getAllMacroPrograms() const;
92 
99  void doOverrideMacro(const Program *macroProgram) const;
100 
107  void doOverrideMemes(const std::set<std::string> &memes) const;
108 
114  void setIntensityOverride(std::optional<float> intensity) const;
115 
119  std::filesystem::path getBuildPath();
120 
125  [[nodiscard]] WorkSettings getSettings() const;
126 
131 
132 private:
136  void loadProjectContent(const std::basic_string<char>& pathToProjectFile);
137  };
138 
139 }// namespace XJ
140 
141 #endif//XJMUSIC_ENGINE_H
Definition: ContentEntityStore.h:41
Definition: Engine.h:12
void start(const std::optional< std::string > &templateIdentifier)
Definition: Engine.cpp:37
void doOverrideMemes(const std::set< std::string > &memes) const
Definition: Engine.cpp:111
ContentEntityStore * getTemplateContent() const
Definition: Engine.cpp:80
void finish(bool cancelled) const
Definition: Engine.cpp:56
SegmentEntityStore * getSegmentStore() const
Definition: Engine.cpp:70
std::filesystem::path getBuildPath()
Definition: Engine.cpp:125
std::vector< const Program * > getAllMacroPrograms() const
Definition: Engine.cpp:97
WorkSettings getSettings() const
Definition: Engine.cpp:130
void doOverrideMacro(const Program *macroProgram) const
Definition: Engine.cpp:104
std::optional< MemeTaxonomy > getMemeTaxonomy() const
Definition: Engine.cpp:92
void setIntensityOverride(std::optional< float > intensity) const
Definition: Engine.cpp:118
Engine(const std::optional< std::string > &pathToProjectFile, std::optional< Fabricator::ControlMode > controlMode, std::optional< int > craftAheadSeconds, std::optional< int > dubAheadSeconds, std::optional< int > deadlineSeconds, std::optional< int > persistenceWindowSeconds)
Definition: Engine.cpp:10
std::vector< AudioScheduleEvent > RunCycle(unsigned long long atChainMicros) const
Definition: Engine.cpp:63
ContentEntityStore * getProjectContent() const
Definition: Engine.cpp:75
WorkState getWorkState() const
Definition: Engine.cpp:85
Definition: Program.h:14
Definition: SegmentEntityStore.h:43
Definition: WorkSettings.h:14
Definition: ActiveAudio.h:11
WorkState
Definition: WorkState.h:10