Reputation: 8298
[SOLVED]
I copy the chipmunk folder structure from cocos2d+chipmunk template and build OK.
Thanks to Beta for trying to help.
:::::
I download chipmunk 5.3.1 and try with a simple example but I receive this compiled errors:
Undefined symbols:
"_cpSpaceStep", referenced from:
-[ChipmunkTestViewController delta:] in ChipmunkTestViewController.o
"_cpBodyNew", referenced from:
-[ChipmunkTestViewController configurarChipmunk] in ChipmunkTestViewController.o
"_cpSpaceAddShape", referenced from:
-[ChipmunkTestViewController configurarChipmunk] in ChipmunkTestViewController.o
"_cpSpaceAddBody", referenced from:
-[ChipmunkTestViewController configurarChipmunk] in ChipmunkTestViewController.o
"_cpSpaceHashEach", referenced from:
-[ChipmunkTestViewController delta:] in ChipmunkTestViewController.o
"_cpInitChipmunk", referenced from:
-[ChipmunkTestViewController configurarChipmunk] in ChipmunkTestViewController.o
"_cpCircleShapeNew", referenced from:
-[ChipmunkTestViewController configurarChipmunk] in ChipmunkTestViewController.o
"_cpSpaceNew", referenced from:
-[ChipmunkTestViewController configurarChipmunk] in ChipmunkTestViewController.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
I'm not sure about adding Chipmunk libraries correctly, what sources from chipmunk .tgz I have to include?
Here's the code:
ChipmunkTestViewController.h
#import <UIKit/UIKit.h>
#import "chipmunk.h"
@interface ChipmunkTestViewController : UIViewController {
UIImageView *barra;
UIImageView *esfera;
cpSpace *space;
}
- (void) configurarChipmunk;
- (void) delta:(NSTimer *)timer;
void updateShape(void *ptr, void *unused);
@end
ChipmunkTestViewController.m
#import "ChipmunkTestViewController.h"
@implementation ChipmunkTestViewController
- (void) configurarChipmunk {
cpInitChipmunk(); // Init Chipmunk engine
space = cpSpaceNew(); // Create new Space
space->gravity = cpv(0, -100); // Direcction and magnitude of gravity in Space
[NSTimer scheduledTimerWithTimeInterval:1.0f/60.0f target:self selector:@selector(delta:) userInfo:nil repeats:YES]; // NSTimer for animations
// Create esfera Body
cpBody *esferaBody = cpBodyNew(50.0f, INFINITY);
esferaBody->p = cpv(160,250);
// Create esfera Shape
cpShape *esferaShape = cpCircleShapeNew(esferaBody, 15.0f, cpvzero);
esferaShape->e = 0.5f; // Elasticity
esferaShape->u = 0.8f; // Friction
esferaShape->data = esfera; // UIImageView association
esferaShape->collision_type = 1;
cpSpaceAddBody(space, esferaBody);
cpSpaceAddShape(space, esferaShape);
}
- (void) delta:(NSTimer *)timer {
cpSpaceStep(space, 1.0f/60.0f); // Refresh Space info
cpSpaceHashEach(space->activeShapes, &updateShape, nil); // Refresh Shapes info
}
void updateShape(void *ptr, void *unused) {
cpShape *shape = (cpShape*)ptr;
if (shape == nil || shape->body == nil || shape->data == nil) {
NSLog(@"Invalid Shape...");
return;
}
// Refresh Shape position
if ([(UIView*)shape->data isKindOfClass:[UIView class]]) {
[(UIView*)shape->data setCenter:CGPointMake(shape->body->p.x, 480 - shape->body->p.y)];
} else {
NSLog(@"Shape updated outside updateShape function...");
}
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
barra = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"barra.png"]];
barra.center = CGPointMake(160, 350);
esfera = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"esfera.png"]];
esfera.center = CGPointMake(160, 230);
[self.view addSubview:barra];
[self.view addSubview:esfera];
[self.view setBackgroundColor:[UIColor whiteColor]];
[self configurarChipmunk];
}
...
@end
Upvotes: 1
Views: 2850
Reputation: 3019
If you use CocoaPods:
"${PODS_ROOT}/Headers/Private/chipmunk-physics" to Recursive and
"${PODS_ROOT}/Headers/Public/chipmunk-physics" to Recursive
hope it helps someone
Upvotes: 0
Reputation: 1357
I had the same question this days and I did this:
1.- Go to project --> add to project and find cocos2d-iphone-0.99.5 file, then from within that directory I've added the External directory (containing the chipmunk files). Be sure to have a checkmark in the box next to Copy items into destination group's folder (if needed), and then click the Add button.
2.- I follow this tutorial: http://monoclestudios.com/cocos2d_whitepaper.html (in the middle of the page is all the information need to add chipmunk)
3.- Change the #include "constraints/util.h" declaration to: "#include util.h"
I think is done.
Upvotes: 0
Reputation: 8298
I copy the chipmunk folder structure from cocos2d+chipmunk template and build OK.
* Classes/Chipmunk/include/src for 'src' folder
* Classes/Chipmunk/chipmunk for 'include' folder
Upvotes: 0
Reputation: 216
You should use the iphonestatic.command script in the macosx/ directory to build a static library and copy the headers for you like the README says. Then all you have to do is drop that folder into your project.
If you are just copying the sources into your project you are almost certainly missing several very important optimization flags. Don't do it!
Upvotes: 4