8
8
#import " CCEffectStack_Private.h"
9
9
10
10
@interface CCEffectsTest : TestBase @end
11
- @implementation CCEffectsTest
11
+ @implementation CCEffectsTest {
12
+ #if CC_EFFECTS_EXPERIMENTAL
13
+ CCEffectDistanceField* _distanceFieldEffect;
14
+ #endif
15
+ CCEffectDFOutline* _outlineEffect;
16
+ }
12
17
13
18
-(id )init
14
19
{
@@ -20,29 +25,179 @@ -(id)init
20
25
return self;
21
26
}
22
27
23
- -(void )setupOuterGlowEffectTest
28
+ #pragma mark Distance Fields
29
+
30
+ -(void )setupDFOutlineEffectTest
24
31
{
25
- self.subTitle = @" OuterGlow Effect Test" ;
32
+ self.subTitle = @" Distance Field Outline Test" ;
26
33
27
- // CCNodeColor* environment = [CCNodeColor nodeWithColor:[CCColor whiteColor]];
28
34
CCSprite *environment = [CCSprite spriteWithImageNamed: @" Images/MountainPanorama.jpg" ];
29
35
environment.positionType = CCPositionTypeNormalized;
30
36
environment.anchorPoint = ccp (0.5 , 0.5 );
31
37
environment.position = ccp (0 .5f , 0 .5f );
32
38
39
+ _outlineEffect = [CCEffectDFOutline effectWithOutlineColor: [CCColor redColor ] fillColor: [CCColor blackColor ] outlineWidth: 3 fieldScale: 32 ];
40
+
41
+ CCSprite *sampleSprite = [CCSprite spriteWithImageNamed: @" Images/output.png" ];
42
+ sampleSprite.position = ccp (0.5 , 0.5 );
43
+ sampleSprite.positionType = CCPositionTypeNormalized;
44
+ sampleSprite.effect = _outlineEffect;
45
+ sampleSprite.scale = 2 .0f ;
46
+
47
+ CCSpriteFrame* background = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-background.png" ];
48
+ CCSpriteFrame* backgroundHilite = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-background-hilite.png" ];
49
+ CCSpriteFrame* handle = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-handle.png" ];
50
+
51
+ CCSlider* slider = [[CCSlider alloc ] initWithBackground: background andHandleImage: handle];
52
+ [slider setBackgroundSpriteFrame: backgroundHilite forState: CCControlStateHighlighted];
53
+ slider.positionType = CCPositionTypeNormalized;
54
+ slider.position = ccp (0 .1f , 0 .5f );
55
+
56
+ slider.preferredSizeType = CCSizeTypeMake (CCSizeUnitNormalized, CCSizeUnitUIPoints);
57
+ slider.preferredSize = CGSizeMake (0 .5f , 10 );
58
+ slider.rotation = 90 ;
59
+ slider.anchorPoint = ccp (0 .5f , 0 .5f );
60
+ slider.scale = 0.8 ;
61
+
62
+ [slider setTarget: self selector: @selector (outlineWidthChagne: )];
63
+
33
64
[self .contentNode addChild: environment];
65
+ [self .contentNode addChild: slider];
66
+ [self .contentNode addChild: sampleSprite];
34
67
35
- CCColor *glowColor = [CCColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 0.5 ];
36
- CCEffectOuterGlow* effect = [CCEffectOuterGlow effectWithGlowColor: glowColor];
68
+ // 6 pixel block used for comparison;
69
+ CCNodeColor* block = [CCNodeColor nodeWithColor: [CCColor greenColor ]];
70
+ block.contentSize = CGSizeMake (6.0 , 6.0 );
71
+ block.position = ccp (0.424 , 0.324 );
72
+ block.positionType = CCPositionTypeNormalized;
73
+ block.rotation = 32 ;
74
+ // [self.contentNode addChild:block];
75
+ }
76
+
77
+ - (void )outlineWidthChagne : (id )sender
78
+ {
79
+ const int outlineWidthMax = 6 ;
80
+ CCSlider* slider = sender;
81
+ _outlineEffect.outlineWidth = slider.sliderValue * outlineWidthMax;
82
+ }
83
+
84
+ #if CC_EFFECTS_EXPERIMENTAL
85
+ -(void )setupDistanceFieldEffectTest
86
+ {
87
+ self.subTitle = @" Distance Field Effect Test" ;
37
88
38
- CCSprite *sampleSprite = [CCSprite spriteWithImageNamed: @" Images/DistanceFieldX.png" ];
89
+ // CCNodeColor* environment = [CCNodeColor nodeWithColor:[CCColor whiteColor]];
90
+ CCSprite *environment = [CCSprite spriteWithImageNamed: @" Images/MountainPanorama.jpg" ];
91
+ environment.positionType = CCPositionTypeNormalized;
92
+ environment.anchorPoint = ccp (0.5 , 0.5 );
93
+ environment.position = ccp (0 .5f , 0 .5f );
94
+
95
+ [self .contentNode addChild: environment];
96
+
97
+ CCColor *glowColor = [CCColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0 ];
98
+ _distanceFieldEffect = [CCEffectDistanceField effectWithGlowColor: glowColor outlineColor: [CCColor redColor ]];
99
+
100
+ CCSprite *sampleSprite = [CCSprite spriteWithImageNamed: @" Images/output.png" ];
39
101
sampleSprite.position = ccp (0.5 , 0.5 );
40
102
sampleSprite.positionType = CCPositionTypeNormalized;
41
- sampleSprite.effect = effect;
42
-
103
+ sampleSprite.effect = _distanceFieldEffect;
104
+ sampleSprite.scale = 2 .0f ;
105
+
106
+ CCSpriteFrame* background = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-background.png" ];
107
+ CCSpriteFrame* backgroundHilite = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-background-hilite.png" ];
108
+ CCSpriteFrame* handle = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-handle.png" ];
109
+
110
+ CCSlider* slider = [[CCSlider alloc ] initWithBackground: background andHandleImage: handle];
111
+ [slider setBackgroundSpriteFrame: backgroundHilite forState: CCControlStateHighlighted];
112
+ slider.positionType = CCPositionTypeNormalized;
113
+ slider.position = ccp (0 .1f , 0 .5f );
114
+
115
+ slider.preferredSizeType = CCSizeTypeMake (CCSizeUnitNormalized, CCSizeUnitUIPoints);
116
+ slider.preferredSize = CGSizeMake (0 .5f , 10 );
117
+ slider.rotation = 90 ;
118
+ slider.anchorPoint = ccp (0 .5f , 0 .5f );
119
+ slider.scale = 0.8 ;
120
+
121
+ [slider setTarget: self selector: @selector (outlineInnerWidthChange: )];
122
+
123
+ CCSlider* slider2 = [[CCSlider alloc ] initWithBackground: background andHandleImage: handle];
124
+ [slider2 setBackgroundSpriteFrame: backgroundHilite forState: CCControlStateHighlighted];
125
+ slider2.positionType = CCPositionTypeNormalized;
126
+ slider2.position = ccp (0 .15f , 0 .5f );
127
+
128
+ slider2.preferredSizeType = CCSizeTypeMake (CCSizeUnitNormalized, CCSizeUnitUIPoints);
129
+ slider2.preferredSize = CGSizeMake (0 .5f , 10 );
130
+ slider2.rotation = 90 ;
131
+ slider2.anchorPoint = ccp (0 .5f , 0 .5f );
132
+ slider2.scale = 0.8 ;
133
+
134
+ [slider2 setTarget: self selector: @selector (outlineOuterWidthChange: )];
135
+
136
+ CCSlider* slider3 = [[CCSlider alloc ] initWithBackground: background andHandleImage: handle];
137
+ [slider3 setBackgroundSpriteFrame: backgroundHilite forState: CCControlStateHighlighted];
138
+ slider3.positionType = CCPositionTypeNormalized;
139
+ slider3.position = ccp (0 .20f , 0 .5f );
140
+
141
+ slider3.preferredSizeType = CCSizeTypeMake (CCSizeUnitNormalized, CCSizeUnitUIPoints);
142
+ slider3.preferredSize = CGSizeMake (0 .5f , 10 );
143
+ slider3.rotation = 90 ;
144
+ slider3.anchorPoint = ccp (0 .5f , 0 .5f );
145
+ slider3.scale = 0.8 ;
146
+
147
+ [slider3 setTarget: self selector: @selector (glowWidthChange: )];
148
+
149
+ CCButton* enableGlow = [CCButton buttonWithTitle: @" Outer Glow" ];
150
+ enableGlow.positionType = CCPositionTypeNormalized;
151
+ enableGlow.anchorPoint = ccp (0 .5f , 0 .5f );
152
+ enableGlow.position = ccp (0.9 , 0.8 );
153
+ [enableGlow setTarget: self selector: @selector (enableGlow: )];
154
+
155
+ CCButton* enableOutline = [CCButton buttonWithTitle: @" Outline" ];
156
+ enableOutline.positionType = CCPositionTypeNormalized;
157
+ enableOutline.anchorPoint = ccp (0 .5f , 0 .5f );
158
+ enableOutline.position = ccp (0.9 , 0.7 );
159
+ [enableOutline setTarget: self selector: @selector (enableOutline: )];
160
+
161
+ [self .contentNode addChild: enableOutline];
162
+ [self .contentNode addChild: enableGlow];
43
163
[self .contentNode addChild: sampleSprite];
164
+ [self .contentNode addChild: slider];
165
+ [self .contentNode addChild: slider2];
166
+ [self .contentNode addChild: slider3];
167
+ }
168
+
169
+ - (void )outlineInnerWidthChange : (id )sender
170
+ {
171
+ CCSlider* slider = sender;
172
+ _distanceFieldEffect.outlineInnerWidth = slider.sliderValue ;
173
+ }
174
+
175
+ - (void )outlineOuterWidthChange : (id )sender
176
+ {
177
+ CCSlider* slider = sender;
178
+ _distanceFieldEffect.outlineOuterWidth = slider.sliderValue ;
179
+ }
180
+
181
+ - (void )glowWidthChange : (id )sender
182
+ {
183
+ CCSlider* slider = sender;
184
+ _distanceFieldEffect.glowWidth = slider.sliderValue ;
44
185
}
45
186
187
+ - (void )enableGlow : (id )sender
188
+ {
189
+ _distanceFieldEffect.glow = !_distanceFieldEffect.glow ;
190
+ }
191
+
192
+ - (void )enableOutline : (id )sender
193
+ {
194
+ _distanceFieldEffect.outline = !_distanceFieldEffect.outline ;
195
+ }
196
+
197
+ #endif
198
+
199
+ #pragma mark DropShadow
200
+
46
201
-(void )setupDropShadowEffectTest
47
202
{
48
203
self.subTitle = @" DropShadow Effect Test" ;
@@ -54,7 +209,7 @@ -(void)setupDropShadowEffectTest
54
209
[self .contentNode addChild: environment];
55
210
56
211
CCColor *shadowColor = [CCColor colorWithRed: 0.0 green: 1.0 blue: 0.0 alpha: 0.5 ];
57
- CCEffectDropShadow* effect = [CCEffectDropShadow effectWithShadowOffset: GLKVector2Make (2.0 , -2.0 ) shadowColor: shadowColor];
212
+ CCEffectDropShadow* effect = [CCEffectDropShadow effectWithShadowOffset: GLKVector2Make (2.0 , -2.0 ) shadowColor: shadowColor blurRadius: 5 ];
58
213
59
214
CCSprite *sampleSprite = [CCSprite spriteWithImageNamed: @" Images/Ohm.png" ];
60
215
sampleSprite.position = ccp (0.5 , 0.5 );
@@ -71,6 +226,8 @@ -(void)setupDropShadowEffectTest
71
226
[self .contentNode addChild: effectNode];
72
227
}
73
228
229
+ #pragma mark Glass
230
+
74
231
-(void )setupGlassEffectTest
75
232
{
76
233
self.subTitle = @" Glass Effect Test" ;
@@ -453,7 +610,7 @@ -(void)setupBloomEffectTest
453
610
sampleSprite3.positionType = CCPositionTypeNormalized;
454
611
455
612
// Blend glow maps test
456
- CCEffectBloom* glowEffect3 = [CCEffectBloom effectWithBlurRadius: 8 intensity: 1 .0f luminanceThreshold: 1 .0f - ((float )i/(float )(steps-1 ))];
613
+ CCEffectBloom* glowEffect3 = [CCEffectBloom effectWithBlurRadius: 3 intensity: 1 .0f luminanceThreshold: 1 .0f - ((float )i/(float )(steps-1 ))];
457
614
sampleSprite3.effect = glowEffect3;
458
615
459
616
[self .contentNode addChild: sampleSprite3];
@@ -1338,7 +1495,6 @@ - (CCSprite *)spriteWithEffects:(NSArray *)effects image:(NSString *)spriteImage
1338
1495
return sprite;
1339
1496
}
1340
1497
1341
-
1342
1498
-(void )renderTextureHelper : (CCNode *)stage size : (CGSize)size
1343
1499
{
1344
1500
CCColor *color = [CCColor colorWithRed: 0.0 green: 0.0 blue: 0.5 alpha: 0.5 ];
@@ -1364,5 +1520,5 @@ -(void)renderTextureHelper:(CCNode *)stage size:(CGSize)size
1364
1520
]]];
1365
1521
[node addChild: sprite];
1366
1522
}
1367
- @end
1368
1523
1524
+ @end
0 commit comments