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