1#pragma once
2
3#include "Library/Factory/Factory.h"
4
5namespace al {
6class CameraPoser;
7class CameraPoserEntrance;
8
9using CameraPoserCreatorFunction = CameraPoser* (*)(const char* cameraPoserName);
10
11class CameraPoserFactory : public Factory<CameraPoserCreatorFunction> {
12public:
13 CameraPoserFactory(const char* factoryName);
14
15 virtual CameraPoserEntrance* createEntranceCameraPoser() const;
16};
17} // namespace al
18
19namespace alCameraPoserFactoryFunction {
20void initAndCreateTableFromOtherTable2(
21 al::CameraPoserFactory* out, const al::NameToCreator<al::CameraPoserCreatorFunction>* table1,
22 s32 table1Count, const al::NameToCreator<al::CameraPoserCreatorFunction>* table2,
23 s32 table2Count);
24void initAndCreateTableWithAnotherFactory(
25 al::CameraPoserFactory* out, const al::CameraPoserFactory* factory,
26 const al::NameToCreator<al::CameraPoserCreatorFunction>* table, s32 tableCount);
27void initAndCreateTableWithPresetPosers(
28 al::CameraPoserFactory* out, const al::NameToCreator<al::CameraPoserCreatorFunction>* table,
29 s32 tableCount);
30
31template <s32 N1, s32 N2>
32inline void initAndCreateTableFromOtherTable(
33 al::CameraPoserFactory* out,
34 const al::NameToCreator<al::CameraPoserCreatorFunction> (&table1)[N1],
35 const al::NameToCreator<al::CameraPoserCreatorFunction> (&table2)[N2]) {
36 initAndCreateTableFromOtherTable2(out, table1, N1, table2, N2);
37}
38} // namespace alCameraPoserFactoryFunction
39