x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
daeMetaGroup.cpp - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\DarkPuzzle\libs\bullet_sdk\Extras\COLLADA_DOM\src\dae\daeMetaGroup.cpp
旋转
特效
属性
历史版本
/* * Copyright 2006 Sony Computer Entertainment Inc. * * Licensed under the SCEA Shared Source License, Version 1.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at: * http://research.scea.com/scea_shared_source_license.html * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing permissions and limitations under the * License. */ #include
#include
#include
daeMetaGroup::daeMetaGroup( daeMetaElementAttribute *econ, daeMetaElement *container, daeMetaCMPolicy *parent, daeUInt ordinal, daeInt minO, daeInt maxO) : daeMetaCMPolicy( container, parent, ordinal, minO, maxO ), _elementContainer( econ ) {} daeMetaGroup::~daeMetaGroup() { if ( _elementContainer != NULL ) { delete _elementContainer; } } daeElement *daeMetaGroup::placeElement( daeElement *parent, daeElement *child, daeUInt &ordinal, daeInt offset, daeElement* before, daeElement *after ) { (void)offset; daeString nm = child->getElementName(); if ( nm == NULL ) { nm = child->getTypeName(); } if ( findChild( nm ) == NULL ) { return false; } daeElementRef el; #if 0 daeInt elCnt = _elementContainer->getCount(parent); //check existing groups //This doesn't work properly. Because the choice can't check if you make two decisions you cannot fail //here when you are supposed to. Luckily the current schema just has groups with single choices so //every element needs a new group container. Wasteful but thats how the schema is and its how it works. for ( daeInt x = 0; x < elCnt; x++ ) { daeMemoryRef mem = _elementContainer->get(parent, x ); if ( mem != NULL ) { el = *(daeElementRef*)mem; } if ( el == NULL ) { continue; } if ( before != NULL ) { if ( _elementContainer->_elementType->placeBefore( before, el, child, &ordinal ) ) { ordinal = ordinal + _ordinalOffset; return true; } } else if ( after != NULL ) { if ( _elementContainer->_elementType->placeAfter( after, el, child, &ordinal ) ) { ordinal = ordinal + _ordinalOffset; return true; } } else { if ( _elementContainer->_elementType->place( el, child, &ordinal ) ) { ordinal = ordinal + _ordinalOffset; return true; } } } #endif //check if the element trying to be placed is a group element. If so Just add it don't create a new one. if ( strcmp( nm, _elementContainer->getName() ) == 0 ) { if ( _elementContainer->placeElement(parent, child, ordinal, offset ) != NULL ) { return child; } } //if you couldn't place in existing groups make a new one if you can el = _elementContainer->placeElement(parent, _elementContainer->_elementType->create(), ordinal, offset ); if ( el != NULL ) { //el = *(daeElementRef*)_elementContainer->get(parent, elCnt ); if ( before != NULL ) { if ( _elementContainer->_elementType->placeBefore( before, el, child, &ordinal ) ) { ordinal = ordinal + _ordinalOffset; return el; } } else if ( after != NULL ) { if ( _elementContainer->_elementType->placeAfter( after, el, child, &ordinal ) ) { ordinal = ordinal + _ordinalOffset; return el; } } else { if ( _elementContainer->_elementType->place( el, child, &ordinal ) ) { ordinal = ordinal + _ordinalOffset; return el; } } } return NULL; } daeBool daeMetaGroup::removeElement( daeElement *parent, daeElement *child ) { daeElementRef el; daeInt elCnt = _elementContainer->getCount(parent); for ( daeInt x = 0; x < elCnt; x++ ) { daeMemoryRef mem = _elementContainer->get(parent, x ); if ( mem != NULL ) { el = *(daeElementRef*)mem; } if ( el == NULL ) { continue; } if ( el->removeChildElement( child ) ) { _elementContainer->removeChildElement( el ); return true; } } return false; } daeMetaElement * daeMetaGroup::findChild( daeString elementName ) { if ( strcmp( _elementContainer->getName(), elementName ) == 0 ) { return _elementContainer->getElementType(); } return _elementContainer->_elementType->getCMRoot()->findChild( elementName ); } void daeMetaGroup::getChildren( daeElement *parent, daeElementRefArray &array ) { size_t cnt = _elementContainer->getCount( parent ); for ( size_t x = 0; x < cnt; x++ ) { (*((daeElementRef*)_elementContainer->get(parent, (daeInt)x )))->getChildren(array); } //_elementContainer->_elementType->getChildren( parent, array ); }
daeMetaGroup.cpp
网页地址
文件地址
上一页
18/24
下一页
下载
( 4 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.