本文整理汇总了C++中xr_vector::back方法的典型用法代码示例。如果您正苦于以下问题:C++ xr_vector::back方法的具体用法?C++ xr_vector::back怎么用?C++ xr_vector::back使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xr_vector
的用法示例。
在下文中一共展示了xr_vector::back方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
template <class T> IC void CCar::fill_wheel_vector(LPCSTR S,xr_vector<T>& type_wheels)
{
IKinematics* pKinematics =smart_cast<IKinematics*>(Visual());
string64 S1;
int count = _GetItemCount(S);
for (int i=0 ;i<count; ++i)
{
_GetItem (S,i,S1);
u16 bone_id = pKinematics->LL_BoneID(S1);
type_wheels.push_back (T());
T& twheel = type_wheels.back();
BONE_P_PAIR_IT J = bone_map.find(bone_id);
if (J == bone_map.end())
{
bone_map.insert(mk_pair(bone_id,physicsBone()));
SWheel& wheel = (m_wheels_map.insert(mk_pair(bone_id,SWheel(this)))).first->second;
wheel.bone_id = bone_id;
twheel.pwheel = &wheel;
wheel .Load(S1);
twheel .Load(S1);
}
else
{
twheel.pwheel = &(m_wheels_map.find(bone_id))->second;
twheel .Load(S1);
}
}
}
示例2: float
virtual void Execute()
{
CDeflector* D = 0;
for (;;)
{
// Get task
task_CS.Enter ();
thProgress = 1.f - float(task_pool.size())/float(g_deflectors.size());
if (task_pool.empty())
{
task_CS.Leave ();
return;
}
D = g_deflectors[task_pool.back()];
task_pool.pop_back ();
task_CS.Leave ();
// Perform operation
try {
D->Light (&DB,&LightsSelected,H);
} catch (...)
{
clMsg("* ERROR: CLMThread::Execute - light");
}
}
}
示例3:
CUILine::CUILine(const CUILine& other){
m_subLines = other.m_subLines;
m_tmpLine = NULL;
#ifdef LOG_ALL_LINES
ListLinesCount++;
dbg_list_lines.push_back(DBGList());
dbg_list_lines.back().wnd = this;
dbg_list_lines.back().num = ListLinesCount;
#endif
}
示例4:
CUIXml::CUIXml()
{
#ifdef LOG_ALL_XMLS
ListXmlCount++;
m_dbg_id = ListXmlCount;
dbg_list_xmls.push_back(DBGList_());
dbg_list_xmls.back().num = m_dbg_id;
dbg_list_xmls.back().closed = false;
#endif
}
示例5: fill_exhaust_vector
IC void CCar::fill_exhaust_vector(LPCSTR S,xr_vector<SExhaust>& exhausts)
{
IKinematics* pKinematics =smart_cast<IKinematics*>(Visual());
string64 S1;
int count = _GetItemCount(S);
for (int i=0 ;i<count; ++i)
{
_GetItem (S,i,S1);
u16 bone_id = pKinematics->LL_BoneID(S1);
exhausts.push_back (SExhaust(this));
SExhaust& exhaust = exhausts.back();
exhaust.bone_id = bone_id;
BONE_P_PAIR_IT J = bone_map.find(bone_id);
if (J == bone_map.end())
{
bone_map.insert(mk_pair(bone_id,physicsBone()));
}
}
}
示例6: CreateNode
BOOL ESceneAIMapTool::CreateNode(Fvector& vAt, SAINode& N, bool bIC)
{
// *** Query and cache polygons for ray-casting
Fvector PointUp; PointUp.set(vAt); PointUp.y += RCAST_Depth; SnapXZ (PointUp,m_Params.fPatchSize);
Fvector PointDown; PointDown.set(vAt); PointDown.y -= RCAST_Depth; SnapXZ (PointDown,m_Params.fPatchSize);
Fbox BB; BB.set (PointUp,PointUp); BB.grow(m_Params.fPatchSize/2); // box 1
Fbox B2; B2.set (PointDown,PointDown); B2.grow(m_Params.fPatchSize/2); // box 2
BB.merge (B2);
if (m_CFModel)
{
/*
for(u32 i=0; i<m_CFModel->get_tris_count(); ++i)
{
CDB::TRI* tri = (m_CFModel->get_tris()+i);
if(tri->material!=0)
Msg("non-default material");
}
*/
Scene->BoxQuery(PQ,BB,CDB::OPT_FULL_TEST,m_CFModel);
}else
Scene->BoxQuery(PQ,BB,CDB::OPT_FULL_TEST,GetSnapList());
DWORD dwCount = PQ.r_count();
if (dwCount==0){
// Log("chasm1");
return FALSE; // chasm?
}
// *** Transfer triangles and compute sector
// R_ASSERT(dwCount<RCAST_MaxTris);
static xr_vector<tri> tris; tris.reserve(RCAST_MaxTris); tris.clear();
for (DWORD i=0; i<dwCount; i++)
{
SPickQuery::SResult* R = PQ.r_begin()+i;
if (R->e_obj&&R->e_mesh)
{
CSurface* surf = R->e_mesh->GetSurfaceByFaceID(R->tag);
//. SGameMtl* mtl = GMLib.GetMaterialByID(surf->_GameMtl());
//. if (mtl->Flags.is(SGameMtl::flPassable))continue;
Shader_xrLC* c_sh = Device.ShaderXRLC.Get(surf->_ShaderXRLCName());
if (!c_sh->flags.bCollision) continue;
}
/*
if(m_CFModel)
{
u16 mtl_id = R->material;
if(std::find(m_ignored_materials.begin(), m_ignored_materials.end(), mtl_id) != m_ignored_materials.end() )
{
//. Msg("--ignore");
continue;
}
}
*/
tris.push_back (tri());
tri& D = tris.back();
Fvector* V = R->verts;
D.v[0] = &V[0];
D.v[1] = &V[1];
D.v[2] = &V[2];
D.N.mknormal(*D.v[0],*D.v[1],*D.v[2]);
if (D.N.y<=0) tris.pop_back ();
}
if (tris.size()==0){
// Log("chasm2");
return FALSE; // chasm?
}
static xr_vector<Fvector> points; points.reserve(RCAST_Total); points.clear();
static xr_vector<Fvector> normals; normals.reserve(RCAST_Total);normals.clear();
Fvector P,D; D.set(0,-1,0);
float coeff = 0.5f*m_Params.fPatchSize/float(RCAST_Count);
for (int x=-RCAST_Count; x<=RCAST_Count; x++)
{
P.x = vAt.x + coeff*float(x);
for (int z=-RCAST_Count; z<=RCAST_Count; z++) {
P.z = vAt.z + coeff*float(z);
P.y = vAt.y + 10.f;
float tri_min_range = flt_max;
int tri_selected = -1;
float range,u,v;
for (i=0; i<DWORD(tris.size()); i++){
if (ETOOLS::TestRayTriA(P,D,tris[i].v,u,v,range,false)){
if (range<tri_min_range){
tri_min_range = range;
tri_selected = i;
}
}
}
if (tri_selected>=0) {
P.y -= tri_min_range;
//.........这里部分代码省略.........
示例7: build_path
void CDetailPathManager::build_path(const xr_vector<u32> &level_path, u32 intermediate_index)
{
if (valid(m_start_position) && valid(m_dest_position)) {
switch (m_path_type) {
case eDetailPathTypeSmooth : {
build_smooth_path(level_path,intermediate_index);
break;
}
case eDetailPathTypeSmoothDodge : {
build_smooth_path(level_path,intermediate_index);
break;
}
case eDetailPathTypeSmoothCriteria : {
build_smooth_path(level_path,intermediate_index);
break;
}
default : NODEFAULT;
}
if (failed()) {
Msg ("! DetailPathManager has failed : from [%f,%f,%f] to [%f,%f,%f]", VPUSH(ai().level_graph().vertex_position(level_path.front())), VPUSH(ai().level_graph().vertex_position(level_path.back())));
#ifdef DEBUG
Msg ("! DetailPathManager has failed for object %s : from [%f,%f,%f] to [%f,%f,%f]", m_restricted_object ? *m_restricted_object->object().cName() : "unknown", VPUSH(ai().level_graph().vertex_position(level_path.front())), VPUSH(ai().level_graph().vertex_position(level_path.back())));
Msg ("List of available velocities :");
xr_vector<STravelParamsIndex>::const_iterator I = m_start_params.begin();
xr_vector<STravelParamsIndex>::const_iterator E = m_start_params.end();
for ( ; I != E; ++I)
Msg ("[%d] : [%f][%f]",(*I).index,(*I).linear_velocity,(*I).angular_velocity);
// for (;;)
// build_smooth_path(level_path,intermediate_index);
#endif
}
if (valid()) {
m_actuality = true;
m_current_travel_point = 0;
m_time_path_built = Device.dwTimeGlobal;
}
}
}