Exemplo n.º 1
0
Entity *ScreenSprite::Clone(bool deepClone, bool ignoreEditorOnly) {
	ScreenSprite *newSprite = new ScreenSprite(getTexture()->getResourcePath(), spriteWidth, spriteHeight);
	for(int i=0; i < animations.size(); i++) {
		newSprite->addAnimation(animations[i]->name, animations[i]->frames, animations[i]->speed);
	}
	if(currentAnimation) {
		newSprite->playAnimation(currentAnimation->name, currentFrame, playingOnce);
	}
	applyClone(newSprite, deepClone, ignoreEditorOnly);
	return newSprite;
}
Exemplo n.º 2
0
HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {

#ifdef __APPLE__
	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
#else
	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
#endif

	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

	CoreServices::getInstance()->getRenderer()->setTextureFilteringMode(Renderer::TEX_FILTERING_NEAREST);
	Screen *screen = new Screen();
	ScreenSprite *sprite = new ScreenSprite("Resources/sprite_sheet.png", 93, 78);
	sprite->setPosition(350,150);
	sprite->setScale(7,7);
	screen->addChild(sprite);
	sprite->addAnimation("ExampleAnimation", "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,29,29,29,29,29,29,29,29,29", 0.03);
	sprite->playAnimation("ExampleAnimation", 0, false);
}
ScreenEntity *ScreenEntityInstance::loadObjectEntryIntoEntity(ObjectEntry *entry) {

	ScreenEntity *entity = NULL;
	
	ObjectEntry *entityType = (*entry)["type"];
	if(entityType) {
	
		if(entityType->stringVal == "ScreenImage") {
			ObjectEntry *screenImageEntry = (*entry)["ScreenImage"];			
			String imagePath = (*screenImageEntry)["filePath"]->stringVal;
			ScreenImage *image = new ScreenImage(imagePath);
			
			ObjectEntry *screenShapeEntry = (*entry)["ScreenShape"];
			applyScreenShape(screenShapeEntry, image);
			entity = image;
		}
		
		if(entityType->stringVal == "ScreenParticleEmitter") {
			ObjectEntry *emitterEntry = (*entry)["ScreenParticleEmitter"];
									
			ScreenParticleEmitter *placingEmitter = new ScreenParticleEmitter((*emitterEntry)["texturePath"]->stringVal, Particle::BILLBOARD_PARTICLE, ParticleEmitter::CONTINUOUS_EMITTER, (*emitterEntry)["lifespan"]->NumberVal, (*emitterEntry)["particleCount"]->NumberVal, Vector3((*emitterEntry)["dirX"]->NumberVal, (*emitterEntry)["dirY"]->NumberVal, 0.0), Vector3((*emitterEntry)["gravX"]->NumberVal, (*emitterEntry)["gravY"]->NumberVal, 0.0), Vector3((*emitterEntry)["deviationX"]->NumberVal, (*emitterEntry)["deviationY"]->NumberVal, 0.0), Vector3((*emitterEntry)["radiusX"]->NumberVal, (*emitterEntry)["radiusY"]->NumberVal, 0.0));
			
				placingEmitter->brightnessDeviation = (*emitterEntry)["brightnessDeviation"]->NumberVal;
				placingEmitter->particleSize = (*emitterEntry)["particleSize"]->NumberVal;
				placingEmitter->perlinModSize = (*emitterEntry)["perlinModSize"]->NumberVal;
				placingEmitter->perlinEnabled = (*emitterEntry)["perlinEnabled"]->boolVal;
				placingEmitter->particleSpeedMod = (*emitterEntry)["particleSpeedMod"]->NumberVal;

				placingEmitter->rotationSpeed = (*emitterEntry)["rotationSpeed"]->NumberVal;
				placingEmitter->rotationFollowsPath = (*emitterEntry)["rotationFollowsPath"]->boolVal;
				placingEmitter->useScaleCurves = (*emitterEntry)["useScaleCurves"]->boolVal;
				placingEmitter->useColorCurves = (*emitterEntry)["useColorCurves"]->boolVal;
									
				placingEmitter->setParticleBlendingMode((*emitterEntry)["particleBlendMode"]->intVal);			
				
				placingEmitter->setWidth(placingEmitter->emitterRadius.x);
				placingEmitter->setHeight(placingEmitter->emitterRadius.y);	
				
				parseObjectIntoCurve((*emitterEntry)["scaleCurve"], &placingEmitter->scaleCurve);
				parseObjectIntoCurve((*emitterEntry)["colorCurveR"], &placingEmitter->colorCurveR);
				parseObjectIntoCurve((*emitterEntry)["colorCurveG"], &placingEmitter->colorCurveG);
				parseObjectIntoCurve((*emitterEntry)["colorCurveB"], &placingEmitter->colorCurveB);
				parseObjectIntoCurve((*emitterEntry)["colorCurveA"], &placingEmitter->colorCurveA);										
			
			entity = placingEmitter;
		
		}		

		if(entityType->stringVal == "ScreenSprite") {
			ObjectEntry *screenSpriteEntry = (*entry)["ScreenSprite"];			
			String filePath = (*screenSpriteEntry)["filePath"]->stringVal;
			
			ScreenSprite *sprite = new ScreenSprite(filePath);
			
			String animName = (*screenSpriteEntry)["anim"]->stringVal;
			sprite->playAnimation(animName, -1, false);
		

			ObjectEntry *screenShapeEntry = (*entry)["ScreenShape"];
			applyScreenShape(screenShapeEntry, sprite);
			entity = sprite;
		}


		if(entityType->stringVal == "ScreenEntityInstance") {
			ObjectEntry *screenInstanceEntry = (*entry)["ScreenEntityInstance"];
			String filePath = (*screenInstanceEntry)["filePath"]->stringVal;
			ScreenEntityInstance *instance = new ScreenEntityInstance(filePath);			
			entity = instance;
		}
		

		if(entityType->stringVal == "ScreenShape") {
			ObjectEntry *screenShapeEntry = (*entry)["ScreenShape"];
			ScreenShape *shape = new ScreenShape(0, 1, 1);
			applyScreenShape(screenShapeEntry, shape);
			entity = shape;
		}
		
		if(entityType->stringVal == "ScreenSound") {
			ObjectEntry *screenSoundEntry = (*entry)["ScreenSound"];
			
			String filePath = (*screenSoundEntry)["filePath"]->stringVal;
			Number refDistance = (*screenSoundEntry)["refDistance"]->NumberVal;
			Number maxDistance = (*screenSoundEntry)["maxDistance"]->NumberVal;
			Number volume = (*screenSoundEntry)["volume"]->NumberVal;
			Number pitch = (*screenSoundEntry)["pitch"]->NumberVal;
															
			ScreenSound *sound = new ScreenSound(filePath, refDistance, maxDistance);
			sound->getSound()->setVolume(volume);
			sound->getSound()->setPitch(pitch);	
			
			sound->setWidth(50);
			sound->setHeight(50);				
										
			entity = sound;
		}		
		

		if(entityType->stringVal == "ScreenLabel") {
			ObjectEntry *screenLabelEntry = (*entry)["ScreenLabel"];
			
			String text = (*screenLabelEntry)["text"]->stringVal;
			String font = (*screenLabelEntry)["font"]->stringVal;
			int size = (*screenLabelEntry)["size"]->intVal;
			int aaMode = (*screenLabelEntry)["aaMode"]->intVal;
												
			ScreenLabel *label = new ScreenLabel(text, size, font, aaMode);
			label->positionAtBaseline = false;
			
			ObjectEntry *screenShapeEntry = (*entry)["ScreenShape"];			
			applyScreenShape(screenShapeEntry, label);
			entity = label;
		}
	
	} 

	if(!entity) {
		entity = new ScreenEntity();
	}
	
	entity->ownsChildren = true;
	
	entity->setPositionMode(ScreenEntity::POSITION_CENTER);
	
	entity->color.r = (*entry)["colorR"]->NumberVal;
	entity->color.g = (*entry)["colorG"]->NumberVal;
	entity->color.b = (*entry)["colorB"]->NumberVal;
	entity->color.a = (*entry)["colorA"]->NumberVal;

	entity->blendingMode = (*entry)["blendMode"]->intVal;

	entity->scale.x = (*entry)["scaleX"]->NumberVal;
	entity->scale.y = (*entry)["scaleY"]->NumberVal;

	entity->position.x = (*entry)["posX"]->NumberVal;
	entity->position.y = (*entry)["posY"]->NumberVal;

	entity->setRotation((*entry)["rotation"]->NumberVal);
	
	entity->id = (*entry)["id"]->stringVal;
	
	String tagString = (*entry)["tags"]->stringVal; 
	
	if(tagString != "") {
		std::vector<String> tags = tagString.split(",");
		for(int i=0; i < tags.size(); i++) {
			entity->addTag(tags[i]);
		}
	}
	
	ObjectEntry *props = (*entry)["props"];
	if(props) {
		for(int i=0; i < props->length; i++) {		
			ObjectEntry *prop = ((*props))[i];		
			if(prop) {
				entity->setEntityProp((*prop)["name"]->stringVal, (*prop)["value"]->stringVal);
			}
		}
	}
														
	ObjectEntry *children = (*entry)["children"];
	
	if(children) {
		for(int i=0; i < children->length; i++) {
			ObjectEntry *childEntry = ((*children))[i];
			ScreenEntity *childEntity = loadObjectEntryIntoEntity(childEntry);
			entity->addChild(childEntity);				
		}
	}
		
	return entity;
}
Exemplo n.º 4
0
	virtual void Move (sf::Vector2f offset) {
		ScreenSprite::Move(offset);
		if (containedSprite)  {
			containedSprite->Move(offset);
		}
	}