MaterialMgr::MaterialMgr() :mDefaultMinFilter(FO_POINT), mDefaultMaxFilter(FO_POINT), mDefaultMipFilter(FO_NONE) { //set for scriptLoader mLoadOrder = 100; mScriptExts.push_back(".mtl"); //ResourceGroupMgr::getSingleton()._registerScriptLoader(this); createDefaultMaterial(); }
osg::Geode* readFeature(OGRFeature* ogrFeature, bool useRandomColorByFeature) const { if (!ogrFeature || !ogrFeature->GetGeometryRef()) return 0; osg::Geometry* drawable = 0; bool disableCulling = false; // Read the geometry switch(ogrFeature->GetGeometryRef()->getGeometryType()) { case wkbPoint: case wkbPoint25D: // point to drawable drawable = pointsToDrawable(static_cast<OGRPoint *>(ogrFeature->GetGeometryRef())); disableCulling = true; break; case wkbLinearRing: drawable = linearRingToDrawable(static_cast<OGRLinearRing *>(ogrFeature->GetGeometryRef())); break; case wkbLineString: case wkbLineString25D: drawable = lineStringToDrawable(static_cast<OGRLineString*>(ogrFeature->GetGeometryRef())); break; case wkbPolygon: case wkbPolygon25D: drawable = polygonToDrawable(static_cast<OGRPolygon*>(ogrFeature->GetGeometryRef())); break; case wkbMultiPoint: case wkbMultiPoint25D: drawable = multiPointToDrawable(static_cast<OGRMultiPoint*>(ogrFeature->GetGeometryRef())); disableCulling = true; break; case wkbMultiLineString: case wkbMultiLineString25D: drawable = multiLineStringToDrawable(static_cast<OGRMultiLineString*>(ogrFeature->GetGeometryRef())); break; case wkbMultiPolygon: case wkbMultiPolygon25D: drawable = multiPolygonToDrawable(static_cast<OGRMultiPolygon*>(ogrFeature->GetGeometryRef())); break; case wkbGeometryCollection: case wkbGeometryCollection25D: OSG_WARN << "This geometry is not yet implemented " << OGRGeometryTypeToName(ogrFeature->GetGeometryRef()->getGeometryType()) << std::endl; break; case wkbNone: OSG_WARN << "No WKB Geometry " << OGRGeometryTypeToName(ogrFeature->GetGeometryRef()->getGeometryType()) << std::endl; break; case wkbUnknown: default: OSG_WARN << "Unknown WKB Geometry " << OGRGeometryTypeToName(ogrFeature->GetGeometryRef()->getGeometryType()) << std::endl; break; } if (!drawable) return 0; osg::Geode* geode = new osg::Geode(); if (disableCulling) geode->setCullingActive(false); // because culling on one points geode is always true, so i disable it geode->addDrawable(drawable); if (useRandomColorByFeature) geode->getOrCreateStateSet()->setAttributeAndModes(createDefaultMaterial(),true); for(int i = 0; i < ogrFeature->GetFieldCount(); i++) { geode->addDescription(std::string(ogrFeature->GetFieldDefnRef(i)->GetNameRef()) + " : " + std::string(ogrFeature->GetFieldAsString(i))); } return geode; }
iPhysics::iPhysics() { NewtonSetMemorySystem(AllocMemory, FreeMemory); createDefaultWorld(); createDefaultMaterial(); }