MCPcopy Create free account
hub / github.com/Tencent/libpag / ModifyTransform3DForCameraLayer

Function ModifyTransform3DForCameraLayer

exporter/src/export/ExportLayer.cpp:71–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

69 std::shared_ptr<PAGExportSession> session);
70
71static void ModifyTransform3DForCameraLayer(pag::Layer* layer, AEGP_LayerFlags layerFlags) {
72 if (layer->type() != pag::LayerType::Camera) {
73 return;
74 }
75 auto transform3D = layer->transform3D;
76 if (transform3D == nullptr) {
77 return;
78 }
79
80 if (transform3D->scale->animatable()) {
81 delete transform3D->scale;
82 transform3D->scale = new pag::Property<pag::Point3D>();
83 }
84 transform3D->scale->value = pag::Point3D::Make(1, 1, 1);
85
86 if (transform3D->opacity->animatable()) {
87 delete transform3D->opacity;
88 transform3D->opacity = new pag::Property<pag::Opacity>();
89 }
90 transform3D->opacity->value = pag::Opaque;
91
92 if (!(layerFlags & AEGP_LayerFlag_LOOK_AT_POI)) {
93 delete transform3D->anchorPoint;
94
95 auto position = transform3D->position;
96 if (!position->animatable()) {
97 transform3D->anchorPoint = new pag::Property<pag::Point3D>();
98 transform3D->anchorPoint->value = position->value;
99 } else {
100 std::vector<pag::Keyframe<pag::Point3D>*> anchorPointKeyframes;
101 for (auto& srcKeyFrame :
102 static_cast<pag::AnimatableProperty<pag::Point3D>*>(position)->keyframes) {
103 auto dstKeyframe = new pag::Keyframe<pag::Point3D>();
104 dstKeyframe->startValue = srcKeyFrame->startValue;
105 dstKeyframe->endValue = srcKeyFrame->endValue;
106 dstKeyframe->startTime = srcKeyFrame->startTime;
107 dstKeyframe->endTime = srcKeyFrame->endTime;
108 dstKeyframe->bezierOut = srcKeyFrame->bezierOut;
109 dstKeyframe->bezierIn = srcKeyFrame->bezierIn;
110 dstKeyframe->spatialOut = srcKeyFrame->spatialOut;
111 dstKeyframe->spatialIn = srcKeyFrame->spatialIn;
112 anchorPointKeyframes.push_back(dstKeyframe);
113 }
114 transform3D->anchorPoint = new pag::AnimatableProperty<pag::Point3D>(anchorPointKeyframes);
115 }
116 }
117}
118
119static void InitLayer(std::shared_ptr<PAGExportSession> session, const AEGP_LayerH& layerHandle,
120 pag::Layer* layer, ExportLayerType layerType) {

Callers 1

InitLayerFunction · 0.85

Calls 4

push_backMethod · 0.80
MakeFunction · 0.50
typeMethod · 0.45
animatableMethod · 0.45

Tested by

no test coverage detected