2023-12-13 00:40:16 -05:00
|
|
|
#include "Game/Camera/Camera.hpp"
|
|
|
|
|
#include "Game/Camera/CameraAnim.hpp"
|
|
|
|
|
#include "Game/Camera/CameraBehind.hpp"
|
|
|
|
|
#include "Game/Camera/CameraBlackHole.hpp"
|
|
|
|
|
#include "Game/Camera/CameraCharmedFix.hpp"
|
|
|
|
|
#include "Game/Camera/CameraCharmedTripodBoss.hpp"
|
|
|
|
|
#include "Game/Camera/CameraCharmedVecReg.hpp"
|
|
|
|
|
#include "Game/Camera/CameraCharmedVecRegTower.hpp"
|
|
|
|
|
#include "Game/Camera/CameraCubePlanet.hpp"
|
|
|
|
|
#include "Game/Camera/CameraDPD.hpp"
|
|
|
|
|
#include "Game/Camera/CameraDead.hpp"
|
|
|
|
|
#include "Game/Camera/CameraFix.hpp"
|
|
|
|
|
#include "Game/Camera/CameraFixedPoint.hpp"
|
|
|
|
|
#include "Game/Camera/CameraFixedThere.hpp"
|
|
|
|
|
#include "Game/Camera/CameraFollow.hpp"
|
|
|
|
|
#include "Game/Camera/CameraFooFighter.hpp"
|
|
|
|
|
#include "Game/Camera/CameraFooFighterPlanet.hpp"
|
|
|
|
|
#include "Game/Camera/CameraFrontAndBack.hpp"
|
|
|
|
|
#include "Game/Camera/CameraGround.hpp"
|
|
|
|
|
#include "Game/Camera/CameraHolder.hpp"
|
|
|
|
|
#include "Game/Camera/CameraInnerCylinder.hpp"
|
|
|
|
|
#include "Game/Camera/CameraInwardSphere.hpp"
|
|
|
|
|
#include "Game/Camera/CameraInwardTower.hpp"
|
|
|
|
|
#include "Game/Camera/CameraMedianPlanet.hpp"
|
|
|
|
|
#include "Game/Camera/CameraMedianTower.hpp"
|
|
|
|
|
#include "Game/Camera/CameraMtxRegParallel.hpp"
|
|
|
|
|
#include "Game/Camera/CameraObjParallel.hpp"
|
|
|
|
|
#include "Game/Camera/CameraParallel.hpp"
|
|
|
|
|
#include "Game/Camera/CameraRaceFollow.hpp"
|
|
|
|
|
#include "Game/Camera/CameraRailDemo.hpp"
|
|
|
|
|
#include "Game/Camera/CameraRailFollow.hpp"
|
|
|
|
|
#include "Game/Camera/CameraRailWatch.hpp"
|
|
|
|
|
#include "Game/Camera/CameraSlide.hpp"
|
|
|
|
|
#include "Game/Camera/CameraSpiral.hpp"
|
|
|
|
|
#include "Game/Camera/CameraSubjective.hpp"
|
|
|
|
|
#include "Game/Camera/CameraTalk.hpp"
|
|
|
|
|
#include "Game/Camera/CameraTower.hpp"
|
|
|
|
|
#include "Game/Camera/CameraTowerPos.hpp"
|
|
|
|
|
#include "Game/Camera/CameraTripodBoss.hpp"
|
|
|
|
|
#include "Game/Camera/CameraTripodBossJoint.hpp"
|
|
|
|
|
#include "Game/Camera/CameraTripodPlanet.hpp"
|
|
|
|
|
#include "Game/Camera/CameraTrundle.hpp"
|
|
|
|
|
#include "Game/Camera/CameraTwistedPassage.hpp"
|
|
|
|
|
#include "Game/Camera/CameraWaterFollow.hpp"
|
|
|
|
|
#include "Game/Camera/CameraWaterPlanet.hpp"
|
|
|
|
|
#include "Game/Camera/CameraWaterPlanetBoss.hpp"
|
|
|
|
|
#include "Game/Camera/CameraWonderPlanet.hpp"
|
2023-02-22 21:17:07 -05:00
|
|
|
#include <cstring>
|
2021-12-11 23:00:47 +01:00
|
|
|
|
|
|
|
|
struct CameraTableEntry {
|
2024-08-20 20:19:54 -04:00
|
|
|
const char *mName; // 0x0
|
|
|
|
|
const char *mJapaneseDescription; // 0x4
|
|
|
|
|
Camera* (*mCreateFunction)(void); // 0x8
|
2021-12-11 23:00:47 +01:00
|
|
|
u8 _C;
|
|
|
|
|
u8 _D[3];
|
|
|
|
|
};
|
|
|
|
|
|
2021-12-16 20:46:48 +01:00
|
|
|
namespace {
|
2021-12-30 16:53:44 +01:00
|
|
|
const char *gDefaultCameraName = "CAM_TYPE_XZ_PARA";
|
|
|
|
|
|
2021-12-16 20:46:48 +01:00
|
|
|
template<typename T>
|
|
|
|
|
Camera *createCamera();
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraParallel>() {
|
|
|
|
|
return new CameraParallel("平行カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraTower>() {
|
|
|
|
|
return new CameraTower("塔カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraFollow>() {
|
|
|
|
|
return new CameraFollow("フォローカメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraWonderPlanet>() {
|
|
|
|
|
return new CameraWonderPlanet("ワンダープラネットカメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraFix>() {
|
|
|
|
|
return new CameraFix("完全固定カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraFixedPoint>() {
|
|
|
|
|
return new CameraFixedPoint("定点カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraBehind>() {
|
|
|
|
|
return new CameraBehind("後方カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraInwardTower>() {
|
|
|
|
|
return new CameraInwardTower("塔内部カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraFixedThere>() {
|
|
|
|
|
return new CameraFixedThere("その場定点カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraTripodBoss>() {
|
|
|
|
|
return new CameraTripodBoss("三脚ボスカメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraTowerPos>() {
|
|
|
|
|
return new CameraTowerPos("塔カメラ(サブターゲット付き)");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraTripodPlanet>() {
|
|
|
|
|
return new CameraTripodPlanet("三脚惑星カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraDead>() {
|
|
|
|
|
return new CameraDead("通常死亡カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraInwardSphere>() {
|
|
|
|
|
return new CameraInwardSphere("球内部カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraRailDemo>() {
|
|
|
|
|
return new CameraRailDemo("レールデモカメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraRailFollow>() {
|
|
|
|
|
return new CameraRailFollow("レールフォローカメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraTripodBossJoint>() {
|
|
|
|
|
return new CameraTripodBossJoint("三脚ボス関節カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraCharmedTripodBoss>() {
|
|
|
|
|
return new CameraCharmedTripodBoss("三脚ボスジョイント注視カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraObjParallel>() {
|
|
|
|
|
return new CameraObjParallel("オブジェ並行カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraCharmedFix>() {
|
|
|
|
|
return new CameraCharmedFix("サンボカメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraGround>() {
|
|
|
|
|
return new CameraGround("地面カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraTrundle>() {
|
|
|
|
|
return new CameraTrundle("トランドルカメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraCubePlanet>() {
|
|
|
|
|
return new CameraCubePlanet("キューブ惑星カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraInnerCylinder>() {
|
|
|
|
|
return new CameraInnerCylinder("CameraInnerCylinder");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraSpiral>() {
|
|
|
|
|
return new CameraSpiral("螺旋カメラ(デモ用)");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraTalk>() {
|
|
|
|
|
return new CameraTalk("会話カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraMtxRegParallel>() {
|
|
|
|
|
return new CameraMtxRegParallel("マトリクスレジスタ並行カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraCharmedVecReg>() {
|
|
|
|
|
return new CameraCharmedVecReg("ベクトルレジスタ注目カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraMedianPlanet>() {
|
|
|
|
|
return new CameraMedianPlanet("中点注目プラネットカメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraTwistedPassage>() {
|
|
|
|
|
return new CameraTwistedPassage("ねじれ回廊カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraMedianTower>() {
|
|
|
|
|
return new CameraMedianTower("中点塔カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraCharmedVecRegTower>() {
|
|
|
|
|
return new CameraCharmedVecRegTower("CameraCharmedVecRegTower");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraFrontAndBack>() {
|
|
|
|
|
return new CameraFrontAndBack("表裏カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraRaceFollow>() {
|
|
|
|
|
return new CameraRaceFollow("CameraRaceFollow");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraSlide>() {
|
|
|
|
|
return new CameraSlide("スライドカメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraFooFighter>() {
|
|
|
|
|
return new CameraFooFighter("フーファイター");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraFooFighterPlanet>() {
|
|
|
|
|
return new CameraFooFighterPlanet("フーファイタープラネットカメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraBlackHole>() {
|
|
|
|
|
return new CameraBlackHole("ブラックホールカメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraAnim>() {
|
|
|
|
|
return new CameraAnim("アニメーションカメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraDPD>() {
|
|
|
|
|
return new CameraDPD("DPD操作カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraWaterFollow>() {
|
|
|
|
|
return new CameraWaterFollow("水中フォロー");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraWaterPlanet>() {
|
|
|
|
|
return new CameraWaterPlanet("水中プラネット");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraWaterPlanetBoss>() {
|
|
|
|
|
return new CameraWaterPlanetBoss("水中プラネットボス");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraRailWatch>() {
|
|
|
|
|
return new CameraRailWatch("レール注目カメラ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<>
|
|
|
|
|
Camera *createCamera<CameraSubjective>() {
|
|
|
|
|
return new CameraSubjective("主観カメラ");
|
|
|
|
|
}
|
2021-12-30 16:53:44 +01:00
|
|
|
|
|
|
|
|
#define NR_CAMERA_TYPES 45
|
|
|
|
|
|
|
|
|
|
CameraTableEntry gCameraTable[NR_CAMERA_TYPES] = {
|
|
|
|
|
{ "CAM_TYPE_XZ_PARA", "並行", createCamera<CameraParallel>, 1 },
|
|
|
|
|
{ "CAM_TYPE_TOWER", "塔", createCamera<CameraTower>, 1 },
|
|
|
|
|
{ "CAM_TYPE_FOLLOW", "フォロー", createCamera<CameraFollow>, 1 },
|
|
|
|
|
{ "CAM_TYPE_WONDER_PLANET", "プラネット", createCamera<CameraWonderPlanet>, 1 },
|
|
|
|
|
{ "CAM_TYPE_POINT_FIX", "完全固定", createCamera<CameraFix>, 1 },
|
|
|
|
|
{ "CAM_TYPE_EYEPOS_FIX", "定点", createCamera<CameraFixedPoint>, 1 },
|
|
|
|
|
{ "CAM_TYPE_SLIDER", "スライダー", createCamera<CameraBehind>, 1 },
|
|
|
|
|
{ "CAM_TYPE_INWARD_TOWER", "塔内部", createCamera<CameraInwardTower>, 1 },
|
|
|
|
|
{ "CAM_TYPE_EYEPOS_FIX_THER", "その場定点", createCamera<CameraFixedThere>, 1 },
|
|
|
|
|
{ "CAM_TYPE_TRIPOD_BOSS", "三脚ボス", createCamera<CameraTripodBoss>, 1 },
|
|
|
|
|
{ "CAM_TYPE_TOWER_POS", "塔(サブターゲット付き)", createCamera<CameraTowerPos>, 1 },
|
|
|
|
|
{ "CAM_TYPE_TRIPOD_PLANET", "三脚惑星", createCamera<CameraTripodPlanet>, 1 },
|
|
|
|
|
{ "CAM_TYPE_DEAD", "通常死亡", createCamera<CameraDead>, 1 },
|
|
|
|
|
{ "CAM_TYPE_INWARD_SPHERE", "球内部", createCamera<CameraInwardSphere>, 1 },
|
|
|
|
|
{ "CAM_TYPE_RAIL_DEMO", "レールデモ", createCamera<CameraRailDemo>, 1 },
|
|
|
|
|
{ "CAM_TYPE_RAIL_FOLLOW", "レールフォロー", createCamera<CameraRailFollow>, 1 },
|
|
|
|
|
{ "CAM_TYPE_TRIPOD_BOSS_JOINT", "三脚ボスジョイント", createCamera<CameraTripodBossJoint>, 1 },
|
|
|
|
|
{ "CAM_TYPE_CHARMED_TRIPOD_BOSS", "三脚ボスジョイント注視", createCamera<CameraCharmedTripodBoss>, 1 },
|
|
|
|
|
{ "CAM_TYPE_OBJ_PARALLEL", "オブジェ並行", createCamera<CameraObjParallel>, 1 },
|
|
|
|
|
{ "CAM_TYPE_CHARMED_FIX", "サンボ", createCamera<CameraCharmedFix>, 1 },
|
|
|
|
|
{ "CAM_TYPE_GROUND", "地面", createCamera<CameraGround>, 1 },
|
|
|
|
|
{ "CAM_TYPE_TRUNDLE", "トランドル", createCamera<CameraTrundle>, 1 },
|
|
|
|
|
{ "CAM_TYPE_CUBE_PLANET", "キューブ惑星", createCamera<CameraCubePlanet>, 1 },
|
|
|
|
|
{ "CAM_TYPE_INNER_CYLINDER", "円筒内部", createCamera<CameraInnerCylinder>, 1 },
|
|
|
|
|
{ "CAM_TYPE_SPIRAL_DEMO", "螺旋デモ", createCamera<CameraSpiral>, 1 },
|
|
|
|
|
{ "CAM_TYPE_TALK", "会話", createCamera<CameraTalk>, 1 },
|
|
|
|
|
{ "CAM_TYPE_MTXREG_PARALLEL", "マトリクスレジスタ並行", createCamera<CameraMtxRegParallel>, 1 },
|
|
|
|
|
{ "CAM_TYPE_CHARMED_VECREG", "ベクトルレジスタ注目", createCamera<CameraCharmedVecReg>, 1 },
|
|
|
|
|
{ "CAM_TYPE_MEDIAN_PLANET", "中点注目プラネット", createCamera<CameraMedianPlanet>, 1 },
|
|
|
|
|
{ "CAM_TYPE_TWISTED_PASSAGE", "ねじれ回廊", createCamera<CameraTwistedPassage>, 1 },
|
|
|
|
|
{ "CAM_TYPE_MEDIAN_TOWER", "中点塔カメラ", createCamera<CameraMedianTower>, 1 },
|
|
|
|
|
{ "CAM_TYPE_CHARMED_VECREG_TOWER", "VecReg角度補正塔カメラ", createCamera<CameraCharmedVecRegTower>, 1 },
|
|
|
|
|
{ "CAM_TYPE_FRONT_AND_BACK", "表裏カメラ", createCamera<CameraFrontAndBack>, 1 },
|
|
|
|
|
{ "CAM_TYPE_RACE_FOLLOW", "レース用フォロー", createCamera<CameraRaceFollow>, 1 },
|
|
|
|
|
{ "CAM_TYPE_2D_SLIDE", "2Dスライド", createCamera<CameraSlide>, 1 },
|
|
|
|
|
{ "CAM_TYPE_FOO_FIGHTER", "フーファイター", createCamera<CameraFooFighter>, 1 },
|
|
|
|
|
{ "CAM_TYPE_FOO_FIGHTER_PLANET", "フーファイタープラネット", createCamera<CameraFooFighterPlanet>, 1 },
|
|
|
|
|
{ "CAM_TYPE_BLACK_HOLE", "ブラックホール", createCamera<CameraBlackHole>, 0 },
|
|
|
|
|
{ "CAM_TYPE_ANIM", "アニメ", createCamera<CameraAnim>, 0 },
|
|
|
|
|
{ "CAM_TYPE_DPD", "DPD", createCamera<CameraDPD>, 1 },
|
|
|
|
|
{ "CAM_TYPE_WATER_FOLLOW", "水中フォロー", createCamera<CameraWaterFollow>, 1 },
|
|
|
|
|
{ "CAM_TYPE_WATER_PLANET", "水中プラネット", createCamera<CameraWaterPlanet>, 1 },
|
|
|
|
|
{ "CAM_TYPE_WATER_PLANET_BOSS", "水中プラネットボス", createCamera<CameraWaterPlanetBoss>, 1 },
|
|
|
|
|
{ "CAM_TYPE_RAIL_WATCH", "レール注目", createCamera<CameraRailWatch>, 1 },
|
|
|
|
|
{ "CAM_TYPE_SUBJECTIVE", "主観", createCamera<CameraSubjective>, 1 }
|
|
|
|
|
};
|
2021-12-16 20:46:48 +01:00
|
|
|
}
|
|
|
|
|
|
2021-12-11 23:00:47 +01:00
|
|
|
CameraHolder::CameraHolder(const char *pName) : NameObj(pName) {
|
|
|
|
|
createCameras();
|
2021-12-30 16:53:44 +01:00
|
|
|
mDefaultCameraIndex = getIndexOf(gDefaultCameraName);
|
2021-12-16 20:46:48 +01:00
|
|
|
mDefaultTranslator = mTranslators[mDefaultCameraIndex];
|
2021-12-11 23:00:47 +01:00
|
|
|
}
|
|
|
|
|
|
2021-12-12 01:35:02 +01:00
|
|
|
CameraHolder::~CameraHolder() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-30 00:34:02 +01:00
|
|
|
CamTranslatorBase *CameraHolder::getTranslator(long index) {
|
2021-12-21 13:35:32 +01:00
|
|
|
return mTranslators[index];
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-11 23:00:47 +01:00
|
|
|
s32 CameraHolder::getIndexOf(const char *pName) const {
|
|
|
|
|
for (s32 i = 0; i < NR_CAMERA_TYPES; i++) {
|
2021-12-30 16:53:44 +01:00
|
|
|
if (strcmp(pName, gCameraTable[i].mName) == 0) {
|
2021-12-11 23:00:47 +01:00
|
|
|
return i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Camera *CameraHolder::getDefaultCamera() {
|
|
|
|
|
return mCameras[mDefaultCameraIndex];
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-12 01:35:02 +01:00
|
|
|
s32 CameraHolder::getIndexOfDefault() const {
|
|
|
|
|
return mDefaultCameraIndex;
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-11 23:00:47 +01:00
|
|
|
s32 CameraHolder::getIndexOf(Camera *pCamera) const {
|
|
|
|
|
for (s32 i = 0; i < NR_CAMERA_TYPES; i++) {
|
|
|
|
|
if (mCameras[i] == pCamera) {
|
|
|
|
|
return i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-16 20:46:48 +01:00
|
|
|
void CameraHolder::createCameras() {
|
2021-12-11 23:00:47 +01:00
|
|
|
mCameras = new Camera *[NR_CAMERA_TYPES];
|
2021-12-30 00:34:02 +01:00
|
|
|
mTranslators = new CamTranslatorBase *[NR_CAMERA_TYPES];
|
2021-12-11 23:00:47 +01:00
|
|
|
|
|
|
|
|
for (s32 i = 0; i < NR_CAMERA_TYPES; i++) {
|
2021-12-30 16:53:44 +01:00
|
|
|
mCameras[i] = gCameraTable[i].mCreateFunction();
|
2021-12-16 20:46:48 +01:00
|
|
|
mTranslators[i] = mCameras[i]->createTranslator();
|
2021-12-11 23:00:47 +01:00
|
|
|
}
|
2021-12-16 20:46:48 +01:00
|
|
|
}
|
2021-12-11 23:00:47 +01:00
|
|
|
|
|
|
|
|
Camera *CameraHolder::getCameraInner(long index) const {
|
|
|
|
|
return mCameras[index];
|
|
|
|
|
}
|