| 157 | } |
| 158 | |
| 159 | pag::Transform3D* GetTransform3D(const AEGP_LayerH& layerHandle, float frameRate) { |
| 160 | const A_long PluginID = GetPluginID(); |
| 161 | const auto Suites = GetSuites(); |
| 162 | auto transform = new pag::Transform3D(); |
| 163 | |
| 164 | AEGP_StreamRefH streamHandle = nullptr; |
| 165 | Suites->StreamSuite4()->AEGP_GetNewLayerStream(PluginID, layerHandle, AEGP_LayerStream_POSITION, |
| 166 | &streamHandle); |
| 167 | A_Boolean dimensionSeparated = 0; |
| 168 | Suites->DynamicStreamSuite4()->AEGP_AreDimensionsSeparated(streamHandle, &dimensionSeparated); |
| 169 | if (dimensionSeparated != 0) { |
| 170 | AEGP_StreamRefH xPosition = nullptr; |
| 171 | Suites->DynamicStreamSuite4()->AEGP_GetSeparationFollower(streamHandle, 0, &xPosition); |
| 172 | transform->xPosition = GetProperty(xPosition, AEStreamParser::FloatParser); |
| 173 | Suites->StreamSuite4()->AEGP_DisposeStream(xPosition); |
| 174 | |
| 175 | AEGP_StreamRefH yPosition = nullptr; |
| 176 | Suites->DynamicStreamSuite4()->AEGP_GetSeparationFollower(streamHandle, 1, &yPosition); |
| 177 | transform->yPosition = GetProperty(yPosition, AEStreamParser::FloatParser); |
| 178 | Suites->StreamSuite4()->AEGP_DisposeStream(yPosition); |
| 179 | |
| 180 | AEGP_StreamRefH zPosition = nullptr; |
| 181 | Suites->DynamicStreamSuite4()->AEGP_GetSeparationFollower(streamHandle, 1, &zPosition); |
| 182 | transform->zPosition = GetProperty(zPosition, AEStreamParser::FloatParser); |
| 183 | Suites->StreamSuite4()->AEGP_DisposeStream(zPosition); |
| 184 | } else { |
| 185 | transform->position = GetProperty(streamHandle, AEStreamParser::Point3DParser); |
| 186 | } |
| 187 | Suites->StreamSuite4()->AEGP_DisposeStream(streamHandle); |
| 188 | transform->anchorPoint = |
| 189 | GetProperty(layerHandle, AEGP_LayerStream_ANCHORPOINT, AEStreamParser::Point3DParser); |
| 190 | transform->scale = |
| 191 | GetProperty(layerHandle, AEGP_LayerStream_SCALE, AEStreamParser::Scale3DParser, {}, 3); |
| 192 | transform->orientation = GetOrientationKeyframe(layerHandle, frameRate); |
| 193 | transform->xRotation = |
| 194 | GetProperty(layerHandle, AEGP_LayerStream_ROTATE_X, AEStreamParser::FloatParser); |
| 195 | transform->yRotation = |
| 196 | GetProperty(layerHandle, AEGP_LayerStream_ROTATE_Y, AEStreamParser::FloatParser); |
| 197 | transform->zRotation = |
| 198 | GetProperty(layerHandle, AEGP_LayerStream_ROTATE_Z, AEStreamParser::FloatParser); |
| 199 | transform->opacity = |
| 200 | GetProperty(layerHandle, AEGP_LayerStream_OPACITY, AEStreamParser::Opacity0_100Parser); |
| 201 | return transform; |
| 202 | } |
| 203 | |
| 204 | } // namespace exporter |
no test coverage detected