Note that there are some explanatory texts on larger screens.

plurals
  1. PORotated Clipping Node in Cocos2d
    primarykey
    data
    text
    <p>I'm using the clipping node here: <a href="http://www.learn-cocos2d.com/2011/01/cocos2d-gem-clippingnode" rel="nofollow">http://www.learn-cocos2d.com/2011/01/cocos2d-gem-clippingnode</a></p> <p>ClippingNode.h</p> <pre><code>#import "cocos2d.h" @interface ClippingNode : CCNode { CGRect clippingRegionInNodeCoordinates; CGRect clippingRegion; } @property (nonatomic) CGRect clippingRegion; @end </code></pre> <p>ClippingNode.m</p> <pre><code>#import "ClippingNode.h" @interface ClippingNode (PrivateMethods) -(void) deviceOrientationChanged:(NSNotification*)notification; @end @implementation ClippingNode -(CGRect) clippingRegion { return clippingRegionInNodeCoordinates; } -(void) setClippingRegion:(CGRect)region { // keep the original region coordinates in case the user wants them back unchanged clippingRegionInNodeCoordinates = region; self.position = clippingRegionInNodeCoordinates.origin; self.contentSize = clippingRegionInNodeCoordinates.size; // convert to retina coordinates if needed region = CC_RECT_POINTS_TO_PIXELS(region); // respect scaling clippingRegion = CGRectMake(region.origin.x * scaleX_, region.origin.y * scaleY_, region.size.width * scaleX_, region.size.height * scaleY_); } -(void) setScale:(float)newScale { [super setScale:newScale]; // re-adjust the clipping region according to the current scale factor [self setClippingRegion:clippingRegionInNodeCoordinates]; } -(void) deviceOrientationChanged:(NSNotification*)notification { // re-adjust the clipping region according to the current orientation [self setClippingRegion:clippingRegionInNodeCoordinates]; } -(void) visit { glEnable(GL_SCISSOR_TEST); CGPoint worldPosition = [self convertToWorldSpace:CGPointZero]; const CGFloat s = [[CCDirector sharedDirector] contentScaleFactor]; glScissor((clippingRegion.origin.x) + (worldPosition.x*s), (clippingRegion.origin.y) + (worldPosition.y*s), (clippingRegion.size.width), (clippingRegion.size.height)); [super visit]; glDisable(GL_SCISSOR_TEST); } @end </code></pre> <p>However, I need to clip a rotated CCNode. Any idea on how I could accomplish such a task?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload