// Copyright Epic Games, Inc. All Rights Reserved. #include "Commands/DNACalibSetBlendShapeTargetDeltasCommand.h" #include "DNACalibDNAReader.h" #include "DNACalibUtils.h" #include "FMemoryResource.h" #include "VecArray.h" #include "dnacalib/commands/SetBlendShapeTargetDeltasCommand.h" #include "dnacalib/dna/DNACalibDNAReader.h" class FDNACalibSetBlendShapeTargetDeltasCommand::Impl { public: Impl() : Command{new dnac::SetBlendShapeTargetDeltasCommand{FMemoryResource::Instance()}} { } void SetMeshIndex(uint16 MeshIndex) { Command->setMeshIndex(MeshIndex); } void SetBlendShapeTargetIndex(uint16 BlendShapeTargetIndex) { Command->setBlendShapeTargetIndex(BlendShapeTargetIndex); } void SetDeltas(TArrayView Deltas) { UnpackedDeltas.Assign(Deltas); Command->setDeltas(ViewOf(UnpackedDeltas.Xs), ViewOf(UnpackedDeltas.Ys), ViewOf(UnpackedDeltas.Zs)); } void SetDeltas(TArrayView DXs, TArrayView DYs, TArrayView DZs) { Command->setDeltas(ViewOf(DXs), ViewOf(DYs), ViewOf(DZs)); } void SetVertexIndices(TArrayView VertexIndices) { Command->setVertexIndices(ViewOf(VertexIndices)); } void SetMasks(TArrayView Masks) { Command->setMasks(ViewOf(Masks)); } void SetOperation(EDNACalibVectorOperation Operation) { Command->setOperation(static_cast(Operation)); } void Run(FDNACalibDNAReader* Output) { Command->run(static_cast(Output->Unwrap())); } private: TUniquePtr Command; FVecArray UnpackedDeltas; }; FDNACalibSetBlendShapeTargetDeltasCommand::FDNACalibSetBlendShapeTargetDeltasCommand() : ImplPtr{new Impl{}} { } FDNACalibSetBlendShapeTargetDeltasCommand::FDNACalibSetBlendShapeTargetDeltasCommand(uint16 MeshIndex, uint16 BlendShapeTargetIndex, TArrayView Deltas, TArrayView VertexIndices, EDNACalibVectorOperation Operation) : ImplPtr{new Impl{}} { ImplPtr->SetMeshIndex(MeshIndex); ImplPtr->SetBlendShapeTargetIndex(BlendShapeTargetIndex); ImplPtr->SetDeltas(Deltas); ImplPtr->SetVertexIndices(VertexIndices); ImplPtr->SetOperation(Operation); } FDNACalibSetBlendShapeTargetDeltasCommand::FDNACalibSetBlendShapeTargetDeltasCommand(uint16 MeshIndex, uint16 BlendShapeTargetIndex, TArrayView DXs, TArrayView DYs, TArrayView DZs, TArrayView VertexIndices, EDNACalibVectorOperation Operation) : ImplPtr{new Impl{}} { ImplPtr->SetMeshIndex(MeshIndex); ImplPtr->SetBlendShapeTargetIndex(BlendShapeTargetIndex); ImplPtr->SetDeltas(DXs, DYs, DZs); ImplPtr->SetVertexIndices(VertexIndices); ImplPtr->SetOperation(Operation); } FDNACalibSetBlendShapeTargetDeltasCommand::FDNACalibSetBlendShapeTargetDeltasCommand(uint16 MeshIndex, uint16 BlendShapeTargetIndex, TArrayView Deltas, TArrayView VertexIndices, TArrayView Masks, EDNACalibVectorOperation Operation) : ImplPtr{new Impl{}} { ImplPtr->SetMeshIndex(MeshIndex); ImplPtr->SetBlendShapeTargetIndex(BlendShapeTargetIndex); ImplPtr->SetDeltas(Deltas); ImplPtr->SetVertexIndices(VertexIndices); ImplPtr->SetMasks(Masks); ImplPtr->SetOperation(Operation); } FDNACalibSetBlendShapeTargetDeltasCommand::FDNACalibSetBlendShapeTargetDeltasCommand(uint16 MeshIndex, uint16 BlendShapeTargetIndex, TArrayView DXs, TArrayView DYs, TArrayView DZs, TArrayView VertexIndices, TArrayView Masks, EDNACalibVectorOperation Operation) : ImplPtr{new Impl{}} { ImplPtr->SetMeshIndex(MeshIndex); ImplPtr->SetBlendShapeTargetIndex(BlendShapeTargetIndex); ImplPtr->SetDeltas(DXs, DYs, DZs); ImplPtr->SetVertexIndices(VertexIndices); ImplPtr->SetMasks(Masks); ImplPtr->SetOperation(Operation); } FDNACalibSetBlendShapeTargetDeltasCommand::~FDNACalibSetBlendShapeTargetDeltasCommand() = default; FDNACalibSetBlendShapeTargetDeltasCommand::FDNACalibSetBlendShapeTargetDeltasCommand(FDNACalibSetBlendShapeTargetDeltasCommand&&) = default; FDNACalibSetBlendShapeTargetDeltasCommand& FDNACalibSetBlendShapeTargetDeltasCommand::operator=(FDNACalibSetBlendShapeTargetDeltasCommand&&) = default; void FDNACalibSetBlendShapeTargetDeltasCommand::SetMeshIndex(uint16 MeshIndex) { ImplPtr->SetMeshIndex(MeshIndex); } void FDNACalibSetBlendShapeTargetDeltasCommand::SetBlendShapeTargetIndex(uint16 BlendShapeTargetIndex) { ImplPtr->SetBlendShapeTargetIndex(BlendShapeTargetIndex); } void FDNACalibSetBlendShapeTargetDeltasCommand::SetDeltas(TArrayView Deltas) { ImplPtr->SetDeltas(Deltas); } void FDNACalibSetBlendShapeTargetDeltasCommand::SetDeltas(TArrayView DXs, TArrayView DYs, TArrayView DZs) { ImplPtr->SetDeltas(DXs, DYs, DZs); } void FDNACalibSetBlendShapeTargetDeltasCommand::SetVertexIndices(TArrayView VertexIndices) { ImplPtr->SetVertexIndices(VertexIndices); } void FDNACalibSetBlendShapeTargetDeltasCommand::SetMasks(TArrayView Masks) { ImplPtr->SetMasks(Masks); } void FDNACalibSetBlendShapeTargetDeltasCommand::SetOperation(EDNACalibVectorOperation Operation) { ImplPtr->SetOperation(Operation); } void FDNACalibSetBlendShapeTargetDeltasCommand::Run(FDNACalibDNAReader* Output) { ImplPtr->Run(Output); }