moved files around
This commit is contained in:
93
Extras/FCollada/FCDocument/FCDObject.cpp
Normal file
93
Extras/FCollada/FCDocument/FCDObject.cpp
Normal file
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
Copyright (C) 2005-2006 Feeling Software Inc.
|
||||
MIT License: http://www.opensource.org/licenses/mit-license.php
|
||||
*/
|
||||
|
||||
#include "StdAfx.h"
|
||||
#include "FCDocument/FCDocument.h"
|
||||
#include "FCDocument/FCDObject.h"
|
||||
#include "FUtils/FUUniqueStringMap.h"
|
||||
#include "FUtils/FUDaeWriter.h"
|
||||
|
||||
//
|
||||
// FCDObject
|
||||
//
|
||||
|
||||
FCDObject::FCDObject(FUObjectContainer* container)
|
||||
: FUObject_Construct(container, "FCDObject")
|
||||
{
|
||||
}
|
||||
|
||||
FCDObject::FCDObject(FCDocument* document, const char* UNUSED_NDEBUG(className))
|
||||
: FUObject_Construct(document, className)
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
// FCDObjectWithId
|
||||
//
|
||||
|
||||
FCDObjectWithId::FCDObjectWithId(FCDocument* document, const char* baseId)
|
||||
: FCDObject(document, baseId)
|
||||
{
|
||||
daeId = baseId;
|
||||
hasUniqueId = false;
|
||||
}
|
||||
|
||||
FCDObjectWithId::~FCDObjectWithId()
|
||||
{
|
||||
RemoveDaeId();
|
||||
}
|
||||
|
||||
void FCDObjectWithId::Clone(FCDObjectWithId* clone) const
|
||||
{
|
||||
clone->daeId = daeId;
|
||||
clone->hasUniqueId = hasUniqueId;
|
||||
}
|
||||
|
||||
const string& FCDObjectWithId::GetDaeId() const
|
||||
{
|
||||
if (!hasUniqueId)
|
||||
{
|
||||
// Generate a new id
|
||||
FCDObjectWithId* e = const_cast<FCDObjectWithId*>(this);
|
||||
FUSUniqueStringMap* names = e->GetDocument()->GetUniqueNameMap();
|
||||
FUAssert(!e->daeId.empty(), e->daeId = "unknown_object");
|
||||
names->AddUniqueString(e->daeId);
|
||||
e->hasUniqueId = true;
|
||||
}
|
||||
return daeId;
|
||||
}
|
||||
|
||||
void FCDObjectWithId::SetDaeId(const string& id)
|
||||
{
|
||||
RemoveDaeId();
|
||||
|
||||
// Use this id to enforce a unique id.
|
||||
FUSUniqueStringMap* names = GetDocument()->GetUniqueNameMap();
|
||||
daeId = FUDaeWriter::CleanId(id);
|
||||
names->AddUniqueString(daeId);
|
||||
hasUniqueId = true;
|
||||
}
|
||||
|
||||
void FCDObjectWithId::SetDaeId(string& id)
|
||||
{
|
||||
RemoveDaeId();
|
||||
|
||||
// Use this id to enforce a unique id.
|
||||
FUSUniqueStringMap* names = GetDocument()->GetUniqueNameMap();
|
||||
daeId = FUDaeWriter::CleanId(id);
|
||||
names->AddUniqueString(daeId);
|
||||
id = daeId;
|
||||
hasUniqueId = true;
|
||||
}
|
||||
|
||||
void FCDObjectWithId::RemoveDaeId()
|
||||
{
|
||||
if (hasUniqueId)
|
||||
{
|
||||
FUSUniqueStringMap* names = GetDocument()->GetUniqueNameMap();
|
||||
names->Erase(daeId);
|
||||
hasUniqueId = false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user