Пример #1
0
Sphere::Sphere(glm::vec3 position, Material* material, double radius, GLuint nLats, GLuint nLongs, GLuint shaderProgram)
	: Object(position, material, shaderProgram)
	, m_radius(radius)
	, m_nLats(nLats)
	, m_nLongs(nLongs)
{
	setupObject(); 
}
Пример #2
0
Light::Light(glm::vec3 aPosition, Material* aMaterial, AttenuationProperties attenuationProp, GLuint aShaderProgram)
	: Object(aPosition, aMaterial, aShaderProgram)
	, m_attenuationProperties(attenuationProp)
	, m_radius(1)
	, m_nLats(100)
	, m_nLongs(40)
{
	setupObject(); 
}
Пример #3
0
void GameTrack::addObject(GameCar* obj,bool is_static) {

	setupObject(obj,is_static);

	obj->update(manager, 0);	//get true pos and bb
	obj->quad_node_type=QUAD_NODE_TYPE_OBJECT;
	if(is_static) {
		quadtree->putNode(obj);
	}
	else {
		quadtree->putDynamicNode(obj);
	}
}
Пример #4
0
void CreatureUI::loadOutfit()
{
    Creature* n = (Creature*)this;

    unloadGfx();

    setupObject();

    if (!m_obj)
        return;

	Outfit_t outfit = n->getOutfit();

	for(uint32_t i = 0; i < m_obj->numsprites ; i++){
		Sprite* spr;
		if(m_obj->blendframes > 1){
			// a templated creature!
			// behold the magic!
			
			if((i / (m_obj->height * m_obj->width)) % 2 ) {
				 // if it's a template, then let's just put a NULL in there
				 m_gfx.insert(m_gfx.end(), NULL);
                continue;
            }
            else{
				// so it's not a template, but regular graphics.
				// great! let's colorize it using a template.
            	ASSERT(i + m_obj->height * m_obj->width < m_obj->numsprites);
            	ASSERT(m_obj->imageData)

            	spr = g_engine->createSprite("Tibia.spr", m_obj->imageData[i]);
            	Sprite* templatespr = g_engine->createSprite("Tibia.spr", m_obj->imageData[i + m_obj->height * m_obj->width]);
				spr->templatedColorize(templatespr, outfit.m_lookhead, outfit.m_lookbody, outfit.m_looklegs, outfit.m_lookfeet);
				delete templatespr;
            }
        }
        else{
			// it's not templated.
			// so sad. let's just load regular graphics
            ASSERT(m_obj->imageData)
        	spr = g_engine->createSprite("Tibia.spr", m_obj->imageData[i]);
        }
		m_gfx.insert(m_gfx.end(), spr);
	}
}
Пример #5
0
TreeWidgetContents TreeWidgetEditor::fillContentsFromTreeWidget(QTreeWidget *treeWidget)
{
    TreeWidgetContents treeCont;
    treeCont.fromTreeWidget(treeWidget, false);
    treeCont.applyToTreeWidget(ui.treeWidget, iconCache(), true);

    treeCont.m_headerItem.applyToListWidget(m_columnEditor->listWidget(), iconCache(), true);
    m_columnEditor->setupEditor(treeWidget, treeHeaderPropList);

    QList<QtVariantProperty*> rootProperties;
    rootProperties.append(setupPropertyGroup(tr("Per column properties"), treeItemColumnPropList));
    rootProperties.append(setupPropertyGroup(tr("Common properties"), treeItemCommonPropList));
    m_rootProperties = rootProperties;
    m_propertyBrowser->setPropertiesWithoutValueMarked(true);
    m_propertyBrowser->setRootIsDecorated(false);
    setupObject(treeWidget);

    if (ui.treeWidget->topLevelItemCount() > 0)
        ui.treeWidget->setCurrentItem(ui.treeWidget->topLevelItem(0));

    updateEditor();

    return treeCont;
}
Пример #6
0
void GameTrack::addCar(GameCar* car) {

	setupObject(car,false);
	sim->object_wake(car->physic_object);

	//sim->add_car(car->physic_object,car->physic_object->get_pos(),car->physic_object->get_angle());
	//sim->car_add_shape_quad(car->physic_object,cpv(0,0),dvectToCpVect(car->getSize()),0);
	num_cars++;

	car->setLap(0);
	car->setScore(0);
	car->setRank(0);
	cars.push_back(car);

	car->quad_node_type=QUAD_NODE_TYPE_OBJECT;
	/*
	if(num_cars==1) {
		objects[0]->object->set_pos(dvectToCpVect(car->getPos()+car->getHeadingVect()*(2)));
		sim->object_attach(car->physic_object,objects[0]->object,cpv(-0.5*4,0),cpv(1*4,0));
	}
	*/
	quadtree->putDynamicNode(car);
	car->initEngine(manager);
}
Пример #7
0
void AbstractItemEditor::setupEditor(QWidget *object, PropertyDefinition *propList)
{
    setupProperties(propList);
    setupObject(object);
}
Пример #8
0
bool Scene::loadScene(std::string sceneName) {
    
    //Get scene file path
    std::string file = PathReader::getPath("", sceneName.c_str(), "xml");
    
    //Load scene file.
	tinyxml2::XMLDocument doc;
    doc.LoadFile(file.c_str());
    
    //Invalid xml.
    if(doc.ErrorID() != XML_NO_ERROR) {
        
        cubeMappingSkybox = nullptr;
        light = nullptr;
        
        errorDescription = "Scene file doesn't exists.";
        return true;
    }
    
    //Variable used to flag the scene as erroneous.
    bool errorsInScene = false;
    
    //Get scene type.
    //Assume spectral as default.
    std::string sceneType = doc.RootElement()->Attribute("type");
    sceneType = sceneType == "" ? "Spectral" : sceneType;
    
    //Read camera.
    XMLElement* cameraElement = doc.RootElement()->FirstChildElement("camera");
    errorsInScene = errorsInScene || setupCamera(cameraElement);
    
    //Light.
    const XMLElement* lightElement = doc.RootElement()->FirstChildElement("light");
    const XMLElement* lightOrigin = lightElement->FirstChildElement("origin");
    
    if(lightElement) {
        
        std::string lightType = lightElement->Attribute("type");
        
        if(sceneType == "RGB") {
            
            bool rgbLightCreation = setupRGBLight(lightElement, lightOrigin, lightType);
            errorsInScene = errorsInScene || rgbLightCreation;
        } else {
            
            bool spectralLightCreation = setupSpectralLight(lightElement, lightOrigin, lightType);
            errorsInScene = errorsInScene || spectralLightCreation;
        }
    } else {
        
        errorDescription = errorDescription + "The scene doesn't contain any light.\n";
        errorsInScene = true;
    }
    
    //Eventually set a cube mapping skybox.
    setupSkyboxWithCubeMapping(doc);
    
    //Objects
    XMLElement *objectsElement = doc.RootElement()->FirstChildElement("objects");
    
    if(!objectsElement) {
        
        errorDescription = errorDescription + "The scene doesn't contain any object.\n";
        errorsInScene = true;
    }
    
    //Init geometric objects.
    for(XMLElement *objectElement = objectsElement->FirstChildElement("object");
        objectElement != NULL;
        objectElement = objectElement->NextSiblingElement("object")) {
        
        std::string type = objectElement->Attribute("type");
        
        //Object creation
        Model* object;
        bool objectCreation = setupObject(&object, objectElement);
        errorsInScene = errorsInScene || objectCreation;
        
        //Object material creation.
        const XMLElement* material = objectElement->FirstChildElement("material");
        
        if(sceneType == "RGB") {
            
            bool materialRGBCreation = setupRGBObjectMaterial(object, material);
            errorsInScene = errorsInScene || materialRGBCreation;
        } else {
            
            bool materialBRDFCreation = setupBRDFObjectMaterial(object, material);
            errorsInScene = errorsInScene || materialBRDFCreation;
        }
        
        //add object.
        objects.push_back(object);
    }
    
    //Init polygonal mesh.
    for(XMLElement *objectElement = objectsElement->FirstChildElement("mesh");
        objectElement != NULL;
        objectElement = objectElement->NextSiblingElement("mesh")) {
        
        const XMLElement* objFile = objectElement->FirstChildElement("objFile");
        
        bool backFaceCulling = false;
        
        if(attributesExist(objFile, {"backFaceCulling"})) {
            
            backFaceCulling = objFile->FindAttribute("backFaceCulling")->BoolValue();
        }
        
        std::string objName = objFile->Attribute("name");
        std::string objFilePath = PathReader::getPath("OBJs", objName.c_str(), "obj");
        
        ObjParser objParser;
        objParser.parseObj(objFilePath.c_str(), backFaceCulling);
        std::vector<Model *> pList = objParser.getPolygonalShapes();

        const XMLElement* material = objectElement->FirstChildElement("material");
        
        for(std::vector<Model *>::size_type i = 0; i != pList.size(); i++) {

            if(sceneType == "RGB") {
                
                bool materialRGBCreation = setupRGBObjectMaterial(pList[i], material);
                errorsInScene = errorsInScene || materialRGBCreation;
            } else {
                
                bool materialBRDFCreation = setupBRDFObjectMaterial(pList[i], material);
                errorsInScene = errorsInScene || materialBRDFCreation;
            }
        }
        
        //Setup AABB.
        const XMLElement* aabbElement = objectElement->FirstChildElement("aabb");
        AxisAlignedBoundingBox aabb;
        setupAABB(aabb, aabbElement);

        //Create mesh.
        Model* mesh = new PolygonalMesh(pList, aabb);
        
        //Add mesh.
        objects.push_back(mesh);
    }
    
    //SCLT specific configuration.
    errorsInScene = errorsInScene || setupSCLTParameter(doc, sceneType);
        
    return errorsInScene;
}