summaryrefslogtreecommitdiff
path: root/createcalls.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'createcalls.cpp')
-rw-r--r--createcalls.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/createcalls.cpp b/createcalls.cpp
index d1f6448..a984454 100644
--- a/createcalls.cpp
+++ b/createcalls.cpp
@@ -659,13 +659,20 @@ Layer_TraverseForPoint(project_data *File, project_state *State, memory *Memory,
v2 PointUV = {0, 0};
int OuterWidth = Comp->Width, OuterHeight = Comp->Height;
int InnerWidth = 0, InnerHeight = 0;
- for (int i = 1; i <= Recursions; i++) {
- block_layer *InnerLayer = (block_layer *)Memory_Block_AddressAtIndex(Memory, F_Layers, RecursionIdx[i]);
- layer_transforms T = Layer_GetTransforms(InnerLayer);
- Layer_GetDimensions(Memory, InnerLayer, &InnerWidth, &InnerHeight);
+ if (Recursions == 0) {
+ block_layer *Layer = (block_layer *)Memory_Block_AddressAtIndex(Memory, F_Layers, State->Brush.LayerToPaint_Index);
+ layer_transforms T = Layer_GetTransforms(Layer);
+ Layer_GetDimensions(Memory, Layer, &InnerWidth, &InnerHeight);
PointUV = T_CompUVToLayerUV(T, OuterWidth, OuterHeight, InnerWidth, InnerHeight, State->TempZoomRatio);
- OuterWidth = InnerWidth;
- OuterHeight = InnerHeight;
+ } else {
+ for (int i = 1; i <= Recursions; i++) {
+ block_layer *InnerLayer = (block_layer *)Memory_Block_AddressAtIndex(Memory, F_Layers, RecursionIdx[i]);
+ layer_transforms T = Layer_GetTransforms(InnerLayer);
+ Layer_GetDimensions(Memory, InnerLayer, &InnerWidth, &InnerHeight);
+ PointUV = T_CompUVToLayerUV(T, OuterWidth, OuterHeight, InnerWidth, InnerHeight, State->TempZoomRatio);
+ OuterWidth = InnerWidth;
+ OuterHeight = InnerHeight;
+ }
}
return PointUV * V2(InnerWidth, InnerHeight);
}