Files
UnrealEngine/Engine/Plugins/Animation/GeneSplicer/Source/GeneSplicerLib/Public/genesplicer/GeneSplicer.h
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

88 lines
3.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "genesplicer/CalculationType.h"
#include "genesplicer/Defs.h"
#include "genesplicer/GeneSplicerDNAReader.h"
#include "genesplicer/splicedata/SpliceData.h"
#include "genesplicer/types/Aliases.h"
namespace gs4 {
/**
@brief A stateless facility that wraps the splicing algorithms.
*/
class GeneSplicer final {
public:
/**
@brief Constructor
@param calculationType
Determines which algorithm implementation is used for splicing
*/
GSAPI explicit GeneSplicer(CalculationType calculationType = CalculationType::SSE, MemoryResource* memRes = nullptr);
GSAPI ~GeneSplicer();
GeneSplicer(const GeneSplicer&) = delete;
GeneSplicer& operator=(const GeneSplicer&) = delete;
GSAPI GeneSplicer(GeneSplicer&& rhs);
GSAPI GeneSplicer& operator=(GeneSplicer&& rhs);
/**
@brief Run all the individual splicers.
@param spliceData
Contains all the necessary input data that is used during splicing.
@param output
Output parameter - the DNA Reader that will contain the spliced DNA data.
*/
GSAPI void splice(const SpliceData* spliceData, GeneSplicerDNAReader* output);
/**
@brief Run only the neutral mesh splicer.
@param spliceData
Contains all the necessary input data that is used during splicing.
@param output
Output parameter - the DNA Reader that will contain the spliced DNA data.
*/
GSAPI void spliceNeutralMeshes(const SpliceData* spliceData, GeneSplicerDNAReader* output);
/**
@brief Run only the blend shape splicer.
@param spliceData
Contains all the necessary input data that is used during splicing.
@param output
Output parameter - the DNA Reader that will contain the spliced DNA data.
*/
GSAPI void spliceBlendShapes(const SpliceData* spliceData, GeneSplicerDNAReader* output);
/**
@brief Run only the neutral joint splicer.
@param spliceData
Contains all the necessary input data that is used during splicing.
@param output
Output parameter - the DNA Reader that will contain the spliced DNA data.
*/
GSAPI void spliceNeutralJoints(const SpliceData* spliceData, GeneSplicerDNAReader* output);
/**
@brief Run only the joint behavior splicer.
@param spliceData
Contains all the necessary input data that is used during splicing.
@param output
Output parameter - the DNA Reader that will contain the spliced DNA data.
*/
GSAPI void spliceJointBehavior(const SpliceData* spliceData, GeneSplicerDNAReader* output);
/**
@brief Run only the skin weight splicer.
@param spliceData
Contains all the necessary input data that is used during splicing.
@param output
Output parameter - the DNA Reader that will contain the spliced DNA data.
*/
GSAPI void spliceSkinWeights(const SpliceData* spliceData, GeneSplicerDNAReader* output);
private:
class Impl;
ScopedPtr<Impl, FactoryDestroy<Impl> > pImpl;
};
} // namespace gs4