2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 03:47:43 +00:00

Tons of dependency gathering flow

This commit is contained in:
Jack Andersen
2016-10-02 12:41:36 -10:00
parent 6b97fa0242
commit 341fe2c728
106 changed files with 1743 additions and 207 deletions

View File

@@ -7,6 +7,11 @@
#include <nod/nod.hpp>
#include "hecl/Blender/BlenderConnection.hpp"
namespace urde
{
struct SObjectTag;
}
namespace DataSpec
{
@@ -25,8 +30,6 @@ struct SpecBase : hecl::Database::IDataSpec
bool fast, hecl::BlenderToken& btok, FCookProgress progress);
bool canPackage(const PackagePassInfo& info);
void gatherDependencies(const PackagePassInfo& info,
std::unordered_set<hecl::ProjectPath>& implicitsOut);
void doPackage(const PackagePassInfo& info);
/* Extract handlers */
@@ -42,6 +45,10 @@ struct SpecBase : hecl::Database::IDataSpec
virtual bool extractFromDisc(nod::DiscBase& disc, bool force,
FProgress progress)=0;
/* Convert path to object tag */
virtual urde::SObjectTag BuildTagFromPath(const hecl::ProjectPath& path,
hecl::BlenderToken& btok) const=0;
/* Even if PC spec is being cooked, this will return the vanilla GCN spec */
virtual const hecl::Database::DataSpecEntry* getOriginalSpec() const=0;
@@ -77,6 +84,14 @@ struct SpecBase : hecl::Database::IDataSpec
virtual void cookSong(const hecl::ProjectPath& out, const hecl::ProjectPath& in,
FCookProgress progress)=0;
/* Dependency flatteners */
void flattenDependencies(const hecl::ProjectPath& in,
std::vector<hecl::ProjectPath>& pathsOut,
hecl::BlenderToken& btok);
void flattenDependencies(const class UniqueID32& id, std::vector<hecl::ProjectPath>& pathsOut);
void flattenDependencies(const class UniqueID64& id, std::vector<hecl::ProjectPath>& pathsOut);
virtual void flattenDependenciesYAML(athena::io::IStreamReader& fin, std::vector<hecl::ProjectPath>& pathsOut)=0;
const hecl::ProjectPath& getMasterShaderPath() const {return m_masterShader;}
/* Support functions for resolving paths from IDs */