Files
Hat Kid e6260e48ab decompiler: support animation export and support master art groups in build-actor tool (#4260)
Adds support for exporting animations for foreground models. It's not
perfect and doesn't handle the Jak 2/3 animations very well in some
cases (scale can often get messed up, especially for the LZO compressed
ones, I have no idea what is going on with the data in those art groups
sometimes, so that'll have to be revisited later...), but it does a
decent job on Jak 1.

Additionally, the `build-actor` tool has also been changed to support
setting the `master-art-group-name` and `master-art-group-index` fields
to allow for custom art groups to link their animations to a different
master art group, which lets you add custom animations to vanilla art
groups.
2026-05-04 17:19:41 +02:00

124 lines
3.2 KiB
C++

#pragma once
#include "common/goos/Reader.h"
#include "goalc/make/Tool.h"
class Compiler;
class CompilerTool : public Tool {
public:
CompilerTool(Compiler* compiler);
bool run(const ToolInput& task, const PathMap& path_map) override;
bool needs_run(const ToolInput& task, const PathMap& path_map) override;
private:
Compiler* m_compiler = nullptr;
};
class DgoTool : public Tool {
public:
DgoTool();
bool run(const ToolInput& task, const PathMap& path_map) override;
std::vector<std::string> get_additional_dependencies(const ToolInput&,
const PathMap& path_map) override;
private:
goos::Reader m_reader;
};
class TpageDirTool : public Tool {
public:
TpageDirTool();
bool run(const ToolInput& task, const PathMap& path_map) override;
};
class CopyTool : public Tool {
public:
CopyTool();
bool run(const ToolInput& task, const PathMap& path_map) override;
};
class GameCntTool : public Tool {
public:
GameCntTool();
bool run(const ToolInput& task, const PathMap& path_map) override;
};
class TextTool : public Tool {
public:
TextTool();
bool run(const ToolInput& task, const PathMap& path_map) override;
bool needs_run(const ToolInput& task, const PathMap& path_map) override;
};
class GroupTool : public Tool {
public:
GroupTool();
bool run(const ToolInput& task, const PathMap& path_map) override;
};
class SubtitleTool : public Tool {
public:
SubtitleTool();
bool run(const ToolInput& task, const PathMap& path_map) override;
bool needs_run(const ToolInput& task, const PathMap& path_map) override;
};
class SubtitleV2Tool : public Tool {
public:
SubtitleV2Tool();
bool run(const ToolInput& task, const PathMap& path_map) override;
bool needs_run(const ToolInput& task, const PathMap& path_map) override;
};
class BuildLevelTool : public Tool {
public:
BuildLevelTool();
bool run(const ToolInput& task, const PathMap& path_map) override;
bool needs_run(const ToolInput& task, const PathMap& path_map) override;
};
class BuildLevel2Tool : public Tool {
public:
BuildLevel2Tool();
bool run(const ToolInput& task, const PathMap& path_map) override;
bool needs_run(const ToolInput& task, const PathMap& path_map) override;
};
class BuildLevel3Tool : public Tool {
public:
BuildLevel3Tool();
bool run(const ToolInput& task, const PathMap& path_map) override;
bool needs_run(const ToolInput& task, const PathMap& path_map) override;
};
class BuildActorTool : public Tool {
public:
BuildActorTool();
bool run(const ToolInput& task, const PathMap& path_map) override;
bool needs_run(const ToolInput& task, const PathMap& path_map) override;
private:
goos::Reader m_reader;
};
class BuildActor2Tool : public Tool {
public:
BuildActor2Tool();
bool run(const ToolInput& task, const PathMap& path_map) override;
bool needs_run(const ToolInput& task, const PathMap& path_map) override;
private:
goos::Reader m_reader;
};
class BuildActor3Tool : public Tool {
public:
BuildActor3Tool();
bool run(const ToolInput& task, const PathMap& path_map) override;
bool needs_run(const ToolInput& task, const PathMap& path_map) override;
private:
goos::Reader m_reader;
};