Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

134 lines
2.3 KiB
C++

//-------------------------------------------------------------------------------------------------------+
// Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd.
// = FileName : TGMeshNode3D 类
// = Version : ver2.0
// = Author : wlw
// = CreateDate : 2002-09-09
// = Description: TGMeshNode3D 定义
// = Maintainers:
//
//-------------------------------------------------------------------------------------------------------+
#include "StdAfx.h"
#include "TGMeshNode3D.h"
TGMeshNode3D::TGMeshNode3D(const TGPoint&pt):TGPoint(pt)
{
}
TGMeshNode3D::~TGMeshNode3D()
{
Clear();
}
void TGMeshNode3D::AppendEdge(TGMeshEdge3D* pEdge)
{
m_lstEdge.AddTail(pEdge);
}
void TGMeshNode3D::Clear()
{
TDualPtrList<TGMeshEdge3D*> temp;
temp.Conbine(m_lstEdge);
}
TGMeshEdge3D* TGMeshNode3D::GetOnlyEdge()
{
return m_lstEdge.IsEmpty()?NULL:m_lstEdge[0];
}
void TGMeshNode3D::RemoveEdge(TGMeshEdge3D*pEdge)
{
if (m_lstEdge.FindTo(pEdge))
{
m_lstEdge.FetchCur();
}
}
bool TGMeshNode3D::IsEndNode() const
{
return m_lstEdge.GetLength() == 1;
}
void TGMeshNode3D::Arrange()
{
}
TGMeshEdge3D* TGMeshNode3D::FindNextEdge(TGMeshEdge3D* pEdgeFrom)
{
if (IsEndNode())
{
return NULL;
}
m_lstEdge.FindTo(pEdgeFrom);
m_lstEdge.MoveToNext();
if (m_lstEdge.IsOut())
{
m_lstEdge.MoveToFirst();
}
return m_lstEdge.GetCurData();
}
TGMeshEdge3D* TGMeshNode3D::FindPreEdge(TGMeshEdge3D* pEdgeFrom)
{
if (IsEndNode())
{
return NULL;
}
m_lstEdge.FindTo(pEdgeFrom);
m_lstEdge.MoveToPre();
if (m_lstEdge.IsOut())
{
m_lstEdge.MoveToLast();
}
return m_lstEdge.GetCurData();
}
TGMeshEdge3D* TGMeshNode3D::FindNextSDEdge(TGMeshEdge3D* pEdgeFrom)
{
if (IsEndNode())
{
return NULL;
}
m_lstEdge.FindTo(pEdgeFrom);
m_lstEdge.MoveToNext();
if (m_lstEdge.IsOut())
{
m_lstEdge.MoveToFirst();
}
TGMeshEdge3D *pEdge = m_lstEdge.GetCurData();
if (pEdge == pEdgeFrom || pEdge->GetNode(1) != this)
{
return NULL;
}
return pEdge;
}
TGMeshEdge3D* TGMeshNode3D::FindPreSDEdge(TGMeshEdge3D* pEdgeFrom)
{
if (IsEndNode())
{
return NULL;
}
m_lstEdge.FindTo(pEdgeFrom);
m_lstEdge.MoveToPre();
if (m_lstEdge.IsOut())
{
m_lstEdge.MoveToLast();
}
TGMeshEdge3D *pEdge=m_lstEdge.GetCurData();
if (pEdge == pEdgeFrom || pEdge->GetNode(2) != this)
{
return NULL;
}
return pEdge;
}