Elevate Engine 1
Loading...
Searching...
No Matches
Elevate::WwiseFileDataSource Class Reference

#include <WwiseFileDataSource.h>

Inheritance diagram for Elevate::WwiseFileDataSource:
WwiseDataSource

Public Member Functions

 WwiseFileDataSource (const std::string projectPath)
 
 ~WwiseFileDataSource ()=default
 
virtual void InitializeSource () override
 
virtual void RefreshSource () override
 
- Public Member Functions inherited from WwiseDataSource
virtual std::weak_ptr< WwiseItemGetItems () const
 
virtual void GetItemsOfType ()
 

Protected Member Functions

void ProcessRootFolder (const std::filesystem::path &rootFolder)
 
void ProcessWorkUnit (WwiseItemPtr parent, const std::filesystem::path &workUnitPath)
 
void ProcessNode (WwiseItemPtr parent, flxml::xml_node< char > *node)
 
WwiseItemPtr ProcessBus (WwiseItemPtr parent, flxml::xml_node< char > *node)
 
WwiseItemPtr ProcessAuxBus (WwiseItemPtr parent, flxml::xml_node< char > *node)
 
WwiseItemPtr ProcessEvent (WwiseItemPtr parent, flxml::xml_node< char > *node)
 
WwiseItemPtr ProcessSoundBank (WwiseItemPtr parent, flxml::xml_node< char > *node)
 
WwiseItemPtr ProcessStateGroup (WwiseItemPtr parent, flxml::xml_node< char > *node)
 
WwiseItemPtr ProcessState (WwiseItemPtr parent, flxml::xml_node< char > *node)
 
WwiseItemPtr ProcessSwitchGroup (WwiseItemPtr parent, flxml::xml_node< char > *node)
 
WwiseItemPtr ProcessSwitch (WwiseItemPtr parent, flxml::xml_node< char > *node)
 
bool IsValidDirectory (std::string directoryName)
 
- Protected Member Functions inherited from WwiseDataSource
 WwiseDataSource ()=default
 

Additional Inherited Members

- Protected Attributes inherited from WwiseDataSource
std::shared_ptr< WwiseItemm_treeRoot
 

Detailed Description

Definition at line 14 of file WwiseFileDataSource.h.

Constructor & Destructor Documentation

◆ WwiseFileDataSource()

Elevate::WwiseFileDataSource::WwiseFileDataSource ( const std::string  projectPath)
inline

Definition at line 17 of file WwiseFileDataSource.h.

18 : m_projectPath(projectPath) {
19 }

◆ ~WwiseFileDataSource()

Elevate::WwiseFileDataSource::~WwiseFileDataSource ( )
default

Member Function Documentation

◆ InitializeSource()

void Elevate::WwiseFileDataSource::InitializeSource ( )
overridevirtual

Implements WwiseDataSource.

Definition at line 263 of file WwiseFileDataSource.cpp.

264 {
266 }
virtual void RefreshSource() override

◆ IsValidDirectory()

bool Elevate::WwiseFileDataSource::IsValidDirectory ( std::string  directoryName)
protected

Definition at line 228 of file WwiseFileDataSource.cpp.

229 {
230 constexpr std::array<std::string_view, 6> validDirectories = {
231 "Busses", "Events", "SoundBanks", "States", "Switches"
232 };
233
234 for (const auto& name : validDirectories)
235 {
236 if (name == directoryName)
237 {
238 return true;
239 }
240 }
241 return false;
242 }

◆ ProcessAuxBus()

WwiseItemPtr Elevate::WwiseFileDataSource::ProcessAuxBus ( WwiseItemPtr  parent,
flxml::xml_node< char > *  node 
)
protected

Definition at line 193 of file WwiseFileDataSource.cpp.

194 {
195 return WwiseAuxBus::Create();
196 }
static WwiseAuxBusPtr Create()
Definition WwiseItem.h:180

◆ ProcessBus()

WwiseItemPtr Elevate::WwiseFileDataSource::ProcessBus ( WwiseItemPtr  parent,
flxml::xml_node< char > *  node 
)
protected

Definition at line 188 of file WwiseFileDataSource.cpp.

189 {
190 return WwiseBus::Create();
191 }
static WwiseBusPtr Create()
Definition WwiseItem.h:169

◆ ProcessEvent()

WwiseItemPtr Elevate::WwiseFileDataSource::ProcessEvent ( WwiseItemPtr  parent,
flxml::xml_node< char > *  node 
)
protected

Definition at line 198 of file WwiseFileDataSource.cpp.

