本文整理汇总了C++中ogre::SceneNode类的典型用法代码示例。如果您正苦于以下问题:C++ SceneNode类的具体用法?C++ SceneNode怎么用?C++ SceneNode使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SceneNode类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: updateWater
void InputListener::updateWater(const Ogre::FrameEvent& evt)
{
float WaterFlow = FLOW_SPEED * evt.timeSinceLastFrame;
static float FlowAmount = 0.0f;
static bool FlowUp = true;
Ogre::SceneNode *pWaterNode = static_cast<Ogre::SceneNode*>(this->_currentScene->getCamera()->getSceneManager()->getRootSceneNode()->getChild("WaterNode"));
if (FlowUp)
FlowAmount += WaterFlow;
else
FlowAmount -= WaterFlow;
if (FlowAmount >= this->_currentScene->getWorld()->getWaterLevel() + FLOW_HEIGHT)
FlowUp = false;
else if (FlowAmount <=this->_currentScene->getWorld()->getWaterLevel())
FlowUp = true;
pWaterNode->translate(0, (FlowUp ? WaterFlow : -WaterFlow), 0);
if (this->_Game->getGameType() == Game::GameType::SUDDEN_DEATH)
this->_currentScene->getWorld()->riseWater();
this->_Game->killWormsUnderWater(pWaterNode);
}
开发者ID:vladydan,项目名称:Indie-Worms-3D,代码行数:19,代码来源:InputListener.cpp
示例2: position
//-------------------------------------------------------------------------------------
bool
PlayersManager::hidle(zappy::Player *p, int i)
{
OPlayer *OPlayer = this->mOPlayers.at(i);
if (OPlayer->stateHasChanged())
OPlayer->detachAnim();
Ogre::Vector3 position(p->getX() * Constants::SquareSize, 0, p->getY() * Constants::SquareSize);
Ogre::AnimationState *anim = OPlayer->getEntity()->
getAnimationState("Idle");
Ogre::SceneNode *node = OPlayer->getSceneNode();
anim->setEnabled(true);
if (position != node->getPosition())
node->setPosition(position);
anim->setLoop(true);
anim->setEnabled(true);
anim->addTime(this->tslf);
return true;
}
开发者ID:jorge-d,项目名称:zappy,代码行数:20,代码来源:PlayersManager.cpp
示例3: addActor
void OgreApplication::addActor(std::shared_ptr<OgreActor> actor)
{
try {
Ogre::Entity* ent;
ent = mSceneMgr->createEntity(actor->entName(), actor->meshName());
ent->setCastShadows(actor->castShadows());
Ogre::SceneNode *node;
node = mSceneMgr->getRootSceneNode()->createChildSceneNode(actor->nodeName());
node->setPosition(toOgreVector3(actor->position()));
node->setOrientation(toOgreQuaternion(actor->orientation()));
node->scale(actor->scale().x(),actor->scale().y(), actor->scale().z());
node->attachObject(ent);
}
catch (Ogre::ItemIdentityException e){
std::cerr << "OgreApplication::addActor, warning: Node " << actor->nodeName() << " already exists. Actor was not added." << std::endl;
}
}
开发者ID:fingerx,项目名称:eqOgre,代码行数:19,代码来源:ogreapplication.cpp
示例4: Initialize
void Laser::Initialize(Ogre::SceneManager *sceneManager, Ogre::SceneNode* parentNode, PhysicsEngine &physicsEngine, unsigned int parentID)
{
PhysicsEntity::Initialize(sceneManager, parentNode, physicsEngine, parentID);
//setting our mass to 0
bodyType = ENTITY_BODY_METAPHYSICAL;
dynamic = false;
mass = 0.0f;
Ogre::Entity *laserEntity = sceneManager->createEntity("Cylinder");
laserEntity->setMaterialName("LaserMaterial");
Ogre::SceneNode *laserSceneNode = sceneNode->createChildSceneNode("Laser" + Ogre::StringConverter::toString(entityCount));
laserSceneNode->attachObject(laserEntity);
laserSceneNode->scale(0.3f, 1000.0f, 0.3f);
laserSceneNode->pitch(Ogre::Radian(-Ogre::Math::HALF_PI));
laserSceneNode->translate(0,0,-500.0f);
sceneNode->setVisible(false);
}
开发者ID:Elephly,项目名称:d00m3d,代码行数:19,代码来源:laser.cpp
示例5: setShow
void NavigationMesh::setShow( bool show )
{
Ogre::Root *root = Ogre::Root::getSingletonPtr();
Ogre::SceneManager* mgr = root->getSceneManager( "SceneManagerInstance" );
Ogre::ManualObject* debug;
Ogre::SceneNode* debugNode;
mShow = show;
if( mgr->hasSceneNode( "debugDrawNode2" ) )
{
debugNode = mgr->getSceneNode( "debugDrawNode2" );
}
else
{
debugNode = mgr->getRootSceneNode()->createChildSceneNode( "debugDrawNode2" );
debugNode->translate( 0, 1, 0 ); // Move up slightly to see lines better.
}
if( mgr->hasManualObject( "debugDraw2" ) )
debug = mgr->getManualObject( "debugDraw2" );
else
{
debug = mgr->createManualObject( "debugDraw2" );
debugNode->attachObject( debug );
debug->setQueryFlags( 0 );
debug->setRenderQueueGroup( Ogre::RENDER_QUEUE_OVERLAY );
}
if( !mShow )
{
mgr->destroyManualObject( debug );
return;
}
for( CellVector::iterator i = mCells.begin(); i != mCells.end(); i++ )
{
i->debugDrawCell( debug, "debug/yellow", "debug/blue" );
}
return;
}
开发者ID:chuanyunjian,项目名称:Game-Engine-Testbed,代码行数:42,代码来源:navigationmesh.cpp
示例6: RemoveAttachmentMesh
void EC_Mesh::RemoveAttachmentMesh(uint index)
{
if (renderer_.expired())
return;
RendererPtr renderer = renderer_.lock();
if (!entity_)
return;
if (index >= attachment_entities_.size())
return;
Ogre::SceneManager* scene_mgr = renderer->GetSceneManager();
if (attachment_entities_[index] && attachment_nodes_[index])
{
// See if attached to a tagpoint or an ordinary node
Ogre::TagPoint* tag = dynamic_cast<Ogre::TagPoint*>(attachment_nodes_[index]);
if (tag)
{
entity_->detachObjectFromBone(attachment_entities_[index]);
}
else
{
Ogre::SceneNode* scenenode = dynamic_cast<Ogre::SceneNode*>(attachment_nodes_[index]);
if (scenenode)
{
scenenode->detachObject(attachment_entities_[index]);
scene_mgr->destroySceneNode(scenenode);
}
}
attachment_nodes_[index] = 0;
}
if (attachment_entities_[index])
{
if (attachment_entities_[index]->sharesSkeletonInstance())
attachment_entities_[index]->stopSharingSkeletonInstance();
scene_mgr->destroyEntity(attachment_entities_[index]);
attachment_entities_[index] = 0;
}
}
开发者ID:A-K,项目名称:naali,代码行数:42,代码来源:EC_Mesh.cpp
示例7: loop
// Manage physics from this loop
// Please don't alter the Ogre scene manager directly. Instead use the designated methods (setPositionX, setPositionY, setPositionZ, setRoll, setPitch, setYaw, animate)
void loop(Ogre::SceneManager* smgr){
int dir = 1;
int timeStep = 10;
while(true){
// If the message array has any elements, the render loop is applying changes from physics loop
// If so, abort this timestep
if((*::message).size() == 1){
continue;
}
Sleep(timeStep);
Ogre::SceneManager::MovableObjectIterator iterator = smgr->getMovableObjectIterator("Entity");
while(iterator.hasMoreElements()){
// If the message array has any elements, the render loop is applying changes from physics loop
// If so, abort this timestep
if((*::message).size() == 1){
continue;
}
Ogre::Entity* entity = static_cast<Ogre::Entity*>(iterator.getNext());
// <>< <>< Make the cute fishy swim <>< <><
// This only moves fish
if(entity->hasAnimationState("swim")){
Ogre::SceneNode* sceneNode = entity->getParentSceneNode();
// Update position
Ogre::Vector3 pos = sceneNode->getPosition();
if(pos.x > 120){
dir = -1;
setYaw(entity, 180);
}
if(pos.x < -120){
dir = 1;
setYaw(entity, 180);
}
setPositionX(entity, sceneNode->getPosition().x + dir);
animate(entity, "swim");
}
}
}
}
开发者ID:torsteig,项目名称:OgreOculusTDT4290G10,代码行数:44,代码来源:PhysicsLoop.cpp
示例8:
OGRERendererRacer::OGRERendererRacer(Ogre::SceneManager* a_sceneMgr, Application* app, std::string aname) {
name = aname;
mpApp = app;
mSceneManager = a_sceneMgr;
//mpVehicle = app->mLocalPlayerRacer;
mRollAngle = 0;
mPitchAngle = 0;
mOrientation.FromAngleAxis(Ogre::Radian(0), Ogre::Vector3(1, 0, 0));
mVehicleNode = mSceneManager->getRootSceneNode()->createChildSceneNode();
mVehicleMeshNode = mVehicleNode->createChildSceneNode();
//mVehicleMeshNode->setScale(0.05,0.05,0.05);
//Ogre::Entity* entVehicle = mSceneManager->getEntity("Vehicle");
// Racer model:
mMeshEntity = mSceneManager->createEntity("Vehicle.mesh");
mVehicleMeshNode->attachObject(mMeshEntity);
// TODO 1: Reimplement
// Set up engine flame particle system:
mEngineFlameParticleSystem = mSceneManager->createParticleSystem(name + "_flame", "SpaceRoads/EngineFlame");
Ogre::SceneNode* particleNode = mVehicleMeshNode->createChildSceneNode();
particleNode->setPosition(0, -1.5, 3);
particleNode->attachObject((Ogre::ParticleSystem*) mEngineFlameParticleSystem);
// Set up engine flame particle system:
mEngineSmokeParticleSystem = mSceneManager->createParticleSystem(name + "_smoke", "SpaceRoads/EngineSmoke");
particleNode = mVehicleMeshNode->createChildSceneNode();
particleNode->setPosition(0, -1.5, 3);
particleNode->attachObject((Ogre::ParticleSystem*) mEngineSmokeParticleSystem);
}
开发者ID:sebhd,项目名称:spaceroads,代码行数:42,代码来源:OGRERendererRacer.cpp
示例9: createScene
void createScene()
{
// Create the Entity
Ogre::Entity* robot = mSceneMgr->createEntity("Robot", "robot.mesh");
// Attach robot to scene graph
Ogre::SceneNode* RobotNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("Robot");
//RobotNode->setPosition((Ogre::Real)-0.3, (Ogre::Real)0.2, (Ogre::Real)0);
RobotNode->attachObject(robot);
RobotNode->scale((Ogre::Real)0.001,(Ogre::Real)0.001,(Ogre::Real)0.001);
RobotNode->pitch(Ogre::Degree(180));
RobotNode->yaw(Ogre::Degree(-90));
// The animation
// Set the good animation
mAnimationState = robot->getAnimationState( "Idle" );
// Start over when finished
mAnimationState->setLoop( true );
// Animation enabled
mAnimationState->setEnabled( true );
}
开发者ID:976717326,项目名称:visp,代码行数:20,代码来源:HelloWorldOgreAdvanced.cpp
示例10:
//-------------------------------------------------------------------------------------
void ProjectO3d::createScene(void)
{
// create your scene here :)
// Set the scene's ambient light
mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5f, 0.5f, 0.5f));
// Create an Entity
Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");
// Create a SceneNode and attach the Entity to it
Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("HeadNode");
headNode->attachObject(ogreHead);
// Create a Light and set its position
Ogre::Light* light = mSceneMgr->createLight("MainLight");
light->setPosition(20.0f, 80.0f, 50.0f);
// here we will load a forsaken model when the loader is finished
//MXloader* mxl = new MXloader("titan.mx");
}
开发者ID:HymiR,项目名称:Forsaken,代码行数:21,代码来源:ProjectO3d.cpp
示例11:
/**
* @brief Dtor.
*/
~EntityPointMarker()
{
if (mMarkerEntity) {
mMarkerEntity->_getManager()->destroyEntity(mMarkerEntity);
}
if (mMarkerNode) {
mMarkerNode->getCreator()->destroySceneNode(mMarkerNode);
}
delete mMarkerDirectionIndicator;
}
开发者ID:Laefy,项目名称:ember,代码行数:14,代码来源:EntityEditor.cpp
示例12: createChildren
void Replicator::createChildren(int value)
{
Ogre::Entity *childEnt = _sceneManager->createEntity(_meshType);
Ogre::SceneNode* childNode = _node->createChildSceneNode();
if ( _materialName != "" ) {
childEnt->setMaterialName(_materialName);
}
childNode->attachObject(childEnt);
Ogre::Real childMinSize = getScale().x * 5;
Ogre::Real childMaxSize = getScale().x * 10;
Ogre::Real size = Ogre::Math::RangeRandom(childMinSize, childMaxSize);
childNode->setScale(size + (value / 1.5), size + (value / 1.5), size + (value / 1.5));
Ogre::Real x = Ogre::Math::RangeRandom(-300,300);
Ogre::Real z = Ogre::Math::RangeRandom(-300,300);
Ogre::Real y = Ogre::Math::RangeRandom(-300,300);
childNode->setPosition(x, y, z);
children.push_back(childEnt);
}
开发者ID:GEDEMODD,项目名称:GEDELOK,代码行数:20,代码来源:Replicator.cpp
示例13: LocalToWorld
float3x4 EC_Mesh::LocalToWorld() const
{
if (!entity_)
{
LogError(QString("EC_Mesh::LocalToWorld failed! No entity exists in mesh \"%1\" (entity: \"%2\")!").arg(meshRef.Get().ref).arg(ParentEntity() ? ParentEntity()->Name() : "(EC_Mesh with no parent entity)"));
return float3x4::identity;
}
Ogre::SceneNode *node = entity_->getParentSceneNode();
if (!node)
{
LogError(QString("EC_Mesh::LocalToWorld failed! Ogre::Entity is not attached to a Ogre::SceneNode! Mesh \"%1\" (entity: \"%2\")!").arg(meshRef.Get().ref).arg(ParentEntity() ? ParentEntity()->Name() : "(EC_Mesh with no parent entity)"));
return float3x4::identity;
}
assume(!float3(node->_getDerivedScale()).IsZero());
float3x4 tm = float3x4::FromTRS(node->_getDerivedPosition(), node->_getDerivedOrientation(), node->_getDerivedScale());
assume(tm.IsColOrthogonal());
return tm;
}
开发者ID:katik,项目名称:naali,代码行数:20,代码来源:EC_Mesh.cpp
示例14: updateNodes
void OgreApplication::updateNodes(std::list<std::shared_ptr<OgreActor> > newActors, std::list<std::shared_ptr<DiffActor> > diffActor)
{
for(std::shared_ptr<OgreActor> actor : newActors){
addActor(actor);
}
for (std::shared_ptr<DiffActor> actor : diffActor)
{
Ogre::SceneNode *node;
try {
node = getSceneManager()->getSceneNode(actor->nodeName());
node->setPosition(toOgreVector3(actor->position()));
node->setOrientation(toOgreQuaternion(actor->orientation()));
}
catch (Ogre::ItemIdentityException e){
std::cerr << "OgreApplication::updateNodes, warning: Node " << actor->nodeName() << " was not found. DiffActor was ignored." << std::endl;
}
}
}
开发者ID:AlexeyBelezeko,项目名称:eqOgre,代码行数:20,代码来源:ogreapplication.cpp
示例15: onSetTarget
void Camera::onSetTarget(const GameHandle& target)
{
//! \hack const offset for camera
v3 offset(0.0f, 3.0f, -14);
Ogre::SceneManager* sceneMgr = Ogre::Root::getSingleton().getSceneManager(BFG_SCENEMANAGER);
if (!sceneMgr->hasSceneNode(stringify(target)))
{
errlog << "Target (" << stringify(target) << ") for camera (" << mHandle << ") does not exist!";
return;
}
Ogre::SceneNode* newParent = sceneMgr->getSceneNode(stringify(target));
Ogre::SceneNode* oldParent = mCameraNode->getParentSceneNode();
oldParent->removeChild(mCameraNode);
newParent->addChild(mCameraNode);
mCameraNode->setPosition(toOgre(offset));
}
开发者ID:cokeboL,项目名称:Brute-Force-Game-Engine,代码行数:20,代码来源:Camera.cpp
示例16: setVisible
void RenderComponentBillboardSet::setVisible(bool visible)
{
Ogre::SceneNode * pSceneNode;
pSceneNode=getParent()->getPositionalComponent()->getSceneNode();
if(visible)
{
if(!mBillboardSet->isAttached())
{
pSceneNode->attachObject(mBillboardSet);
}
}
else
{
if(mBillboardSet->isAttached() && mBillboardSet->getParentSceneNode()->getName().compare(pSceneNode->getName())==0)
{
pSceneNode->detachObject(mBillboardSet->getName());
}
}
}
开发者ID:juanjmostazo,项目名称:once-upon-a-night,代码行数:20,代码来源:RenderComponentBillboardSet.cpp
示例17: printf
TowerTemporal::~TowerTemporal(void)
{
printf("~TowerTemporal\n");
if (mpShotGraphics)
{
// Remove from scene node
Ogre::SceneNode* node = mpShotGraphics->getParentSceneNode();
if (node)
{
node->removeAndDestroyAllChildren();
node->getParentSceneNode()->removeChild(node);
mpsSceneMgr->destroySceneNode(node);
node = NULL;
}
// Destroy shot graphics
mpsSceneMgr->destroyManualObject(mpShotGraphics);
mpShotGraphics = NULL;
}
}
开发者ID:kinfung0602,项目名称:ogre-tower-defense,代码行数:20,代码来源:TowerTemporal.cpp
示例18:
const Ogre::Vector3 Mesh::getWorldSpacePosition(const Ogre::Vector3& ObjectSpacePosition) const
{
Ogre::Matrix4 mWorldMatrix;
if (mCreated)
{
mWorldMatrix = mEntity->getParentSceneNode()->_getFullTransform();
}
else
{
Ogre::SceneNode *mTmpSN = new Ogre::SceneNode(0);
mTmpSN->setPosition(mHydrax->getPosition());
mWorldMatrix = mTmpSN->_getFullTransform();
delete mTmpSN;
}
return mWorldMatrix.transformAffine(ObjectSpacePosition);
}
开发者ID:lockie,项目名称:Landscape,代码行数:20,代码来源:Mesh.cpp
示例19: addFrameGraph
void McsHudGui::addFrameGraph(CEGUI::Window* sheet)
{
Ogre::TexturePtr tex = mOgreRoot->getTextureManager()->createManual(
"FrameGraph", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, Ogre::TEX_TYPE_2D,
TimeGraphMaxFrames, TimeGraphMaxResolution, 0, Ogre::PF_R8G8B8, Ogre::TU_RENDERTARGET);
Ogre::SceneManager* debugSceneMgr = mOgreRoot->createSceneManager(Ogre::ST_GENERIC);
debugSceneMgr->setAmbientLight(Ogre::ColourValue(1.0f, 1.0f, 1.0f));
Ogre::MaterialPtr frameLinesMaterial = Ogre::MaterialManager::getSingleton().create("frameLinesMaterial","Game");
frameLinesMaterial->setReceiveShadows(false);
frameLinesMaterial->getTechnique(0)->setLightingEnabled(false);
frameLinesMaterial->getTechnique(0)->getPass(0)->setDepthCheckEnabled(false);
frameLinesMaterial->getTechnique(0)->getPass(0)->setDepthWriteEnabled(false);
mFrameLines = new FrameGraphRenderable(TimeGraphMaxFrames, TimeGraphMaxResolution);
mFrameLines->setMaterial("frameLinesMaterial");
Ogre::SceneNode* frameLinesNode = debugSceneMgr->getRootSceneNode()->createChildSceneNode("frameGraph_node");
frameLinesNode->attachObject(mFrameLines);
Ogre::Camera* dbg_camera = debugSceneMgr->createCamera("item_camera");
dbg_camera->setAspectRatio(static_cast<Ogre::Real>(TimeGraphMaxFrames) / static_cast<Ogre::Real>(TimeGraphMaxResolution));
Ogre::Viewport *v = tex->getBuffer()->getRenderTarget()->addViewport(dbg_camera);
v->setClearEveryFrame( true );
v->setBackgroundColour( Ogre::ColourValue::Black );
CEGUI::Texture& guiTex = mCeRenderer->createTexture(tex);
CEGUI::Imageset& imageSet = CEGUI::ImagesetManager::getSingleton().create("FrameGraphImageset", guiTex);
imageSet.defineImage("FrameGraphImage", CEGUI::Point(0.0f, 0.0f), CEGUI::Size(guiTex.getSize()), CEGUI::Point(0.0f, 0.0f));
CEGUI::Window* si = CEGUI::WindowManager::getSingleton().createWindow("TaharezLook/StaticImage", "FrameGraphWindow");
si->setSize(CEGUI::UVector2(CEGUI::UDim(0.0f, TimeGraphMaxFrames), CEGUI::UDim(0.0f, TimeGraphMaxResolution)));
si->setPosition(CEGUI::UVector2(CEGUI::UDim(0.0f, 0), CEGUI::UDim(1.0f, -TimeGraphMaxResolution)));
si->setProperty("Image", CEGUI::PropertyHelper::imageToString(&imageSet.getImage("FrameGraphImage")));
si->setAlpha(0.6f);
si->setProperty("BackgroundEnabled", "False");
si->setProperty("FrameEnabled", "False");
sheet->addChildWindow(si);
}
开发者ID:1am3r,项目名称:cubicplanets,代码行数:41,代码来源:McsHudGui.cpp
示例20: plane
//----------------------------------------------------------------------------------------
ImageConverter::ImageConverter(const size_t& width/*=128*/, const size_t& height/*=128*/)
{
mWidth = width;
mHeight = height;
mResourceManager = Ogre::ResourceGroupManager::getSingletonPtr();
mResourceManager->createResourceGroup("QTImageConverter");
mResourceManager->initialiseResourceGroup("QTImageConverter");
mSceneMgrPtr = Ogre::Root::getSingletonPtr()->createSceneManager("OctreeSceneManager", "QTImageConverterSceneManager");
mSceneMgrPtr->setAmbientLight(Ogre::ColourValue(1, 1, 1));
Ogre::TexturePtr rendertexture = Ogre::TextureManager::getSingleton().createManual("RenderTex",
"QTImageConverter", Ogre::TEX_TYPE_2D,
mWidth, mHeight, 1, Ogre::PF_R8G8B8, Ogre::TU_RENDERTARGET);
mRttTex = rendertexture->getBuffer()->getRenderTarget();
// create our plane to set a texture to
Ogre::Plane plane(Ogre::Vector3::UNIT_Z, 0);
Ogre::MeshManager::getSingleton().createPlane("terrain", "QTImageConverter",
plane, 100, 100, 1, 1, true, 1, 1, 1, Ogre::Vector3::UNIT_Y);
// attach the plane to the scene manager and rotate it so the camera can see it
mEntityTerrain = mSceneMgrPtr->createEntity("terrainEntity", "terrain");
Ogre::SceneNode* node = mSceneMgrPtr->getRootSceneNode()->createChildSceneNode();
node->attachObject(mEntityTerrain);
mEntityTerrain->setCastShadows(false);
Ogre::Camera* RTTCam = mSceneMgrPtr->createCamera("QTImageConverterCam");
RTTCam->setNearClipDistance(0.01F);
RTTCam->setFarClipDistance(0);
RTTCam->setAspectRatio(1);
RTTCam->setFOVy(Ogre::Degree(90));
RTTCam->setPosition(0, 0, 50);
RTTCam->lookAt(0, 0, 0);
Ogre::Viewport *v = mRttTex->addViewport(RTTCam);
v->setBackgroundColour(Ogre::ColourValue(1, 1, 1));
v->setClearEveryFrame(true);
}
开发者ID:jacmoe,项目名称:ogitor,代码行数:42,代码来源:imageconverter.cpp
注:本文中的ogre::SceneNode类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论