本文整理汇总了C++中R_ASSERT函数的典型用法代码示例。如果您正苦于以下问题:C++ R_ASSERT函数的具体用法?C++ R_ASSERT怎么用?C++ R_ASSERT使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了R_ASSERT函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: function
void CPatternFunction::vfLoadEF(LPCSTR caFileName)
{
string_path caPath;
if (!FS.exist(caPath,"$game_ai$",caFileName)) {
Msg ("! Evaluation function : File not found \"%s\"",caPath);
R_ASSERT (false);
return;
}
IReader *F = FS.r_open(caPath);
F->r (&m_tEFHeader,sizeof(SEFHeader));
if (EFC_VERSION != m_tEFHeader.dwBuilderVersion) {
FS.r_close (F);
Msg ("! Evaluation function (%s) : Not supported version of the Evaluation Function Contructor",caPath);
R_ASSERT (false);
return;
}
F->r (&m_dwVariableCount,sizeof(m_dwVariableCount));
m_dwaAtomicFeatureRange = xr_alloc<u32>(m_dwVariableCount);
ZeroMemory (m_dwaAtomicFeatureRange,m_dwVariableCount*sizeof(u32));
u32 *m_dwaAtomicIndexes = xr_alloc<u32>(m_dwVariableCount);
ZeroMemory (m_dwaAtomicIndexes,m_dwVariableCount*sizeof(u32));
for (u32 i=0; i<m_dwVariableCount; ++i) {
F->r(m_dwaAtomicFeatureRange + i,sizeof(u32));
if (i)
m_dwaAtomicIndexes[i] = m_dwaAtomicIndexes[i-1] + m_dwaAtomicFeatureRange[i-1];
}
m_dwaVariableTypes = xr_alloc<u32>(m_dwVariableCount);
F->r (m_dwaVariableTypes,m_dwVariableCount*sizeof(u32));
F->r (&m_dwFunctionType,sizeof(u32));
F->r (&m_fMinResultValue,sizeof(float));
F->r (&m_fMaxResultValue,sizeof(float));
F->r (&m_dwPatternCount,sizeof(m_dwPatternCount));
m_tpPatterns = xr_alloc<SPattern>(m_dwPatternCount);
m_dwaPatternIndexes = xr_alloc<u32>(m_dwPatternCount);
ZeroMemory (m_dwaPatternIndexes,m_dwPatternCount*sizeof(u32));
m_dwParameterCount = 0;
for (u32 i=0; i<m_dwPatternCount; ++i) {
if (i)
m_dwaPatternIndexes[i] = m_dwParameterCount;
F->r (&(m_tpPatterns[i].dwCardinality),sizeof(m_tpPatterns[i].dwCardinality));
m_tpPatterns[i].dwaVariableIndexes = xr_alloc<u32>(m_tpPatterns[i].dwCardinality);
F->r (m_tpPatterns[i].dwaVariableIndexes,m_tpPatterns[i].dwCardinality*sizeof(u32));
u32 m_dwComplexity = 1;
for (int j=0; j<(int)m_tpPatterns[i].dwCardinality; ++j)
m_dwComplexity *= m_dwaAtomicFeatureRange[m_tpPatterns[i].dwaVariableIndexes[j]];
m_dwParameterCount += m_dwComplexity;
}
m_faParameters = xr_alloc<float>(m_dwParameterCount);
F->r (m_faParameters,m_dwParameterCount*sizeof(float));
FS.r_close (F);
m_dwaVariableValues = xr_alloc<u32>(m_dwVariableCount);
xr_free (m_dwaAtomicIndexes);
ef_storage().m_fpaBaseFunctions[m_dwFunctionType] = this;
_splitpath (caPath,0,0,m_caName,0);
// Msg ("* Evaluation function \"%s\" is successfully loaded",m_caName);
}
开发者ID:OLR-xray,项目名称:OLR-3.0,代码行数:70,代码来源:ef_pattern.cpp
示例2: Msg
//.........这里部分代码省略.........
m_dwBlowoutLightTime=m_StateTime[eZoneStateBlowout];
Msg("! ERROR: invalid 'blowout_light_time' in '%s'",section);
}
}
else
m_dwBlowoutLightTime = 0;
if(pSettings->line_exist(section,"blowout_sound_time"))
{
m_dwBlowoutSoundTime = pSettings->r_u32(section,"blowout_sound_time");
if (s32(m_dwBlowoutSoundTime)>m_StateTime[eZoneStateBlowout]) {
m_dwBlowoutSoundTime=m_StateTime[eZoneStateBlowout];
Msg("! ERROR: invalid 'blowout_sound_time' in '%s'",section);
}
}
else
m_dwBlowoutSoundTime = 0;
if(pSettings->line_exist(section,"blowout_explosion_time")) {
m_dwBlowoutExplosionTime = pSettings->r_u32(section,"blowout_explosion_time");
if (s32(m_dwBlowoutExplosionTime)>m_StateTime[eZoneStateBlowout]) {
m_dwBlowoutExplosionTime=m_StateTime[eZoneStateBlowout];
Msg("! ERROR: invalid 'blowout_explosion_time' in '%s'",section);
}
}
else
m_dwBlowoutExplosionTime = 0;
m_zone_flags.set(eBlowoutWind, pSettings->r_bool(section,"blowout_wind"));
if( m_zone_flags.test(eBlowoutWind) ){
m_dwBlowoutWindTimeStart = pSettings->r_u32(section,"blowout_wind_time_start");
m_dwBlowoutWindTimePeak = pSettings->r_u32(section,"blowout_wind_time_peak");
m_dwBlowoutWindTimeEnd = pSettings->r_u32(section,"blowout_wind_time_end");
R_ASSERT(m_dwBlowoutWindTimeStart < m_dwBlowoutWindTimePeak);
R_ASSERT(m_dwBlowoutWindTimePeak < m_dwBlowoutWindTimeEnd);
if((s32)m_dwBlowoutWindTimeEnd < m_StateTime[eZoneStateBlowout]){
m_dwBlowoutWindTimeEnd =u32( m_StateTime[eZoneStateBlowout]-1);
Msg("! ERROR: invalid 'blowout_wind_time_end' in '%s'",section);
}
m_fBlowoutWindPowerMax = pSettings->r_float(section,"blowout_wind_power");
}
//загрузить параметры световой вспышки от взрыва
m_zone_flags.set(eBlowoutLight, pSettings->r_bool (section, "blowout_light"));
if(m_zone_flags.test(eBlowoutLight) ){
sscanf(pSettings->r_string(section,"light_color"), "%f,%f,%f", &m_LightColor.r, &m_LightColor.g, &m_LightColor.b);
m_fLightRange = pSettings->r_float(section,"light_range");
m_fLightTime = pSettings->r_float(section,"light_time");
m_fLightTimeLeft = 0;
m_fLightHeight = pSettings->r_float(section,"light_height");
}
//загрузить параметры idle подсветки
m_zone_flags.set(eIdleLight, pSettings->r_bool (section, "idle_light"));
if( m_zone_flags.test(eIdleLight) )
{
m_fIdleLightRange = pSettings->r_float(section,"idle_light_range");
m_fIdleLightRangeDelta = pSettings->r_float(section,"idle_light_range_delta");
LPCSTR light_anim = pSettings->r_string(section,"idle_light_anim");
m_pIdleLAnim = LALib.FindItem(light_anim);
m_fIdleLightHeight = pSettings->r_float(section,"idle_light_height");
开发者ID:NeoAnomaly,项目名称:xray,代码行数:67,代码来源:CustomZone.cpp
示例3: LoadLibrary
void CHW::CreateD3D ()
{
#ifndef DEDICATED_SERVER
LPCSTR _name = "d3d9.dll";
#else
LPCSTR _name = "xrd3d9-null.dll";
#endif
hD3D9 = LoadLibrary(_name);
R_ASSERT2 (hD3D9,"Can't find 'd3d9.dll'\nPlease install latest version of DirectX before running this program");
typedef IDirect3D9 * WINAPI _Direct3DCreate9(UINT SDKVersion);
_Direct3DCreate9* createD3D = (_Direct3DCreate9*)GetProcAddress(hD3D9,"Direct3DCreate9"); R_ASSERT(createD3D);
this->pD3D = createD3D( D3D_SDK_VERSION );
R_ASSERT2 (this->pD3D,"Please install DirectX 9.0c");
}
开发者ID:OLR-xray,项目名称:OLR-3.0,代码行数:15,代码来源:HW.cpp
示例4: R_ASSERT2
void game_sv_GameState::Create (shared_str &options)
{
string_path fn_game;
m_item_respawner.clear_respawns();
if (FS.exist(fn_game, "$level$", "level.game"))
{
IReader *F = FS.r_open (fn_game);
IReader *O = 0;
// Load RPoints
if (0!=(O = F->open_chunk (RPOINT_CHUNK)))
{
for (int id=0; O->find_chunk(id); ++id)
{
RPoint R;
u8 team;
u8 type;
u16 GameType;
shared_str rp_profile;
O->r_fvector3 (R.P);
O->r_fvector3 (R.A);
team = O->r_u8 ();
type = O->r_u8 ();
GameType = O->r_u16 ();
if(type==rptItemSpawn)
O->r_stringZ (rp_profile);
if (GameType != EGameIDs(u16(-1)))
{
if ((Type() == eGameIDCaptureTheArtefact) && (GameType & eGameIDCaptureTheArtefact))
{
team = team - 1;
R_ASSERT2( ((team >= 0) && (team < 4)) ||
(type != rptActorSpawn),
"Problem with CTA Team indexes. Propably you have added rpoint of team 0 for cta game type.");
}
if ((!(GameType & eGameIDDeathmatch) && (Type() == eGameIDDeathmatch)) ||
(!(GameType & eGameIDTeamDeathmatch) && (Type() == eGameIDTeamDeathmatch)) ||
(!(GameType & eGameIDArtefactHunt) && (Type() == eGameIDArtefactHunt)) ||
(!(GameType & eGameIDCaptureTheArtefact) && (Type() == eGameIDCaptureTheArtefact))
)
{
continue;
};
};
switch (type)
{
case rptActorSpawn:
{
rpoints[team].push_back (R);
for (int i=0; i<int(rpoints[team].size())-1; i++)
{
RPoint rp = rpoints[team][i];
float dist = R.P.distance_to_xz(rp.P)/2;
if (dist<rpoints_MinDist[team])
rpoints_MinDist[team] = dist;
dist = R.P.distance_to(rp.P)/2;
if (dist<rpoints_Dist[team])
rpoints_Dist[team] = dist;
};
}break;
case rptItemSpawn:
{
m_item_respawner.add_new_rpoint(rp_profile, R);
}
};
};
O->close();
}
FS.r_close (F);
}
if (!g_dedicated_server)
{
// loading scripts
ai().script_engine().remove_script_process(ScriptEngine::eScriptProcessorGame);
string_path S;
FS.update_path (S,"$game_config$","script.ltx");
CInifile *l_tpIniFile = xr_new<CInifile>(S);
R_ASSERT (l_tpIniFile);
if( l_tpIniFile->section_exist( type_name() ) )
if (l_tpIniFile->r_string(type_name(),"script"))
ai().script_engine().add_script_process(ScriptEngine::eScriptProcessorGame,xr_new<CScriptProcess>("game",l_tpIniFile->r_string(type_name(),"script")));
else
ai().script_engine().add_script_process(ScriptEngine::eScriptProcessorGame,xr_new<CScriptProcess>("game",""));
xr_delete (l_tpIniFile);
}
//---------------------------------------------------------------------
ConsoleCommands_Create();
//---------------------------------------------------------------------
// CCC_LoadCFG_custom* pTmp = xr_new<CCC_LoadCFG_custom>("sv_");
// pTmp->Execute (Console->ConfigFile);
// xr_delete (pTmp);
//---------------------------------------------------------------------
LPCSTR svcfg_ltx_name = "-svcfg ";
//.........这里部分代码省略.........
开发者ID:AntonioModer,项目名称:xray-16,代码行数:101,代码来源:game_sv_base.cpp
示例5: R_ASSERT
bool ESceneAIMapTool::LoadLTX(CInifile& ini)
{
R_ASSERT(0);
return true;
}
开发者ID:AntonioModer,项目名称:xray-16,代码行数:5,代码来源:ESceneAIMapTools.cpp
示例6: ALIAS
void xrCompressor::CompressOne(LPCSTR path)
{
filesTOTAL ++;
if (testSKIP(path))
{
filesSKIP ++;
printf (" - a SKIP");
Msg ("%-80s - SKIP",path);
return;
}
string_path fn;
strconcat (sizeof(fn), fn, target_name.c_str(), "\\", path);
if (::GetFileAttributes(fn)==u32(-1))
{
filesSKIP ++;
printf (" - CAN'T OPEN");
Msg ("%-80s - CAN'T OPEN",path);
return;
}
IReader* src = FS.r_open (fn);
if (0==src)
{
filesSKIP ++;
printf (" - CAN'T OPEN");
Msg ("%-80s - CAN'T OPEN",path);
return;
}
bytesSRC += src->length ();
u32 c_crc32 = crc32 (src->pointer(),src->length());
u32 c_ptr = 0;
u32 c_size_real = 0;
u32 c_size_compressed = 0;
u32 a_tests = 0;
ALIAS* A = testALIAS (src,c_crc32,a_tests);
printf ("%3da ",a_tests);
if(A)
{
filesALIAS ++;
printf ("ALIAS");
Msg ("%-80s - ALIAS (%s)",path,A->path);
// Alias found
c_ptr = A->c_ptr;
c_size_real = A->c_size_real;
c_size_compressed = A->c_size_compressed;
} else
{
if (testVFS(path))
{
filesVFS ++;
// Write into BaseFS
c_ptr = fs_pack_writer->tell ();
c_size_real = src->length();
c_size_compressed = src->length();
fs_pack_writer->w (src->pointer(),c_size_real);
printf ("VFS");
Msg ("%-80s - VFS",path);
} else
{ //if(testVFS(path))
// Compress into BaseFS
c_ptr = fs_pack_writer->tell();
c_size_real = src->length();
if (0!=c_size_real)
{
u32 c_size_max = rtc_csize (src->length());
u8* c_data = xr_alloc<u8> (c_size_max);
t_compress.Begin ();
c_size_compressed = c_size_max;
if (bFast)
{
R_ASSERT(LZO_E_OK == lzo1x_1_compress ((u8*)src->pointer(),c_size_real,c_data,&c_size_compressed,c_heap));
}else
{
R_ASSERT(LZO_E_OK == lzo1x_999_compress ((u8*)src->pointer(),c_size_real,c_data,&c_size_compressed,c_heap));
}
t_compress.End ();
if ((c_size_compressed+16) >= c_size_real)
{
// Failed to compress - revert to VFS
filesVFS ++;
c_size_compressed = c_size_real;
fs_pack_writer->w (src->pointer(),c_size_real);
printf ("VFS (R)");
Msg ("%-80s - VFS (R)",path);
} else
{
// Compressed OK - optimize
if (!bFast)
{
//.........这里部分代码省略.........
开发者ID:AntonioModer,项目名称:xray-16,代码行数:101,代码来源:xrCompress.cpp
示例7: if
void CRT::create (LPCSTR Name, u32 w, u32 h, D3DFORMAT f)
{
if (pSurface) return;
R_ASSERT (HW.pDevice && Name && Name[0] && w && h);
_order = CPU::GetCLK() ; //Device.GetTimerGlobal()->GetElapsed_clk();
HRESULT _hr;
dwWidth = w;
dwHeight = h;
fmt = f;
// Get caps
D3DCAPS9 caps;
R_CHK (HW.pDevice->GetDeviceCaps(&caps));
// Pow2
if (!btwIsPow2(w) || !btwIsPow2(h))
{
if (!HW.Caps.raster.bNonPow2) return;
}
// Check width-and-height of render target surface
if (w>caps.MaxTextureWidth) return;
if (h>caps.MaxTextureHeight) return;
// Select usage
u32 usage = 0;
if (D3DFMT_D24X8==fmt) usage = D3DUSAGE_DEPTHSTENCIL;
else if (D3DFMT_D24S8 ==fmt) usage = D3DUSAGE_DEPTHSTENCIL;
else if (D3DFMT_D15S1 ==fmt) usage = D3DUSAGE_DEPTHSTENCIL;
else if (D3DFMT_D16 ==fmt) usage = D3DUSAGE_DEPTHSTENCIL;
else if (D3DFMT_D16_LOCKABLE==fmt) usage = D3DUSAGE_DEPTHSTENCIL;
else if ((D3DFORMAT)MAKEFOURCC('D','F','2','4') == fmt) usage = D3DUSAGE_DEPTHSTENCIL;
else usage = D3DUSAGE_RENDERTARGET;
// Validate render-target usage
_hr = HW.pD3D->CheckDeviceFormat(
HW.DevAdapter,
HW.DevT,
HW.Caps.fTarget,
usage,
D3DRTYPE_TEXTURE,
f
);
if (FAILED(_hr)) return;
// Try to create texture/surface
Device.Resources->Evict ();
_hr = HW.pDevice->CreateTexture (w, h, 1, usage, f, D3DPOOL_DEFAULT, &pSurface,NULL);
if (FAILED(_hr) || (0==pSurface)) return;
// OK
#ifdef DEBUG
Msg ("* created RT(%s), %dx%d",Name,w,h);
#endif // DEBUG
R_CHK (pSurface->GetSurfaceLevel (0,&pRT));
pTexture = Device.Resources->_CreateTexture (Name);
pTexture->surface_set (pSurface);
}
开发者ID:NeoAnomaly,项目名称:xray,代码行数:61,代码来源:SH_RT.cpp
示例8: _strlwr
//-----------------------------------------------------------------------
BOOL motions_value::load (LPCSTR N, IReader *data, vecBones* bones)
{
m_id = N;
bool bRes = true;
// Load definitions
U16Vec rm_bones (bones->size(),BI_NONE);
IReader* MP = data->open_chunk(OGF_S_SMPARAMS);
if (MP)
{
u16 vers = MP->r_u16();
u16 part_bone_cnt = 0;
string128 buf;
R_ASSERT3 (vers<=xrOGF_SMParamsVersion,"Invalid OGF/OMF version:",N);
// partitions
u16 part_count;
part_count = MP->r_u16();
for (u16 part_i=0; part_i<part_count; part_i++)
{
CPartDef& PART = m_partition[part_i];
MP->r_stringZ (buf,sizeof(buf));
PART.Name = _strlwr(buf);
PART.bones.resize (MP->r_u16());
for (xr_vector<u32>::iterator b_it=PART.bones.begin(); b_it<PART.bones.end(); b_it++)
{
MP->r_stringZ (buf,sizeof(buf));
u16 m_idx = u16 (MP->r_u32());
*b_it = find_bone_id (bones,buf);
#ifdef _EDITOR
if (*b_it==BI_NONE )
{
bRes = false;
Msg ("! Can't find bone: '%s'", buf);
}
if (rm_bones.size() <= m_idx)
{
bRes = false;
Msg ("! Can't load: '%s' invalid bones count", N);
}
#else
VERIFY3 (*b_it!=BI_NONE,"Can't find bone:", buf);
#endif
if (bRes) rm_bones[m_idx] = u16(*b_it);
}
part_bone_cnt = u16(part_bone_cnt + (u16)PART.bones.size());
}
#ifdef _EDITOR
if (part_bone_cnt!=(u16)bones->size()){
bRes = false;
Msg("! Different bone count[%s] [Object: '%d' <-> Motions: '%d']", N, bones->size(),part_bone_cnt);
}
#else
VERIFY3(part_bone_cnt==(u16)bones->size(),"Different bone count '%s'",N);
#endif
if (bRes)
{
// motion defs (cycle&fx)
u16 mot_count = MP->r_u16();
m_mdefs.resize (mot_count);
for (u16 mot_i=0; mot_i<mot_count; mot_i++)
{
MP->r_stringZ (buf,sizeof(buf));
shared_str nm = _strlwr (buf);
u32 dwFlags = MP->r_u32 ();
CMotionDef& D = m_mdefs[mot_i];
D.Load (MP,dwFlags,vers);
//. m_mdefs.push_back (D);
if (dwFlags&esmFX)
m_fx.insert (mk_pair(nm,mot_i));
else
m_cycle.insert (mk_pair(nm,mot_i));
m_motion_map.insert (mk_pair(nm,mot_i));
}
}
MP->close();
}else
{
xrDebug::Fatal (DEBUG_INFO,"Old skinned model version unsupported! (%s)",N);
}
if (!bRes) return false;
// Load animation
IReader* MS = data->open_chunk(OGF_S_MOTIONS);
if (!MS) return false;
u32 dwCNT = 0;
MS->r_chunk_safe (0,&dwCNT,sizeof(dwCNT));
VERIFY (dwCNT<0x3FFF); // MotionID 2 bit - slot, 14 bit - motion index
//.........这里部分代码省略.........
开发者ID:2asoft,项目名称:xray,代码行数:101,代码来源:SkeletonMotions.cpp
示例9: R_ASSERT
void ESceneAIMapTool::BuildNodes(bool bFromSelectedOnly)
{
// begin
m_Nodes.reserve (1024*1024);
// Initialize hash
// hash_Initialize ();
R_ASSERT(!m_Nodes.empty());
// Estimate nodes
Fvector Pos,LevelSize;
m_AIBBox.getsize (LevelSize);
float estimated_nodes = (LevelSize.x/m_Params.fPatchSize)*(LevelSize.z/m_Params.fPatchSize);
SPBItem* pb = UI->ProgressStart(1, "Building nodes...");
// General cycle
for (int k=0; k<(int)m_Nodes.size(); k++){
SAINode* N = m_Nodes[k];
if (bFromSelectedOnly && !N->flags.is(SAINode::flSelected)) continue;
// left
if (0==N->n1){
Pos.set (N->Pos);
Pos.x -= m_Params.fPatchSize;
N->n1 = BuildNode(N->Pos,Pos,false);
}
// fwd
if (0==N->n2){
Pos.set (N->Pos);
Pos.z += m_Params.fPatchSize;
N->n2 = BuildNode(N->Pos,Pos,false);
}
// right
if (0==N->n3){
Pos.set (N->Pos);
Pos.x += m_Params.fPatchSize;
N->n3 = BuildNode(N->Pos,Pos,false);
}
// back
if (0==N->n4){
Pos.set (N->Pos);
Pos.z -= m_Params.fPatchSize;
N->n4 = BuildNode(N->Pos,Pos,false);
}
if (bFromSelectedOnly){
// select neighbour nodes
if (N->n1) N->n1->flags.set(SAINode::flSelected,TRUE);
if (N->n2) N->n2->flags.set(SAINode::flSelected,TRUE);
if (N->n3) N->n3->flags.set(SAINode::flSelected,TRUE);
if (N->n4) N->n4->flags.set(SAINode::flSelected,TRUE);
}
if (k%512==0) {
float p1 = float(k)/float(m_Nodes.size());
float p2 = float(m_Nodes.size())/estimated_nodes;
float p = 0.1f*p1+0.9f*p2;
clamp (p,0.f,1.f);
pb->Update(p);
// check need abort && redraw
if (k%32768==0) UI->RedrawScene(true);
if (UI->NeedAbort()) break;
}
}
UI->ProgressEnd(pb);
}
开发者ID:2asoft,项目名称:xray,代码行数:65,代码来源:ESceneAIMapTools_Generate.cpp
示例10: merge
void ESceneAIMapTool::SmoothNodes()
{
SPBItem* pb = UI->ProgressStart(m_Nodes.size(), "Smoothing nodes...");
AINodeVec smoothed; smoothed.reserve(m_Nodes.size());
U8Vec mark; mark.assign (m_Nodes.size(),0);
int sm_nodes=0;
EnumerateNodes ();
for (AINodeIt it=m_Nodes.begin(); it!=m_Nodes.end(); it++){
SAINode& N = **it;
Fvector P1,P2,P3,P4,P,REF;
int c;
if (N.flags.is(SAINode::flSelected)){
sm_nodes++;
// smooth point LF
{
bool bCorner = false;
c=1; N.PointLF(REF,m_Params.fPatchSize); P1.set(REF);
if (N.nLeft()) {
SAINode& L = *N.nLeft();
L.PointFR(P,m_Params.fPatchSize); merge(P1);
if (L.nForward()) {
bCorner = true;
SAINode& C = *L.nForward();
C.PointRB(P,m_Params.fPatchSize); merge(P1);
}
}
if (N.nForward()) {
SAINode& F = *N.nForward();
F.PointBL(P,m_Params.fPatchSize); merge(P1);
if ((!bCorner) && F.nLeft()) {
bCorner = true;
SAINode& C = *F.nLeft();
C.PointRB(P,m_Params.fPatchSize); merge(P1);
}
}
R_ASSERT(c<=4);
P1.div(float(c));
}
// smooth point FR
{
bool bCorner = false;
c=1; N.PointFR(REF,m_Params.fPatchSize); P2.set(REF);
if (N.nForward()) {
SAINode& F = *N.nForward();
F.PointRB(P,m_Params.fPatchSize); merge(P2);
if (F.nRight()) {
bCorner = true;
SAINode& C = *F.nRight();
C.PointBL(P,m_Params.fPatchSize); merge(P2);
}
}
if (N.nRight()) {
SAINode& R = *N.nRight();
R.PointLF(P,m_Params.fPatchSize); merge(P2);
if ((!bCorner) && R.nForward()) {
bCorner = true;
SAINode& C = *R.nForward();
C.PointBL(P,m_Params.fPatchSize); merge(P2);
}
}
R_ASSERT(c<=4);
P2.div(float(c));
}
// smooth point RB
{
bool bCorner = false;
c=1; N.PointRB(REF,m_Params.fPatchSize); P3.set(REF);
if (N.nRight()) {
SAINode& R = *N.nRight();
R.PointBL(P,m_Params.fPatchSize); merge(P3);
if (R.nBack()) {
bCorner = true;
SAINode& C = *R.nBack();
C.PointLF(P,m_Params.fPatchSize); merge(P3);
}
}
if (N.nBack()) {
SAINode& B = *N.nBack();
B.PointFR(P,m_Params.fPatchSize); merge(P3);
//.........这里部分代码省略.........
开发者ID:2asoft,项目名称:xray,代码行数:101,代码来源:ESceneAIMapTools_Generate.cpp
示例11: sizeof
void CKinematics::Load(const char* N, IReader *data, u32 dwFlags)
{
//Msg ("skeleton: %s",N);
inherited::Load (N, data, dwFlags);
pUserData = NULL;
m_lod = NULL;
// loading lods
IReader* LD = data->open_chunk(OGF_S_LODS);
if (LD)
{
string_path short_name;
strcpy_s (short_name,sizeof(short_name),N);
if (strext(short_name)) *strext(short_name)=0;
// From stream
{
string_path lod_name;
LD->r_string (lod_name, sizeof(lod_name));
//. strconcat (sizeof(name_load),name_load, short_name, ":lod:", lod_name.c_str());
m_lod = ::Render->model_CreateChild(lod_name, NULL);
VERIFY3(m_lod,"Cant create LOD model for", N);
//. VERIFY2 (m_lod->Type==MT_HIERRARHY || m_lod->Type==MT_PROGRESSIVE || m_lod->Type==MT_NORMAL,lod_name.c_str());
/*
strconcat (name_load, short_name, ":lod:1");
m_lod = ::Render->model_CreateChild(name_load,LD);
VERIFY (m_lod->Type==MT_SKELETON_GEOMDEF_PM || m_lod->Type==MT_SKELETON_GEOMDEF_ST);
*/
}
LD->close ();
}
#ifndef _EDITOR
// User data
IReader* UD = data->open_chunk(OGF_S_USERDATA);
pUserData = UD?xr_new<CInifile>(UD,FS.get_path("$game_config$")->m_Path):0;
if (UD) UD->close();
#endif
// Globals
bone_map_N = xr_new<accel> ();
bone_map_P = xr_new<accel> ();
bones = xr_new<vecBones> ();
bone_instances = NULL;
// Load bones
#pragma todo("container is created in stack!")
xr_vector<shared_str> L_parents;
R_ASSERT (data->find_chunk(OGF_S_BONE_NAMES));
visimask.zero ();
int dwCount = data->r_u32();
// Msg ("!!! %d bones",dwCount);
// if (dwCount >= 64) Msg ("!!! More than 64 bones is a crazy thing! (%d), %s",dwCount,N);
VERIFY3 (dwCount < 64, "More than 64 bones is a crazy thing!",N);
for (; dwCount; dwCount--) {
string256 buf;
// Bone
u16 ID = u16(bones->size());
data->r_stringZ (buf,sizeof(buf)); strlwr(buf);
CBoneData* pBone = CreateBoneData(ID);
pBone->name = shared_str(buf);
pBone->child_faces.resize (children.size());
bones->push_back (pBone);
bone_map_N->push_back (mk_pair(pBone->name,ID));
bone_map_P->push_back (mk_pair(pBone->name,ID));
// It's parent
data->r_stringZ (buf,sizeof(buf)); strlwr(buf);
L_parents.push_back (buf);
data->r (&pBone->obb,sizeof(Fobb));
visimask.set (u64(1)<<ID,TRUE);
}
std::sort (bone_map_N->begin(),bone_map_N->end(),pred_sort_N);
std::sort (bone_map_P->begin(),bone_map_P->end(),pred_sort_P);
// Attach bones to their parents
iRoot = BI_NONE;
for (u32 i=0; i<bones->size(); i++) {
shared_str P = L_parents[i];
CBoneData* B = (*bones)[i];
if (!P||!P[0]) {
// no parent - this is root bone
R_ASSERT (BI_NONE==iRoot);
iRoot = u16(i);
B->SetParentID(BI_NONE);
continue;
} else {
u16 ID = LL_BoneID(P);
R_ASSERT (ID!=BI_NONE);
(*bones)[ID]->children.push_back(B);
B->SetParentID(ID);
}
}
R_ASSERT (BI_NONE != iRoot);
//.........这里部分代码省略.........
开发者ID:NeoAnomaly,项目名称:xray,代码行数:101,代码来源:SkeletonCustom.cpp
示例12: TRY
void xrMU_Reference::export_ogf()
{
xr_vector<u32> generated_ids;
// Export nodes
{
for (xrMU_Model::v_subdivs_it it=model->m_subdivs.begin(); it!=model->m_subdivs.end(); it++)
{
OGF_Reference* pOGF = xr_new<OGF_Reference> ();
b_material* M = &(pBuild->materials[it->material]); // and it's material
R_ASSERT (M);
// Common data
pOGF->Sector = sector;
pOGF->material = it->material;
// Collect textures
OGF_Texture T;
TRY(T.name = pBuild->textures[M->surfidx].name);
TRY(T.pSurface = &(pBuild->textures[M->surfidx]));
TRY(pOGF->textures.push_back(T));
// Special
pOGF->model = it->ogf;
pOGF->vb_id = it->vb_id;
pOGF->vb_start = it->vb_start;
pOGF->ib_id = it->ib_id;
pOGF->ib_start = it->ib_start;
pOGF->xform.set (xform);
pOGF->c_scale = c_scale;
pOGF->c_bias = c_bias;
pOGF->sw_id = it->sw_id;
pOGF->CalcBounds ();
generated_ids.push_back ((u32)g_tree.size());
g_tree.push_back (pOGF);
}
}
// Now, let's fuck with LODs
if (u16(-1) == model->m_lod_ID) return;
{
// Create Node and fill it with information
b_lod& LOD = pBuild->lods [model->m_lod_ID];
OGF_LOD* pNode = xr_new<OGF_LOD> (1,sector);
pNode->lod_Material = LOD.dwMaterial;
for (int lf=0; lf<8; lf++)
{
b_lod_face& F = LOD.faces[lf];
OGF_LOD::_face& D = pNode->lod_faces[lf];
for (int lv=0; lv<4; lv++)
{
xform.transform_tiny(D.v[lv].v,F.v[lv]);
D.v[lv].t = F.t[lv];
D.v[lv].c_rgb_hemi = 0xffffffff;
D.v[lv].c_sun = 0xff;
}
}
// Add all 'OGFs' with such LOD-id
for (u32 o=0; o<generated_ids.size(); o++)
pNode->AddChield(generated_ids[o]);
// Register node
R_ASSERT (pNode->chields.size());
pNode->CalcBounds ();
g_tree.push_back (pNode);
// Calculate colors
const float sm_range = 5.f;
for (int lf=0; lf<8; lf++)
{
OGF_LOD::_face& F = pNode->lod_faces[lf];
for (int lv=0; lv<4; lv++)
{
Fvector ptPos = F.v[lv].v;
base_color_c _C;
float _N = 0;
for (u32 v_it=0; v_it<model->m_vertices.size(); v_it++)
{
// get base
Fvector baseP; xform.transform_tiny (baseP,model->m_vertices[v_it]->P);
base_color_c baseC; color[v_it]._get(baseC);
base_color_c vC;
float oD = ptPos.distance_to (baseP);
float oA = 1/(1+100*oD*oD);
vC = (baseC);
vC.mul (oA);
_C.add (vC);
_N += oA;
}
float s = 1/(_N+EPS);
_C.mul (s);
F.v[lv].c_rgb_hemi = color_rgba(u8_clr(_C.rgb.x),u8_clr(_C.rgb.y),u8_clr(_C.rgb.z),u8_clr(_C.hemi));
F.v[lv].c_sun = u8_clr (_C.sun);
}
//.........这里部分代码省略.........
开发者ID:OLR-xray,项目名称:OLR-3.0,代码行数:101,代码来源:xrMU_Model_export_OGF.cpp
示例13: Msg
void CStepManager::reload(LPCSTR section)
{
m_legs_count = pSettings->r_u8 (section, "LegsCount");
LPCSTR anim_section = pSettings->r_string (section, "step_params");
if (!pSettings->section_exist(anim_section))
{
#ifdef DEBUG
Msg( "! no step_params section for :%s section :s", m_object->cName().c_str(), section );
#endif
return;
}
VERIFY((m_legs_count>=MIN_LEGS_COUNT) && (m_legs_count<=MAX_LEGS_COUNT));
SStepParam param;
param.step[0].time = 0.1f; // avoid warning
LPCSTR anim_name, val;
string16 cur_elem;
IKinematicsAnimated *skeleton_animated = smart_cast<IKinematicsAnimated*>(m_object->Visual());
VERIFY3(skeleton_animated, "object is not animated", m_object->cNameVisual().c_str());
#ifdef DEBUG
if( debug_step_info_load )
Msg( "loading step_params for object :%s, visual: %s, section: %s, step_params section: %s ", m_object->cName().c_str(), m_object->cNameVisual().c_str(), section, anim_section );
#endif
for (u32 i=0; pSettings->r_line(anim_section,i,&anim_name,&val); ++i) {
_GetItem (val,0,cur_elem);
param.cycles = u8(atoi(cur_elem));
R_ASSERT(param.cycles >= 1);
for (u32 j=0;j<m_legs_count;j++) {
_GetItem (val,1+j*2, cur_elem); param.step[j].time = float(atof(cur_elem));
_GetItem (val,1+j*2+1, cur_elem); param.step[j].power = float(atof(cur_elem));
VERIFY (_valid(param.step[j].power));
}
MotionID motion_id = skeleton_animated->ID_Cycle_Safe(anim_name);
if (!motion_id)
{
#ifdef DEBUG
IKinematicsAnimated *KA = smart_cast<IKinematicsAnimated*>(m_object->Visual());
VERIFY( KA );
Msg( "! (CStepManager::reload) no anim :%s object:%s, visual: %s, step_params section: %s ", anim_name, m_object->cName().c_str(), m_object->cNameVisual().c_str(), anim_section );
#endif
continue;
}
#ifdef DEBUG
if( debug_step_info_load )
{
IKinematicsAnimated *KA = smart_cast<IKinematicsAnimated*>(m_object->Visual());
VERIFY( KA );
std::pair<LPCSTR,LPCSTR> anim_name = KA->LL_MotionDefName_dbg( motion_id );
Msg( "step_params loaded for object :%s, visual: %s, motion: %s, anim set: %s ", m_object->cName().c_str(), m_object->cNameVisual().c_str(), anim_name.first, anim_name.second );
}
#endif
m_steps_map.insert(mk_pair(motion_id, param));
}
#ifdef DEBUG
if( m_steps_map.empty() )
Msg( "! no steps info loaded for :%s, section :s, step_params section: %s ", m_object->cName().c_str(), section, anim_section );
#endif
// reload foot bones
for (u32 i = 0; i < MAX_LEGS_COUNT; i++) m_foot_bones[i] = BI_NONE;
reload_foot_bones ();
m_time_anim_started = 0;
m_blend = 0;
}
开发者ID:AntonioModer,项目名称:xray-16,代码行数:77,代码来源:step_manager.cpp
示例14: defined
Shader* CResourceManager::_cpp_Create (IBlender* B, LPCSTR s_shader, LPCSTR s_textures, LPCSTR s_constants, LPCSTR s_matrices)
{
CBlender_Compile C;
Shader S;
//.
// if (strstr(s_shader,"transparent")) __asm int 3;
// Access to template
C.BT = B;
C.bEditor = FALSE;
C.bDetail = FALSE;
#ifdef _EDITOR
if (!C.BT) { ELog.Msg(mtError,"Can't find shader '%s'",s_shader); return 0; }
C.bEditor = TRUE;
#endif
// Parse names
_ParseList (C.L_textures, s_textures );
_ParseList (C.L_constants, s_constants );
_ParseList (C.L_matrices, s_matrices );
// Compile element (LOD0 - HQ)
{
C.iElement = 0;
#if defined(DEBUG) && _SECURE_SCL
#pragma message("alpet: вылету здесь удивляться не стоит")
R_ASSERT(C.L_textures._Myfirst);
R_ASSERT(C.L_textures._Myproxy);
#endif
C.bDetail = m_textures_description.GetDetailTexture(C.L_textures[0],C.detail_texture,C.detail_scaler);
//. C.bDetail = _GetDetailTexture(*C.L_textures[0],C.detail_texture,C.detail_scaler);
ShaderElement E;
C._cpp_Compile (&E);
S.E[0] = _CreateElement (E);
}
// Compile element (LOD1)
{
C.iElement = 1;
//. C.bDetail = _GetDetailTexture(*C.L_textures[0],C.detail_texture,C.detail_scaler);
C.bDetail = m_textures_description.GetDetailTexture(C.L_textures[0],C.detail_texture,C.detail_scaler);
ShaderElement E;
C._cpp_Compile (&E);
S.E[1] = _CreateElement (E);
}
// Compile element
{
C.iElement = 2;
C.bDetail = FALSE;
ShaderElement E;
C._cpp_Compile (&E);
S.E[2] = _CreateElement (E);
}
// Compile element
{
C.iElement = 3;
C.bDetail = FALSE;
ShaderElement E;
C._cpp_Compile (&E);
S.E[3] = _CreateElement (E);
}
// Compile element
{
C.iElement = 4;
C.bDetail = TRUE; //.$$$ HACK :)
ShaderElement E;
C._cpp_Compile (&E);
S.E[4] = _CreateElement (E);
}
// Compile element
{
C.iElement = 5;
C.bDetail = FALSE;
ShaderElement E;
C._cpp_Compile (&E);
S.E[5] = _CreateElement (E);
}
// Search equal in shaders array
for (u32 it=0; it<v_shaders.size(); it++)
if (S.equal(v_shaders[it])) return v_shaders[it];
// Create _new_ entry
Shader* N = xr_new<Shader>(S);
N->dwFlags |= xr_resource_flagged::RF_REGISTERED;
v_shaders.push_back (N);
return N;
}
开发者ID:OLR-xray,项目名称:OLR-3.0,代码行数:93,代码来源:ResourceManager.cpp
示例15: R_ASSERT
void CUIStatsWnd::SelectItem(const u32 uItem)
{
R_ASSERT(static_cast<int>(uItem) < UIStatsList.GetItemsCount());
UIStatsList.SetFocusedItem(static_cast<signed int>(uItem));
}
开发者ID:2asoft,项目名称:xray,代码行数:5,代码来源:UIStatsWnd.cpp
示例16: CalcMotionSpeed
u32 attachable_hud_item::anim_play(const shared_str& anm_name_b, BOOL bMixIn, const CMotionDef*& md, u8& rnd_idx)
{
float speed = CalcMotionSpeed(anm_name_b);
R_ASSERT (strstr(anm_name_b.c_str(),"anm_")==anm_name_b.c_str());
string256 anim_name_r;
bool is_16x9 = UI().is_widescreen();
xr_sprintf (anim_name_r,"%s%s",anm_name_b.c_str(),((m_attach_place_idx==1)&&is_16x9)?"_16x9":"");
player_hud_motion* anm = m_hand_motions.find_motion(anim_name_r);
R_ASSERT2 (anm, make_string("model [%s] has no motion alias defined [%s]", m_sect_name.c_str(), anim_name_r).c_str());
R_ASSERT2 (anm->m_animations.size(), make_string("model [%s] has no motion defined in motion_alias [%s]", pSettings->r_string(m_sect_name, "item_visual"), anim_name_r).c_str());
rnd_idx = (u8)Random.randI(anm->m_animations.size()) ;
const motion_descr& M = anm->m_animations[ rnd_idx ];
u32 ret = g_player_hud->anim_play(m_attach_place_idx, M.mid, bMixIn, md, speed);
if(m_model->dcast_PKinematicsAnimated())
{
IKinematicsAnimated* ka = m_model->dcast_PKinematicsAnimated();
shared_str item_anm_name;
if(anm->m_base_name!=anm->m_additional_name)
item_anm_name = anm->m_additional_name;
else
item_anm_name = M.name;
MotionID M2 = ka->ID_Cycle_Safe(item_anm_name);
if(!M2.valid())
M2 = ka->ID_Cycle_Safe("idle");
else
if(bDebug)
Msg ("playing item animation [%s]",item_anm_name.c_str());
R_ASSERT3(M2.valid(),"model has no motion [idle] ", pSettings->r_string(m_sect_name, "item_visual"));
u16 root_id = m_model->LL_GetBoneRoot();
CBoneInstance& root_binst = m_model->LL_GetBoneInstance(root_id);
root_binst.set_callback_overwrite(TRUE);
root_binst.mTransform.identity ();
u16 pc = ka->partitions().count();
for(u16 pid=0; pid<pc; ++pid)
{
CBlend* B = ka->PlayCycle(pid, M2, bMixIn);
R_ASSERT (B);
B->speed *= speed;
}
m_model->CalculateBones_Invalidate ();
}
R_ASSERT2 (m_parent_hud_item, "parent hud item is NULL");
CPhysicItem& parent_object = m_parent_hud_item->object();
//R_ASSERT2 (parent_object, "object has no parent actor");
//CObject* parent_object = static_cast_checked<CObject*>(&m_parent_hud_item->object());
if (IsGameTypeSingle() && parent_object.H_Parent() == Level().CurrentControlEntity())
{
CActor* current_actor = static_cast_checked<CActor*>(Level().CurrentControlEntity());
VERIFY (current_actor);
CEffectorCam* ec = current_actor->Cameras().GetCamEffector(eCEWeaponAction);
if(NULL==ec)
{
string_path ce_path;
string_path anm_name;
strconcat (sizeof(anm_name),anm_name,"camera_effects\\weapon\\", M.name.c_str(),".anm");
if (FS.exist( ce_path, "$game_anims$", anm_name))
{
CAnimatorCamEffector* e = xr_new<CAnimatorCamEffector>();
e->SetType (eCEWeaponAction);
e->SetHudAffect (false);
e->SetCyclic (false);
e->Start (anm_name);
current_actor->Cameras().AddCamEffector(e);
}
}
}
return ret;
}
开发者ID:AntonioModer,项目名称:xray-16,代码行数:83,代码来源:player_hud.cpp
示例17: net_flags
void xrServer::Process_event (NET_Packet& P, ClientID sender)
{
# ifdef SLOW_VERIFY_ENTITIES
VERIFY (verify_entities());
# endif
u32 timestamp;
u16 type;
u16 destination;
u32 MODE = net_flags(TRUE,TRUE);
// correct timestamp with server-unique-time (note: direct message correction)
P.r_u32 (timestamp );
// read generic info
P.r_u16 (type );
P.r_u16 (destination);
CSE_Abstract* receiver = game->get_entity_from_eid (destination);
if (receiver)
{
R_ASSERT(receiver->owner);
receiver->OnEvent (P,type,timestamp,sender);
};
switch (type)
{
case GE_GAME_EVENT:
{
u16 game_event_type;
P.r_u16(game_event_type);
game->AddDelayedEvent(P,game_event_type,timestamp,sender);
}break;
case GE_INFO_TRANSFER:
case GE_WPN_STATE_CHANGE:
case GE_ZONE_STATE_CHANGE:
case GE_ACTOR_JUMPING:
case GEG_PLAYER_PLAY_HEADSHOT_PARTICLE:
case GEG_PLAYER_ATTACH_HOLDER:
case GEG_PLAYER_DETACH_HOLDER:
case GEG_PLAYER_ITEM2SLOT:
case GEG_PLAYER_ITEM2BELT:
case GEG_PLAYER_ITEM2RUCK:
case GE_GRENADE_EXPLODE:
{
SendBroadcast (BroadcastCID,P,MODE);
}break;
case GEG_PLAYER_ACTIVATEARTEFACT:
{
Process_event_activate (P,sender,timestamp,destination,P.r_u16(), true);
break;
};
case GE_INV_ACTION:
{
xrClientData* CL = ID_to_client(sender);
if (CL) CL->net_Ready = TRUE;
if (SV_Client) SendTo(SV_Client->ID, P, net_flags(TRUE, TRUE));
}break;
case GE_RESPAWN:
{
CSE_Abstract* E = receiver;
if (E)
{
R_ASSERT (E->s_flags.is(M_SPAWN_OBJECT_PHANTOM));
svs_respawn R;
R.timestamp = timestamp + E->RespawnTime*1000;
R.phantom = destination;
q_respawn.insert (R);
}
}
break;
case GE_TRADE_BUY:
case GE_OWNERSHIP_TAKE:
{
Process_event_ownership (P,sender,timestamp,destination);
VERIFY (verify_entities());
}break;
case GE_OWNERSHIP_TAKE_MP_FORCED:
{
Process_event_ownership (P,sender,timestamp,destination,TRUE);
VERIFY (verify_entities());
}break;
case GE_TRADE_SELL:
case GE_OWNERSHIP_REJECT:
case GE_LAUNCH_ROCKET:
{
Process_event_reject (P,sender,timestamp,destination,P.r_u16());
VERIFY (verify_entities());
}break;
case GE_DESTROY:
{
Process_event_destroy (P,sender,timestamp,destination, NULL);
VERIFY (verify_entities());
}
break;
case GE_TRANSFER_AMMO:
{
u16 id_entity;
//.........这里部分代码省略.........
开发者ID:2asoft,项目名称:xray,代码行数:101,代码来源:xrServer_process_event.cpp
|
请发表评论