199 {
200 return WwiseEvent::Create();
201 }
static WwiseEventPtr Create()
Definition WwiseItem.h:95

◆ ProcessNode()

void Elevate::WwiseFileDataSource::ProcessNode ( WwiseItemPtr  parent,
flxml::xml_node< char > *  node 
)
protected

Definition at line 120 of file WwiseFileDataSource.cpp.

121 {
122 WwiseType type = GetTypeFromName(std::string(node->name()));
123
124 WwiseItemPtr item = nullptr;
125 switch (type)
126 {
127 case WwiseType::Bus:
128 item = ProcessBus(parent, node);
129 break;
131 item = ProcessAuxBus(parent, node);
132 break;
133 case WwiseType::Event:
134 item = ProcessEvent(parent, node);
135 break;
137 item = ProcessSoundBank(parent, node);
138 break;
140 item = ProcessStateGroup(parent, node);
141 break;
142 case WwiseType::State:
143 item = ProcessState(parent, node);
144 break;
146 item = ProcessSwitchGroup(parent, node);
147 break;
149 item = ProcessSwitch(parent, node);
150 break;
151 default:
152 return;
153 }
154
155 if (item)
156 {
157 item->IsOnDisk = true;
158
159 auto optName = node->first_attribute("Name");
160 auto optId = node->first_attribute("ID");
161 auto optShortId = node->first_attribute("ShortID");
162
163 if (optName)
164 {
165 item->Name = optName->value();
166 }
167 if (optId)
168 {
169 item->GUID = optId->value();
170 }
171 if (optShortId)
172 {
173 item->ShortID = std::stoi(std::string(optShortId->value()));
174 }
175 parent->AddChildren(item);
176
177 if (item->IsDirectory())
178 {
179 auto optChildrenList = node->first_node("ChildrenList");
180 if (optChildrenList)
181 {
182 ProcessNode(item, optChildrenList.get());
183 }
184 }
185 }
186 }
WwiseType
Definition WwiseItem.h:10
WwiseItemPtr ProcessSwitch(WwiseItemPtr parent, flxml::xml_node< char > *node)
WwiseItemPtr ProcessSwitchGroup(WwiseItemPtr parent, flxml::xml_node< char > *node)
WwiseItemPtr ProcessEvent(WwiseItemPtr parent, flxml::xml_node< char > *node)
WwiseItemPtr ProcessSoundBank(WwiseItemPtr parent, flxml::xml_node< char > *node)
WwiseItemPtr ProcessStateGroup(WwiseItemPtr parent, flxml::xml_node< char > *node)
WwiseItemPtr ProcessAuxBus(WwiseItemPtr parent, flxml::xml_node< char > *node)
void ProcessNode(WwiseItemPtr parent, flxml::xml_node< char > *node)
WwiseItemPtr ProcessState(WwiseItemPtr parent, flxml::xml_node< char > *node)
WwiseItemPtr ProcessBus(WwiseItemPtr parent, flxml::xml_node< char > *node)

◆ ProcessRootFolder()

void Elevate::WwiseFileDataSource::ProcessRootFolder ( const std::filesystem::path &  rootFolder)
protected

Definition at line 45 of file WwiseFileDataSource.cpp.

46 {
47 // todo avoid checking useless folders like cache and others
48 if (!fs::is_directory(rootFolder) || !IsValidDirectory(rootFolder.stem().string()))
49 {
50 return; // We do not have a directory
51 }
52
53 WwiseItemPtr folderItem = WwiseItem::Create();
54 folderItem->Name = rootFolder.filename().string();
55 folderItem->Type = WwiseType::RootDirectory;
56 folderItem->IsOnDisk = true;
57 m_treeRoot->AddChildren(folderItem);
58
59 for (const auto& entry : fs::directory_iterator(rootFolder))
60 {
61 ProcessWorkUnit(folderItem, entry);
62 }
63 }
void ProcessWorkUnit(WwiseItemPtr parent, const std::filesystem::path &workUnitPath)
bool IsValidDirectory(std::string directoryName)
std::shared_ptr< WwiseItem > m_treeRoot
static WwiseItemPtr Create()
Definition WwiseItem.cpp:3

◆ ProcessSoundBank()

WwiseItemPtr Elevate::WwiseFileDataSource::ProcessSoundBank ( WwiseItemPtr  parent,
flxml::xml_node< char > *  node 
)
protected

Definition at line 203 of file WwiseFileDataSource.cpp.

204 {
205 return WwiseSoundbank::Create();
206 }
static WwiseSoundbankPtr Create()
Definition WwiseItem.h:78

◆ ProcessState()

