Version
menu

Wwise SDK 2023.1.18
ISourceControl.h
Go to the documentation of this file.
1 /*******************************************************************************
2 The content of this file includes portions of the AUDIOKINETIC Wwise Technology
3 released in source code form as part of the SDK installer package.
4 
5 Commercial License Usage
6 
7 Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
8 may use this file in accordance with the end user license agreement provided
9 with the software or, alternatively, in accordance with the terms contained in a
10 written agreement between you and Audiokinetic Inc.
11 
12 Apache License Usage
13 
14 Alternatively, this file may be used under the Apache License, Version 2.0 (the
15 "Apache License"); you may not use this file except in compliance with the
16 Apache License. You may obtain a copy of the Apache License at
17 http://www.apache.org/licenses/LICENSE-2.0.
18 
19 Unless required by applicable law or agreed to in writing, software distributed
20 under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
21 OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
22 the specific language governing permissions and limitations under the License.
23 
24  Copyright (c) 2025 Audiokinetic Inc.
25 *******************************************************************************/
26 
27 /// \file
28 /// Wwise source control plug-in interface, used to implement the source control plug-in.
29 
30 #ifndef _AK_WWISE_ISOURCECONTROL_H
31 #define _AK_WWISE_ISOURCECONTROL_H
32 
33 // Include the header file that defines the BSTR type.
34 #ifdef AK_WIN
35 #include
36 #endif
37 
40 
41 // Audiokinetic namespace
42 namespace AK
43 {
44  // Audiokinetic Wwise namespace
45  namespace Wwise
46  {
47  /// This class contains static constants that can be useful to the plug-in.
49  {
50  public:
51  /// Maximum length that a work unit name can be
52  static const unsigned int s_uiMaxWorkUnitName = 128;
53  /// Invalid operation ID (MUST NOT BE USED as an operation ID in OperationListItem)
54  static const DWORD s_dwInvalidOperationID = (DWORD)-1;
55  };
56 
57  /// Wwise source control plug-in interface. This is the interface that the plug-in must implement. It contains
58  /// all the necessary functions to perform source control operations and manage the Wwise source control UI.
59  /// \akwarning
60  /// The functions in this interface are not thread-safe, unless stated otherwise.
61  /// \endakwarning
62  /// \sa
63  /// - \ref source_control_dll_creation_object_information
65  {
66  public:
67 
68  /// \name Enumeration types
69  //@{
70 
71  /// Operation result. Some interface functions need to return the result of the operation. This is used
72  /// by Wwise to manage various errors.
74  {
80  };
81 
82  /// Menu type. The operation list may vary depending on the location where a menu containing operations
83  /// needs to be displayed.
85  {
90  };
91 
92  /// Pre/PostCreateOrModify Operation flags. These flags represent the operation(s) performed on files.
94  {
97  };
98 
99  /// The operation's effect on the file(s) involved.
101  {
104  };
105 
106  //@}
107 
108  /// The base interface for operations that return information to Wwise
110  {
111  public:
112  /// Returns OperationResult_Succeed or OperationResult_Failed
114 
115  /// Implementations should call "delete this;".
116  virtual void Destroy() = 0;
117  };
118 
119  /// The result returned by DoOperation for a Move, Rename or Delete operation.
120  /// An instance of this class is allocated by the plugin and freed by Wwise.
121  /// The operation ID must be identified by :
122  /// PluginInfo::m_dwMoveCommandID, PluginInfo::m_dwMoveNoUICommandID,
123  /// PluginInfo::m_dwRenameCommandID or PluginInfo::m_dwRenameNoUICommandID
124  /// PluginInfo::m_dwDeleteCommandID or PluginInfo::m_dwDeleteNoUICommandID
126  {
127  public:
128  /// Return the move source and destination for the file at index in_uiIndex
129  virtual void GetMovedFile(
130  unsigned int in_uiIndex, ///= 0 and
131  LPWSTR out_szFrom, ///
132  LPWSTR out_szTo, ///
133  unsigned int in_uiArraySize ///
134  ) = 0;
135 
136  /// Return the successful file at index in_uiIndex
137  virtual void GetFile(
138  unsigned int in_uiIndex, ///= 0 and
139  LPWSTR out_szPath, ///
140  unsigned int in_uiArraySize ///
141  ) = 0;
142 
143  /// Returns how many files were moved during the operation
144  virtual unsigned int GetFileCount() = 0;
145  };
146 
147  /// 'Filename to Status' map item. This is the type used in the AK::Wwise::ISourceControl::FilenameToStatusMap
148  /// SourceControlContainers::IAkMap template parameter structure.
150  {
151  BSTR m_bstrStatus; ///
152  BSTR m_bstrOwner; ///
153  };
154 
155  /// Operation list item. This is the type used in the AK::Wwise::ISourceControl::OperationList SourceControlContainers::IAkList template class.
157  {
158  DWORD m_dwOperationID; ///
159  bool m_bEnabled; ///
160  };
161 
162  /// FilenameToIconMap item. This is the type used to display the file status icon and tool tip text
163  /// in the Project Explorer.
165  {
166  HICON m_hIcon; ///
167  BSTR m_bstrToolTip; ///
168  };
169 
170  /// \name List types
171  //@{
172 
173  /// String List. When Wwise needs to pass a file name list, it gives this container to the plug-in.
174  /// \sa
175  /// - AK::Wwise::SourceControlContainers::IAkList
177 
178  /// Boolean List. When Wwise needs to pass a boolean list, it gives this container to the plug-in.
179  /// \sa
180  /// - AK::Wwise::SourceControlContainers::IAkList
182 
183  /// Plug-in ID list. When Wwise needs to have the list of plug-ins that a DLL contains, it requests
184  /// the list of plug-in IDs using a function exported by the DLL.
186 
187  /// When Wwise needs to have the list of operations that are available in a certain context, it requests
188  /// the list of operations using this list type. The contexts are determined by the AK::Wwise::ISourceControl::OperationMenuType
189  /// enumeration type.
190  /// \sa
191  /// - AK::Wwise::ISourceControl::OperationListItem
192  /// - AK::Wwise::SourceControlContainers::IAkList
194 
195  //@}
196 
197  /// \name Map types
198  //@{
199 
200  /// The AK:Wwise::ISourceControl interface offers a way to display custom icons in the Project Explorer. This map
201  /// type must be filled in by the plug-in when Wwise gives it a file name list. CStringW objects are used as keys, and are associated
202  /// to FilenameToIconMapItem objects. The HICON m_hIcon member will be NULL when there is no icon associated with the file.
203  /// \sa
204  /// - AK::Wwise::SourceControlContainers::IAkMap
206 
207  /// When the File Manager needs to fill in the 'Status' and 'Owners' columns of work units or source lists,
208  /// the plug-in needs to fill in this map with the corresponding text. File names are used as keys, and are associated
209  /// to the text to be displayed in the 'Status' and 'Owners' columns.
210  /// \sa
211  /// - AK::Wwise::ISourceControl::FilenameToStatusMapItem
212  /// - AK::Wwise::SourceControlContainers::IAkMap
214 
215  //@}
216 
218 
219  /// Plug-in information structure. This structure gives a simple overview of the plug-in's capabilities.
221  {
222  public:
223  BSTR m_bstrName; ///
224  unsigned int m_uiVersion; ///
225 
230  DWORD m_dwMoveCommandID; ///
231  DWORD m_dwAddCommandID; ///
234  DWORD m_dwDiffCommandID; ///
243  };
244 
245  /// This function is called when the plug-in is initialized after its creation.
246  virtual void Init(
247  AK::Wwise::ISourceControlUtilities* in_pUtilities, ///
248  ///
249  bool in_bAutoAccept ///
250  ) = 0;
251 
252  /// This function is called when the plug-in is terminated before its destruction.
253  virtual void Term() = 0;
254 
255  /// This function destroys the plug-in. The implementation is generally '{ delete this; }'.
256  virtual void Destroy() = 0;
257 
258  /// This method connects the source control plugin
259  virtual OperationResult Connect(const IConnectParameterMap & parameterMap) = 0;
260 
261  /// This method disconnects the source control plugin
263 
264  /// This function is called when the user clicks the 'Config...' button in the Project Settings.
265  /// \return True if the user accepts the configuration, False otherwise
266  /// \sa
267  /// - AK::Wwise::ISourceControl::PluginInfo::m_bShowConfigDlgAvailable
268  virtual bool ShowConfigDlg() = 0;
269 
270  /// Gets the operation list to be displayed in a menu.
271  /// \return The result of the operation
273  OperationMenuType in_menuType, ///
274  const StringList& in_rFilenameList, ///
275  OperationList& out_rOperationList ///
276  ) = 0;
277 
278  /// Gets the operation name to display in user interface
279  // \return A mask of all the applicable OperationEffect enum values
280  virtual LPCWSTR GetOperationName(
281  DWORD in_dwOperationID ///
282  ) = 0;
283 
284  /// Gets the operation effect on the file(s) involved in the operation.
285  // \return A mask of all the applicable OperationEffect enum values
286  virtual DWORD GetOperationEffect(
287  DWORD in_dwOperationID ///
288  ) = 0;
289 
290  /// Gets the text to be displayed in the 'Status' and 'Owners' columns of the File Manager.
291  /// \return The result of the operation
293  const StringList& in_rFilenameList, ///
294  FilenameToStatusMap& out_rFileStatusMap,///
295  DWORD in_dwTimeoutMs = INFINITE ///
296  ) = 0;
297 
298  /// In a similar way to AK::Wwise::ISourceControl::GetFileStatus(), this function gets the icons to be displayed in the
299  /// Project Explorer.
300  /// \return The result of the operation
302  const StringList& in_rFilenameList, ///
303  FilenameToIconMap& out_rFileIconsMap, ///
304  DWORD in_dwTimeoutMs = INFINITE ///
305  ) = 0;
306 
307  /// Combines GetFileStatus() and GetFileStatusIcons() to get the source control file icons and the text to be displayed in the 'Status' and 'Owners'
308  /// columns of the File Manager.
309  /// \return The result of the operation
311  const StringList& in_rFilenameList, ///
312  FilenameToStatusMap& out_rFileStatusMap,///
313  FilenameToIconMap& out_rFileIconsMap, ///
314  DWORD in_dwTimeoutMs = INFINITE ///
315  ) = 0;
316 
317  /// Gets the files that should be displayed in the File Manager file list, but that are not on the local disk.
318  /// Deleted files that need to be submitted to the server are an example of implementation.
319  /// \return The result of the operation
321  const StringList& in_rDirectoryList, ///
322  StringList& out_rFilenameList ///
323  ) = 0;
324 
325  /// Performs an operation on files. This function is called when the user clicks on a source control operation in a menu.
326  /// The returned IOperationResult must be allocated on the heap and freed by the caller using IOperationResult::Destroy.
327  /// For Rename and Move operations in No-User-Interface mode, in_pTargetFilenameList contains the list of target names are known in advance.
328  [[nodiscard]] virtual IOperationResult* DoOperation(
329  DWORD in_dwOperationID, ///
330  const StringList& in_rFilenameList, ///
331  const StringList* in_pTargetFilenameList = NULL ///
332  ) = 0;
333 
334  /// This method is called when the user adds files to the project (Work Units or Sources), saves the project,
335  /// or triggers any call to a Wwise operation that could alter source control files. It is called before Wwise performs
336  /// the operation and is always followed by a call to PostCreateOrModify.
337  /// \return The result of the operation
339  const StringList& in_rFilenameList, ///
340  CreateOrModifyOperation in_eOperation, ///
341  bool& out_rContinue ///
342  ) = 0;
343 
344  /// This method is called when the user adds files to the project (Work Units or Sources), saves the project,
345  /// or triggers any call to a Wwise operation that could alter source control files. It is called after Wwise performs
346  /// the operation and is always preceded by a call to PreCreateOrModify.
347  /// \return The result of the operation
349  const StringList& in_rFilenameList, ///
350  CreateOrModifyOperation in_eOperation, ///
351  bool& out_rContinue ///
352  ) = 0;
353 
354  /// This methods returns the list files that can be committed
355  /// \return The result of the operation
357  DWORD in_dwOperationID, ///
358  const StringList& in_rFilenameList, ///
359  StringList& out_rFilenameList, ///
360  FilenameToStatusMap& out_rFileStatusMap ///
361  ) = 0;
362 
363  /// This methods returns whether the specified operation can be applied to each file.
364  /// \return The result of the operation
366  DWORD in_dwOperationID, ///
367  const StringList& in_rFilenameList, ///
368  BooleanList& out_rFileStatusList ///
369  ) = 0;
370 
371  /// This methods returns a boolean for each file, indicating whether the file is under source control.
372  /// \return The result of the operation
374  const StringList& in_rFilenameList, ///
375  BooleanList& out_rFileStatusList ///
376  ) = 0;
377 
378  //@}
379 
380  /// \name Exported functions prototypes
381  //@{
382 
383  /// Gets the plug-in ID list contained by the DLL file.
384  typedef void (__stdcall* GetSourceControlIDListFuncPtr)(
385  PluginIDList& out_rPluginIDList ///
386  );
387 
388  /// Gets the AK::Wwise::ISourceControl::PluginInfo class associated with a given plug-in ID.
389  typedef void (__stdcall* GetSourceControlPluginInfoFuncPtr)(
390  const GUID& in_rguidPluginID, ///
391  PluginInfo& out_rPluginInfo ///
392  );
393 
394  /// Gets an instance of a plug-in.
395  /// \return A pointer to an AK::Wwise::ISourceControl instance
397  const GUID& in_guidPluginID ///
398  );
399  };
400  }
401 }
402 
403 #endif // _AK_WWISE_ISOURCECONTROL_H
virtual AK::Wwise::ISourceControl::OperationResult GetFileStatusIcons(const StringList &in_rFilenameList, FilenameToIconMap &out_rFileIconsMap, DWORD in_dwTimeoutMs=INFINITE)=0
BSTR m_bstrStatus
Text displayed in the File Manager's 'Status' column.
@ OperationMenuType_Explorer
The menu is displayed in the Project Explorer.
@ OperationEffect_LocalContentModification
The operation will modify the local content of the file.
Audiokinetic namespace.
virtual AK::Wwise::ISourceControl::OperationResult GetMissingFilesInDirectories(const StringList &in_rDirectoryList, StringList &out_rFilenameList)=0
DWORD m_dwRenameCommandID
Indicates the command ID for the Rename command, s_dwInvalidOperationID (-1) if not supported.
SourceControlContainers::IAkList StringList
HICON m_hIcon
A handle to an icon that will be displayed in the Project Explorer.
DWORD m_dwAddCommandID
Indicates the command ID for the Add command, s_dwInvalidOperationID (-1) if not supported.
@ OperationMenuType_Sources
The menu is displayed in the File Manager's 'Sources' tab.
BSTR m_bstrToolTip
The tool tip text that will be displayed when the user mouses over the icon.
virtual DWORD GetOperationEffect(DWORD in_dwOperationID)=0
Gets the operation effect on the file(s) involved in the operation.
virtual void Init(AK::Wwise::ISourceControlUtilities *in_pUtilities, bool in_bAutoAccept)=0
This function is called when the plug-in is initialized after its creation.
BSTR m_bstrOwner
Text displayed in the File Manager's 'Owners' column.
@ OperationResult_TimedOut
The operation timed out.
SourceControlContainers::IAkList BooleanList
SourceControlContainers::IAkMap FilenameToStatusMap
bool m_bShowConfigDlgAvailable
Used to enable/disable the 'Config...' button in the Project Settings.
DWORD m_dwDeleteNoUICommandID
Indicates the command ID for the Delete command, showing no User Interface, s_dwInvalidOperationID (-...
@ OperationMenuType_WorkUnits
The menu is displayed in the File Manager's 'Work Units' tab.
virtual void Destroy()=0
This function destroys the plug-in. The implementation is generally '{ delete this; }'.
DWORD m_dwDiffCommandID
Indicates the command ID for the Diff command, s_dwInvalidOperationID (-1) if not supported.
@ OperationResult_Succeed
The operation succeeded.
@ OperationResult_NotImplemented
The operation is not implemented.
virtual AK::Wwise::ISourceControl::OperationResult GetFileStatus(const StringList &in_rFilenameList, FilenameToStatusMap &out_rFileStatusMap, DWORD in_dwTimeoutMs=INFINITE)=0
Wwise source control containers interface that is used to pass data containers (list and map) in para...
#define NULL
Definition: AkTypes.h:46
This class contains static constants that can be useful to the plug-in.
virtual IOperationResult * DoOperation(DWORD in_dwOperationID, const StringList &in_rFilenameList, const StringList *in_pTargetFilenameList=NULL)=0
@ OperationMenuType_Generated
The menu is displayed in the File Manager's 'Generated' tab.
virtual AK::Wwise::ISourceControl::OperationResult PreCreateOrModify(const StringList &in_rFilenameList, CreateOrModifyOperation in_eOperation, bool &out_rContinue)=0
DWORD m_dwRenameNoUICommandID
Indicates the command ID for the Rename command, showing no User Interface, s_dwInvalidOperationID (-...
virtual LPCWSTR GetOperationName(DWORD in_dwOperationID)=0
Gets the operation name to display in user interface.
virtual void Destroy()=0
Implementations should call "delete this;".
virtual void GetMovedFile(unsigned int in_uiIndex, LPWSTR out_szFrom, LPWSTR out_szTo, unsigned int in_uiArraySize)=0
Return the move source and destination for the file at index in_uiIndex.
DWORD m_dwCommitCommandID
Indicates the command ID for the Commit/Submit/Checkin command, s_dwInvalidOperationID (-1) if not su...
virtual OperationResult Disconnect()=0
This method disconnects the source control plugin.
DWORD m_dwAddNoUICommandID
Indicates the command ID for the Add command, showing no User Interface, s_dwInvalidOperationID (-1) ...
Operation list item. This is the type used in the AK::Wwise::ISourceControl::OperationList SourceCont...
DWORD m_dwUpdateCommandID
Indicates the command ID for the Update command, s_dwInvalidOperationID (-1) if not supported.
OperationEffect
The operation's effect on the file(s) involved.
DWORD m_dwCheckOutCommandID
Indicates the command ID for the CheckOut command, s_dwInvalidOperationID (-1) if not supported.
virtual AK::Wwise::ISourceControl::OperationResult GetFileStatusAndIcons(const StringList &in_rFilenameList, FilenameToStatusMap &out_rFileStatusMap, FilenameToIconMap &out_rFileIconsMap, DWORD in_dwTimeoutMs=INFINITE)=0
ISourceControl *(__stdcall * GetSourceControlInstanceFuncPtr)(const GUID &in_guidPluginID)
DWORD m_dwCheckOutNoUICommandID
Indicates the command ID for the CheckOut command, showing no User Interface, s_dwInvalidOperationID ...
DWORD m_dwMoveNoUICommandID
Indicates the command ID for the Move command, showing no User Interface, s_dwInvalidOperationID (-1)...
@ CreateOrModifyOperation_Create
Files will be created during the operation.
virtual unsigned int GetFileCount()=0
Returns how many files were moved during the operation.
@ OperationResult_Failed
The operation failed.
virtual OperationResult Connect(const IConnectParameterMap &parameterMap)=0
This method connects the source control plugin.
DWORD m_dwMoveCommandID
Indicates the command ID for the Move command, s_dwInvalidOperationID (-1) if not supported.
SourceControlContainers::IAkList PluginIDList
DWORD m_dwDeleteCommandID
Indicates the command ID for the Delete command, s_dwInvalidOperationID (-1) if not supported.
virtual AK::Wwise::ISourceControl::OperationResult CheckFilesForOperation(DWORD in_dwOperationID, const StringList &in_rFilenameList, BooleanList &out_rFileStatusList)=0
BSTR m_bstrName
The name of the plug-in displayed in the Project Settings plug-in list.
virtual OperationResult GetOperationResult()=0
Returns OperationResult_Succeed or OperationResult_Failed.
SourceControlContainers::IAkMap FilenameToIconMap
@ OperationResult_Cancelled
The operation was cancelled.
bool m_bEnabled
True: the operation is enabled in the menu, False: the operation is disabled (grayed out) in the menu...
unsigned int m_uiVersion
The current version of the plug-in.
virtual AK::Wwise::ISourceControl::OperationResult GetFilesForOperation(DWORD in_dwOperationID, const StringList &in_rFilenameList, StringList &out_rFilenameList, FilenameToStatusMap &out_rFileStatusMap)=0
@ CreateOrModifyOperation_Modify
Files will be modified during the operation.
CreateOrModifyOperation
Pre/PostCreateOrModify Operation flags. These flags represent the operation(s) performed on files.
DWORD m_dwRevertNoUICommandID
Indicates the command ID for the Revert command, showing no User Interface, s_dwInvalidOperationID (-...
static const DWORD s_dwInvalidOperationID
Invalid operation ID (MUST NOT BE USED as an operation ID in OperationListItem)
virtual AK::Wwise::ISourceControl::OperationResult PostCreateOrModify(const StringList &in_rFilenameList, CreateOrModifyOperation in_eOperation, bool &out_rContinue)=0
Plug-in information structure. This structure gives a simple overview of the plug-in's capabilities.
@ OperationEffect_ServerContentModification
The operation will modify the remote content (on the server) of the file.
SourceControlContainers::IAkList OperationList
virtual AK::Wwise::ISourceControl::OperationResult GetOperationList(OperationMenuType in_menuType, const StringList &in_rFilenameList, OperationList &out_rOperationList)=0
virtual AK::Wwise::ISourceControl::OperationResult FilesUnderSourceControl(const StringList &in_rFilenameList, BooleanList &out_rFileStatusList)=0
bool m_bStatusIconAvailable
Indicates that the plug-in supports Project Explorer custom icons.
SourceControlContainers::IAkMap IConnectParameterMap
The base interface for operations that return information to Wwise.
static const unsigned int s_uiMaxWorkUnitName
Maximum length that a work unit name can be.
virtual void Term()=0
This function is called when the plug-in is terminated before its destruction.
virtual void GetFile(unsigned int in_uiIndex, LPWSTR out_szPath, unsigned int in_uiArraySize)=0
Return the successful file at index in_uiIndex.
void(__stdcall * GetSourceControlPluginInfoFuncPtr)(const GUID &in_rguidPluginID, PluginInfo &out_rPluginInfo)
Gets the AK::Wwise::ISourceControl::PluginInfo class associated with a given plug-in ID.
void(__stdcall * GetSourceControlIDListFuncPtr)(PluginIDList &out_rPluginIDList)
Gets the plug-in ID list contained by the DLL file.
virtual bool ShowConfigDlg()=0
DWORD m_dwRevertCommandID
Indicates the command ID for the Revert command, s_dwInvalidOperationID (-1) if not supported.

Cette page a-t-elle été utile ?

Besoin d'aide ?

Des questions ? Des problèmes ? Besoin de plus d'informations ? Contactez-nous, nous pouvons vous aider !

Visitez notre page d'Aide

Décrivez-nous de votre projet. Nous sommes là pour vous aider.

Enregistrez votre projet et nous vous aiderons à démarrer sans aucune obligation !

Partir du bon pied avec Wwise