Ejemplo n.º 1
0
    /**
     \brief virtual function to load node to KeyedArchive
     */
void LodNode::Load(KeyedArchive * archive, SceneFileV2 * sceneFile)
{
    Entity::Load(archive, sceneFile);

    int32 lodCount = archive->GetInt32("lodCount", 0);
    
    for (int32 lodIdx = 0; lodIdx < lodCount; ++lodIdx)
    {
        int32 layer = archive->GetInt32(Format("lod%d_layer", lodIdx), 0);
        size_t size = archive->GetInt32(Format("lod%d_cnt", lodIdx), 0);    //TODO: why size_t? int32?
		if (size > 0)
		{
			for (size_t idx = 0; idx < size; ++idx)
			{
				int32 index  = archive->GetInt32(Format("l%d_%d_ni", lodIdx, idx), 0);
				RegisterIndexInLayer(index, layer);
			}
		}
		else
		{
			RegisterIndexInLayer(-1, layer);
		}
        
        float32 distance = archive->GetFloat(Format("lod%d_dist", lodIdx), GetDefaultDistance(lodIdx));
        if(INVALID_DISTANCE == distance)
        {   // TemporaryFix. Remove it after all objects would be fixed.
            distance = GetDefaultDistance(lodIdx);
        }
        SetLodLayerDistance(lodIdx, distance);
    }
}
Ejemplo n.º 2
0
LodNode::LodNode()
:	Entity()
,   currentLod(NULL)
,   lastLodUpdateFrame(0)
,   forceLodLayer(INVALID_LOD_LAYER)
,   forceDistance(INVALID_DISTANCE)
,   forceDistanceSq(INVALID_DISTANCE)
    
{
    for(int32 iLayer = 0; iLayer < MAX_LOD_LAYERS; ++iLayer)
    {
        SetLodLayerDistance(iLayer, GetDefaultDistance(iLayer));
    }

//    lodLayersArray[0].SetDistance(0.0f);
    lodLayersArray[0].SetNearDistance(0.0f);
}