|
|
|
/***
|
|
|
|
*
|
|
|
|
* Copyright (c) 1996-2002, Valve LLC. All rights reserved.
|
|
|
|
*
|
|
|
|
* This product contains software technology licensed from Id
|
|
|
|
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
|
|
|
|
* All Rights Reserved.
|
|
|
|
*
|
|
|
|
* Use, distribution, and modification of this source code and/or resulting
|
|
|
|
* object code is restricted to non-commercial enhancements to products from
|
|
|
|
* Valve LLC. All other use, distribution, or modification is prohibited
|
|
|
|
* without written permission from Valve LLC.
|
|
|
|
*
|
|
|
|
****/
|
|
|
|
|
|
|
|
#include "hud.h"
|
|
|
|
#include "cl_util.h"
|
|
|
|
#include "demo.h"
|
|
|
|
#include "demo_api.h"
|
|
|
|
|
|
|
|
// FIXME: There should be buffer helper functions to avoid all of the *(int *)& crap.
|
|
|
|
|
|
|
|
extern "C"
|
|
|
|
{
|
|
|
|
void DLLEXPORT Demo_ReadBuffer( int size, unsigned char *buffer );
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
=====================
|
|
|
|
Demo_WriteBuffer
|
|
|
|
|
|
|
|
Write some data to the demo stream
|
|
|
|
=====================
|
|
|
|
*/
|
|
|
|
void Demo_WriteBuffer( int type, int size, unsigned char *buffer )
|
|
|
|
{
|
|
|
|
int pos = 0;
|
|
|
|
unsigned char buf[32 * 1024];
|
|
|
|
*(int *)&buf[pos] = type;
|
|
|
|
pos += sizeof(int);
|
|
|
|
|
|
|
|
memcpy( &buf[pos], buffer, size );
|
|
|
|
|
|
|
|
// Write full buffer out
|
|
|
|
gEngfuncs.pDemoAPI->WriteBuffer( size + sizeof(int), buf );
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
=====================
|
|
|
|
Demo_ReadBuffer
|
|
|
|
|
|
|
|
Engine wants us to parse some data from the demo stream
|
|
|
|
=====================
|
|
|
|
*/
|
|
|
|
void DLLEXPORT Demo_ReadBuffer( int size, unsigned char *buffer )
|
|
|
|
{
|
|
|
|
int type;
|
|
|
|
|
|
|
|
type = *(int *)buffer;
|
|
|
|
switch( type )
|
|
|
|
{
|
|
|
|
case TYPE_USER:
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
gEngfuncs.Con_DPrintf( "Unknown demo buffer type, skipping.\n" );
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|