WwiseItemPtr Elevate::WwiseFileDataSource::ProcessState ( WwiseItemPtr  parent,
flxml::xml_node< char > *  node 
)
protected

Definition at line 213 of file WwiseFileDataSource.cpp.

214 {
215 return WwiseState::Create();
216 }
static WwiseStatePtr Create()
Definition WwiseItem.h:143

◆ ProcessStateGroup()

WwiseItemPtr Elevate::WwiseFileDataSource::ProcessStateGroup ( WwiseItemPtr  parent,
flxml::xml_node< char > *  node 
)
protected

Definition at line 208 of file WwiseFileDataSource.cpp.

209 {
211 }
static WwiseStateGroupPtr Create()
Definition WwiseItem.h:130

◆ ProcessSwitch()

WwiseItemPtr Elevate::WwiseFileDataSource::ProcessSwitch ( WwiseItemPtr  parent,
flxml::xml_node< char > *  node 
)
protected

Definition at line 223 of file WwiseFileDataSource.cpp.

224 {
225 return WwiseSwitch::Create();
226 }
static WwiseSwitchPtr Create()
Definition WwiseItem.h:119

◆ ProcessSwitchGroup()

WwiseItemPtr Elevate::WwiseFileDataSource::ProcessSwitchGroup ( WwiseItemPtr  parent,
flxml::xml_node< char > *  node 
)
protected

Definition at line 218 of file WwiseFileDataSource.cpp.

219 {
221 }
static WwiseSwitchGroupPtr Create()
Definition WwiseItem.h:106

◆ ProcessWorkUnit()

void Elevate::WwiseFileDataSource::ProcessWorkUnit ( WwiseItemPtr  parent,
const std::filesystem::path &  workUnitPath 
)
protected

Definition at line 65 of file WwiseFileDataSource.cpp.

66 {
67 if (workUnitPath.extension() != WWISE_WORKUNIT_EXTENSION)
68 {
69 return;
70 }
71
72 rapidxml::
73 file<> workUnitFile(workUnitPath.string().c_str());
75 doc.parse<0>(workUnitFile.data());
76
77 // Get the second node as the first one is the xml
78 // todo check the document type to check if really workunit
79 auto optDocNode = doc.first_node();
80 if (!optDocNode) return;
81 flxml::xml_node<char>* docNode = optDocNode.get();
82
83 auto optTypeNode = docNode->first_node();
84 if (!optTypeNode) return;
85 flxml::xml_node<char>* typeNode = optTypeNode.get();
86
87 auto optWorkUnitNode = typeNode->first_node();
88 if (!optWorkUnitNode) return;
89 flxml::xml_node<char>* workUnitNode = optWorkUnitNode.get();
90
91 auto optIdAttr = workUnitNode->first_attribute("ID");
92
93 WwiseItemPtr workUnitItem = WwiseItem::Create();
94 workUnitItem->Name = workUnitPath.stem().string();
95 workUnitItem->Type = WwiseType::WorkUnit;
96 workUnitItem->IsOnDisk = true;
97
98 if (optIdAttr)
99 {
100 workUnitItem->GUID = optIdAttr.get()->value();
101 }
102
103 parent->AddChildren(workUnitItem);
104
105 auto optChildrenListNode = workUnitNode->first_node();
106 if (optWorkUnitNode)
107 {
108 for (auto child = optWorkUnitNode->first_node(); child; child = child->next_sibling())
109 {
110 if (child)
111 {
112 ProcessNode(workUnitItem, child.get());
113 }
114 }
115 }
116
117 doc.clear();
118 }
#define WWISE_WORKUNIT_EXTENSION

◆ RefreshSource()

void Elevate::WwiseFileDataSource::RefreshSource ( )
overridevirtual

Implements WwiseDataSource.

Definition at line 23 of file WwiseFileDataSource.cpp.

24 {
25 EE_CORE_INFO("Getting Wwise Project Info from Files...");
26
27 m_treeRoot.reset(new WwiseItem());
29 m_treeRoot->IsOnDisk = true;
30
31 fs::path basePath = m_projectPath;
32 if (!fs::is_directory(basePath))
33 {
34 EE_CORE_ERROR("ERROR (WwiseFileDataSource::RefreshSource() : The provided project path is not a valid directory : {}", basePath.string());
35 }
36
37 for (const auto& entry : fs::directory_iterator(basePath))
38 {
39 ProcessRootFolder(entry);
40 }
41
42 EE_CORE_TRACE("Wwise Project File Analysed.");
43 }
void ProcessRootFolder(const std::filesystem::path &rootFolder)

The documentation for this class was generated from the following files: