Example #1
0
void CBeam::OnReadFromStream (SLoadCtx &Ctx)

//	OnReadFromStream
//
//	Read object data from a stream
//
//	CString		CWeaponFireDesc UNID
//	DWORD		m_iBonus
//	DWORD		m_iCause
//	DWORD		m_iRotation
//	Vector		m_vPaintTo
//	DWORD		m_iTick
//	DWORD		m_iLifeLeft
//	DWORD		m_Source (CSpaceObject Ref)
//	DWORD		m_pSovereign (UNID)
//	DWORD		m_pHit (CSpaceObject Ref)
//	DWORD		m_iHitDir

{
    DWORD dwLoad;

#ifdef DEBUG_LOAD
    ::OutputDebugString("CBeam::OnReadFromStream\n");
#endif
    //	Load descriptor

    CString sDescUNID;
    sDescUNID.ReadFromStream(Ctx.pStream);
    m_pDesc = g_pUniverse->FindWeaponFireDesc(sDescUNID);

    Ctx.pStream->Read((char *)&m_iBonus, sizeof(DWORD));
    if (Ctx.dwVersion >= 18)
    {
        Ctx.pStream->Read((char *)&dwLoad, sizeof(DWORD));
        m_iCause = (DestructionTypes)dwLoad;
    }
    else
        m_iCause = killedByDamage;

    Ctx.pStream->Read((char *)&m_iRotation, sizeof(DWORD));
    Ctx.pStream->Read((char *)&m_vPaintTo, sizeof(CVector));
    Ctx.pStream->Read((char *)&m_iTick, sizeof(DWORD));
    Ctx.pStream->Read((char *)&m_iLifeLeft, sizeof(m_iLifeLeft));
    m_Source.ReadFromStream(Ctx);
    CSystem::ReadSovereignRefFromStream(Ctx, &m_pSovereign);
    CSystem::ReadObjRefFromStream(Ctx, &m_pHit);
    Ctx.pStream->Read((char *)&m_iHitDir, sizeof(DWORD));

    ComputeOffsets();
}
void CProceduralWeaponAnimation::Update(float deltaTime)
{
	UpdateDebugState();
	ComputeOffsets(deltaTime);
	ResetCustomOffset();
}