2024-01-05 10:15:41 -06:00
|
|
|
#include "2s2h/resource/importer/scenecommand/SetCsCameraFactory.h"
|
|
|
|
|
#include "2s2h/resource/type/scenecommand/SetCsCamera.h"
|
|
|
|
|
#include "spdlog/spdlog.h"
|
|
|
|
|
|
2024-03-26 21:26:31 -04:00
|
|
|
namespace SOH {
|
2024-05-22 09:52:56 -04:00
|
|
|
std::shared_ptr<Ship::IResource> SetCsCameraFactory::ReadResource(std::shared_ptr<Ship::ResourceInitData> initData,
|
|
|
|
|
std::shared_ptr<Ship::BinaryReader> reader) {
|
2024-03-26 21:26:31 -04:00
|
|
|
auto setCsCamera = std::make_shared<SetCsCamera>(initData);
|
2024-05-22 09:52:56 -04:00
|
|
|
|
2024-01-05 10:15:41 -06:00
|
|
|
ReadCommandId(setCsCamera, reader);
|
2024-03-26 21:26:31 -04:00
|
|
|
|
|
|
|
|
size_t camSize = reader->ReadUInt32();
|
|
|
|
|
|
|
|
|
|
setCsCamera->csCamera.reserve(camSize);
|
2024-01-05 10:15:41 -06:00
|
|
|
|
|
|
|
|
for (size_t i = 0; i < camSize; i++) {
|
|
|
|
|
ActorCsCamInfoData data;
|
|
|
|
|
data.setting = reader->ReadUInt16();
|
|
|
|
|
data.count = reader->ReadUInt16();
|
|
|
|
|
if (data.count == 0) {
|
|
|
|
|
data.actorCsCamFuncData = nullptr;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
data.actorCsCamFuncData = new z64Vec3s[data.count];
|
|
|
|
|
for (size_t j = 0; j < data.count; j++) {
|
|
|
|
|
data.actorCsCamFuncData[j].x = reader->ReadInt16();
|
|
|
|
|
data.actorCsCamFuncData[j].y = reader->ReadInt16();
|
|
|
|
|
data.actorCsCamFuncData[j].z = reader->ReadInt16();
|
|
|
|
|
}
|
|
|
|
|
setCsCamera->csCamera.emplace_back(data);
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-26 21:26:31 -04:00
|
|
|
return setCsCamera;
|
|
|
|
|
}
|
2024-05-22 09:52:56 -04:00
|
|
|
} // namespace SOH
|