Пример #1
0
// load the mesh
bool TriMesh::LoadMesh( const string& str , Transform& transform )
{
	// set the tranformation
	m_Transform = transform;

	// load the mesh
	bool flag = MeshManager::GetSingleton().LoadMesh( str , this );
	if( false == flag )
		return false;

	_copyMaterial();

	return true;
}
Пример #2
0
/* ----------------
 *	copyObject returns a copy of the node or list. If it is a list, it
 *      recursively copies its items.
 * ----------------
 */
void *
copyObject(void *from)
{
    void *retval;
    
    if (from==NULL)
	return NULL;
    switch(nodeTag(from)) {
	/*
	 * PLAN NODES
	 */
    case T_Plan:
	retval = _copyPlan(from);
	break;
    case T_Existential:
	retval = _copyExistential(from);
	break;
    case T_Result:
	retval = _copyResult(from);
	break;
    case T_Append:
	retval = _copyAppend(from);
	break;
    case T_Scan:
	retval = _copyScan(from);
	break;
    case T_SeqScan:
	retval = _copySeqScan(from);
	break;
    case T_IndexScan:
	retval = _copyIndexScan(from);
	break;
    case T_Join:
	retval = _copyJoin(from);
	break;
    case T_NestLoop:
	retval = _copyNestLoop(from);
	break;
    case T_MergeJoin:
	retval = _copyMergeJoin(from);
	break;
    case T_HashJoin:
	retval = _copyHashJoin(from);
	break;
    case T_Temp:
	retval = _copyTemp(from);
	break;
    case T_Material:
	retval = _copyMaterial(from);
	break;
    case T_Sort:
	retval = _copySort(from);
	break;
    case T_Agg:
	retval = _copyAgg(from);
	break;
    case T_Unique:
	retval = _copyUnique(from);
	break;
    case T_Hash:
	retval = _copyHash(from);
	break;

	/*
	 * PRIMITIVE NODES
	 */
    case T_Resdom:
	retval = _copyResdom(from);
	break;
    case T_Fjoin:
	retval = _copyFjoin(from);
	break;
    case T_Expr:
	retval = _copyExpr(from);
	break;
    case T_Var:
	retval = _copyVar(from);
	break;
    case T_Oper:
	retval = _copyOper(from);
	break;
    case T_Const:
	retval = _copyConst(from);
	break;
    case T_Param:
	retval = _copyParam(from);
	break;
    case T_Func:
	retval = _copyFunc(from);
	break;
    case T_Array:
	retval = _copyArray(from);
	break;
    case T_ArrayRef:
	retval = _copyArrayRef(from);
	break;
    case T_Aggreg:
	retval = _copyAggreg(from);
	break;
	/*
	 * RELATION NODES
	 */
    case T_Rel:
	retval = _copyRel(from);
	break;
    case T_Path:
	retval = _copyPath(from);
	break;
    case T_IndexPath:
	retval = _copyIndexPath(from);
	break;
    case T_JoinPath:
	retval = _copyJoinPath(from);
	break;
    case T_MergePath:
	retval = _copyMergePath(from);
	break;
    case T_HashPath:
	retval = _copyHashPath(from);
	break;
    case T_OrderKey:
	retval = _copyOrderKey(from);
	break;
    case T_JoinKey:
	retval = _copyJoinKey(from);
	break;
    case T_MergeOrder:
	retval = _copyMergeOrder(from);
	break;
    case T_CInfo:
	retval = _copyCInfo(from);
	break;
    case T_JoinMethod:
	retval = _copyJoinMethod(from);
	break;
    case T_HInfo:
	retval = _copyHInfo(from);
	break;
    case T_MInfo:
	retval = _copyMInfo(from);
	break;
    case T_JInfo:
	retval = _copyJInfo(from);
	break;
    case T_Iter:
	retval = _copyIter(from);
	break;
    case T_Stream:
	retval = _copyStream(from);
	break;

	/*
	 * PARSE NODES
	 */
    case T_Query:
	retval = _copyQuery(from);
	break;
    case T_TargetEntry:
	retval = _copyTargetEntry(from);
	break;
    case T_RangeTblEntry:
	retval = _copyRangeTblEntry(from);
	break;
    case T_SortClause:
	retval = _copySortClause(from);
	break;
	
	/*
	 * VALUE NODES
	 */
    case T_Integer: case T_String: case T_Float:
	retval = _copyValue(from);
	break;
    case T_List:
	{
	    List *list=from, *l;
	    List *newlist = NIL, *nl;
	    foreach(l, list) {
		if (newlist==NIL) {
		    newlist = nl = lcons(copyObject(lfirst(l)),NIL);
		}else {
		    lnext(nl) = lcons(copyObject(lfirst(l)),NIL);
		    nl = lnext(nl);
		}
	    }
	    retval = newlist;
	}
	break;
    default:
	elog(NOTICE, "copyObject: don't know how to copy %d", nodeTag(from));
	retval = from;
	break;
    }
    return retval;
}