Delete needless unittests
|
@ -1,25 +0,0 @@
|
|||
#!perl
|
||||
|
||||
use File::Find;
|
||||
use Win32::API;
|
||||
|
||||
find(\&ProcessFile, "../../../game/bin/" );
|
||||
|
||||
sub ProcessFile
|
||||
{
|
||||
return if (/360/);
|
||||
return unless( /\.dll$/i );
|
||||
my $LoadLibrary = Win32::API->new( "kernel32", "LoadLibrary","P","L" );
|
||||
my $GetProcAddress = Win32::API->new( "kernel32", "GetProcAddress","LP","L" );
|
||||
my $FreeLibrary = Win32::API->new( "kernel32", "FreeLibrary", "P", "V" );
|
||||
my $handle=$LoadLibrary->Call($_);
|
||||
if ( $handle )
|
||||
{
|
||||
my $proc = $GetProcAddress->Call($handle, "BuiltDebug\0");
|
||||
if ( $proc )
|
||||
{
|
||||
print "Error $_ is built debug\n";
|
||||
}
|
||||
$FreeLibrary->Call( $handle );
|
||||
}
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
#!perl
|
||||
|
||||
open(DLL,"../../../game/bin/shaderapidx9.dll" ) || die "can't open shaderapi";
|
||||
|
||||
binmode DLL;
|
||||
my $dllcode = do { local( $/ ) ; <DLL> } ; # slurp comparison output in
|
||||
close DLL;
|
||||
|
||||
if ( $dllcode =~ /dynamic_shader_compile_is_on/s )
|
||||
{
|
||||
open(ERRORS,">errors.txt") || die "huh - can't write";
|
||||
print ERRORS "stdshader_dx9.dll was built with dynamic shader compile!\n";
|
||||
close ERRORS;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 4 MiB |
|
@ -1,16 +0,0 @@
|
|||
// this config file defines all unit tests which are run by running a program and comparing its output to reference output
|
||||
// which is checked in in the directory src/unittests/autotestscripts/reference_output
|
||||
|
||||
// the format of entries is TESTNAME,OUTPUTFILE,COMMAND-LINE-TO-EXECUTE
|
||||
// if the OUTPUTFILE part is blank, it assumes the test is meant to compare the output of stdio
|
||||
|
||||
file_size_monitor,,perl subtests/file_size_monitor.pl
|
||||
testprocess,,..\testprocess\testprocess -message "testprocess autotest1"
|
||||
vtex,gwolf.vtf,vtex -outdir . -nopause -nop4 -crcforce datafiles\gwolf.tga
|
||||
rt_test,,..\rt_test\rt_test ..\rt_test\gwolf.tga test 1024 1024
|
||||
// mathlib_test,,..\mathlib_test\mathlib_test
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
Running file size monitor
|
||||
PC shader size := 291934326
|
||||
PC Game Bin DLL size := 108442741
|
||||
360 shader size := 0
|
||||
360 Game Bin DLL size := 0
|
||||
tf texture size := 1396651036
|
|
@ -1,3 +0,0 @@
|
|||
right spherical triangle projected percentage=0.1250
|
||||
small spherical triangle projected percentage=0.00156
|
||||
sum of areas of cubemap cells = 1.00
|
|
@ -1,6 +0,0 @@
|
|||
reading src texture
|
||||
n triangles 1567238
|
||||
Creating kd-tree
|
||||
kd built time := 79
|
||||
Rendering
|
||||
pixels traced and lit per second := 1559694.998968
|
|
@ -1 +0,0 @@
|
|||
testprocess autotest1
|
|
@ -1,181 +0,0 @@
|
|||
#!perl
|
||||
|
||||
# read stdio_test_list.cfg and perform all tests
|
||||
|
||||
$create_refs=0;
|
||||
$subset_string=shift;
|
||||
|
||||
@months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
|
||||
@weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
|
||||
($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime();
|
||||
$year = 1900 + $yearOffset;
|
||||
$dstamp = "$weekDays[$dayOfWeek] $months[$month] $dayOfMonth $year".sprintf(" %02d:%02d:%02d", $hour,$minute,$second);
|
||||
$changelist_counter=`p4 counter main_changelist`; # grab value of p4 counter
|
||||
|
||||
$dstamp.=" $changelist_counter";
|
||||
$dstamp=~ s/[\n\r]//g;
|
||||
|
||||
$computername=$ENV{'COMPUTERNAME'};
|
||||
|
||||
|
||||
# first, set our priority to high and affinity to 1 to try to get more repeatable benchmark results
|
||||
#my $pid = $$;
|
||||
|
||||
#my $cmd="datafiles\\process.exe -p $pid High";
|
||||
#print STDERR `$cmd`;
|
||||
#$cmd="datafiles\\process.exe -a $pid 01";
|
||||
#print STDERR `$cmd`;
|
||||
|
||||
if ( open(CFGFILE, "filecompare_tests.cfg") )
|
||||
{
|
||||
while(<CFGFILE>)
|
||||
{
|
||||
s/[\n\r]//g;
|
||||
s@//.*$@@; # kill comments
|
||||
if (/^([^,]*),([^,]*),(.*$)/)
|
||||
{
|
||||
$testname=$1;
|
||||
$testfile=$2;
|
||||
$testcommand=$3;
|
||||
|
||||
next if ( length($subset_string) && ( ! ( $testname=~/$subset_string/i) ) );
|
||||
|
||||
$ext=".txt";
|
||||
if ( length($testfile ) )
|
||||
{
|
||||
$ext="";
|
||||
$ext = $1 if ( $testfile=~/(\..*)$/ ); # copy extension
|
||||
unlink $testfile if ( -e $testfile); # kill it if it exists
|
||||
}
|
||||
|
||||
print STDOUT "running $testname : $testcommand ($testfile)\n";
|
||||
# suck the reference output in. use binary mode unless stdio
|
||||
$refname="reference_output/$testname$ext";
|
||||
|
||||
# run the test
|
||||
my $stime=time;
|
||||
$output=`$testcommand`;
|
||||
$stime=time-$stime;
|
||||
|
||||
if ( open(REF,$refname))
|
||||
{
|
||||
if ( length($testfile ))
|
||||
{
|
||||
binmode REF;
|
||||
}
|
||||
$ref_output= do { local( $/ ) ; <REF> } ; # slurp comparison output in
|
||||
close REF;
|
||||
|
||||
if ( length( $testfile ) )
|
||||
{
|
||||
print STDERR $output;
|
||||
# file case
|
||||
if ( open(TESTFILE, $testfile ))
|
||||
{
|
||||
binmode TESTFILE;
|
||||
$new_output= do { local( $/ ) ; <TESTFILE> } ; # slurp comparison output in
|
||||
close TESTFILE;
|
||||
if ($new_output ne $ref_output )
|
||||
{
|
||||
$errout.="ERROR: test $testname ($testcommand) : test produced file $testfile (length=".
|
||||
length($new_output).") but it doesn't match the reference (length=".length($ref_output).")\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
&UpdateMetrics( $testname, $output, $stime );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errout.="ERROR: test $testname ($testcommand) : test was supposed to create $testfile, but didn't.\n";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
# strip metrics (like timing) for comparison
|
||||
my $massaged_ref = $ref_output;
|
||||
my $massaged_output = $output;
|
||||
$massaged_ref =~ s/:=\s*[0-9\.]+//g;
|
||||
$massaged_output =~ s/:=\s*[0-9\.]+//g;
|
||||
if ($massaged_output ne $massaged_ref )
|
||||
{
|
||||
# print STDERR "o=$massaged_output r=$massaged_ref\n";
|
||||
$errout.="ERROR: test $testname ($testcommand) : output does not match reference output.\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
&UpdateMetrics( $testname, $output, $stime );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errout.="ERROR: Can't open reference $refname for $testname\n";
|
||||
if ($create_refs)
|
||||
{
|
||||
if ( length($testfile ) )
|
||||
{
|
||||
if ( -e $testfile )
|
||||
{
|
||||
$oname=$refname;
|
||||
$oname=~s@/@\\@g;
|
||||
print STDERR "copy $testfile $oname";
|
||||
print STDERR `copy $testfile $oname`;
|
||||
print STDERR `p4 add $oname`;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( open(REFOUT,">$refname") )
|
||||
{
|
||||
print REFOUT $output;
|
||||
}
|
||||
close REFOUT;
|
||||
print STDERR `p4 add $refname`;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errout.="Can't open stdio_test_list.cfg\n";
|
||||
}
|
||||
|
||||
if (length($errout))
|
||||
{
|
||||
print STDERR "There were errors: $errout";
|
||||
open(ERRORS,">errors.txt") || die "huh - can't write";
|
||||
print ERRORS $errout;
|
||||
close ERRORS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
sub UpdateMetrics
|
||||
{
|
||||
return unless length($computername);
|
||||
local( $tname, $output, $runtime) = @_;
|
||||
$output .= "\ntest runtime := $runtime\n";
|
||||
foreach $_ ( split(/\n/,$output))
|
||||
{
|
||||
if (/^(.+):=(.*$)/)
|
||||
{
|
||||
my $varname=$1;
|
||||
my $etime=$2;
|
||||
$varname=~s@^\s*@@g;
|
||||
$varname=~s@\s*$@@g;
|
||||
mkdir "\\\\fileserver\\user\\perf\\$computername";
|
||||
mkdir "\\\\fileserver\\user\\perf\\$computername\\$tname";
|
||||
if ( open(COUT,">>\\\\fileserver\\user\\perf\\$computername\\$tname\\$varname.csv") )
|
||||
{
|
||||
print COUT "\"$dstamp\",$etime\n";
|
||||
close COUT;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
#!perl
|
||||
|
||||
use File::Find;
|
||||
|
||||
# customize here
|
||||
print "Running file size monitor\n";
|
||||
|
||||
LogDirectorySize("PC shader size", "../../../game/hl2/shaders","\.vcs","\.360\.vcs");
|
||||
LogDirectorySize("PC Game Bin DLL size", "../../../game/bin/","\.dll","_360\.dll");
|
||||
LogDirectorySize("360 shader size", "../../../game/hl2/shaders","\.360\.vcs");
|
||||
LogDirectorySize("360 Game Bin DLL size", "../../../game/bin/","_360\.dll");
|
||||
LogDirectorySize("tf texture size","../../../game/tf/materials/","\.vtf");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub LogDirectorySize
|
||||
{
|
||||
my ($label, $basedir, $filepattern, $excludepattern ) = @_;
|
||||
undef @FileList;
|
||||
find(\&ProcessFile, $basedir);
|
||||
my $total_size = 0;
|
||||
foreach $_ (@FileList)
|
||||
{
|
||||
next if ( length($excludepattern) && ( /$excludepattern/i ) );
|
||||
if (/$filepattern/i)
|
||||
{
|
||||
$total_size += (-s $_ );
|
||||
}
|
||||
}
|
||||
print "$label := $total_size\n";
|
||||
}
|
||||
|
||||
sub ProcessFile
|
||||
{
|
||||
push @FileList, $File::Find::name;
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
#! perl
|
||||
$errfname="//fileserver/user/cgreen/force_an_error.txt";
|
||||
|
||||
if (-e $errfname )
|
||||
{
|
||||
unlink $errfname;
|
||||
open(ERROUT,">errors.txt") || die "huh - can't write";
|
||||
{
|
||||
print ERROUT "This is not an error - its just a test of the error script system.\n";
|
||||
close ERROUT;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
use Cwd;
|
||||
|
||||
my $dir = getcwd;
|
||||
|
||||
chdir "../../materialsystem/stdshaders";
|
||||
|
||||
@output = `perl ..\\..\\devtools\\bin\\checkshaderchecksums.pl stdshader_dx9_20b.txt`;
|
||||
foreach $_ (@output)
|
||||
{
|
||||
$output.=$_ unless(/appchooser360/i);
|
||||
}
|
||||
|
||||
@output = `perl ..\\..\\devtools\\bin\\checkshaderchecksums.pl stdshader_dx9_30.txt`;
|
||||
foreach $_ (@output)
|
||||
{
|
||||
$output.=$_ unless(/appchooser360/i);
|
||||
}
|
||||
|
||||
my $errors;
|
||||
|
||||
foreach $_ (@output )
|
||||
{
|
||||
$errors.=$_ unless (/appchooser360movie/);
|
||||
}
|
||||
|
||||
chdir $dir;
|
||||
|
||||
print $errors;
|
||||
|
||||
if( length( $errors ) > 0 )
|
||||
{
|
||||
print "writing errors.txt\n";
|
||||
open FP, ">errors.txt";
|
||||
print FP "$errors";
|
||||
close FP;
|
||||
}
|
|
@ -1,69 +0,0 @@
|
|||
#! perl
|
||||
|
||||
|
||||
use File::Find;
|
||||
use Cwd;
|
||||
use File::Basename;
|
||||
|
||||
# find(\&Visitfile,"../../../content/tf");
|
||||
|
||||
foreach $_ ( @sheetfiles )
|
||||
{
|
||||
$dest_sheet_name=$_;
|
||||
$dest_sheet_name =~ s/\.mks/.sht/i;
|
||||
$dest_sheet_name =~ s@/content/([^/]+)/materialsrc/@/game/\1/materials/@gi;
|
||||
print "**Checking $_\n";
|
||||
if (! -e $dest_sheet_name )
|
||||
{
|
||||
push @errors,"sheet $_ exists but not $dest_sheet_name";
|
||||
}
|
||||
else
|
||||
{
|
||||
# buid it and make sure they match
|
||||
$cmd="cd ".dirname($_)." & mksheet ".basename($_)." test.sht";
|
||||
$cmd=~tr/\//\\/;
|
||||
$cmdout=`$cmd`;
|
||||
if ( open(NEWFILE, dirname($_)."/test.sht") )
|
||||
{
|
||||
binmode NEWFILE;
|
||||
open(OLDFILE, $dest_sheet_name ) || die "strange error - cant find $dest_sheet_name";
|
||||
binmode OLDFILE;
|
||||
{
|
||||
local( $/, *FH ) ;
|
||||
$old_data=<OLDFILE>;
|
||||
$new_data=<NEWFILE>;
|
||||
if ( $new_data ne $old_data )
|
||||
{
|
||||
push @errors,"Sheet source file $_ does not compile to the same output as the checked in $dest_sheet_name";
|
||||
}
|
||||
close OLDFILE;
|
||||
close NEWFILE;
|
||||
unlink dirname($_)."/test.sht";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
push @errors, "Couldn't compile sheet $_ by running $cmd : \n$cmdout";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$errout=join("\n", @errors);
|
||||
print $errout;
|
||||
if (length($errout))
|
||||
{
|
||||
open(ERRFILE,">errors.txt") || die "can't write errors.txt";
|
||||
print ERRFILE $errout;
|
||||
close ERRFILE;
|
||||
}
|
||||
|
||||
|
||||
sub Visitfile
|
||||
{
|
||||
local($_)= $File::Find::name;
|
||||
s@\\@\/@g;
|
||||
if (m@content/(\S+)/.*\.mks$@i)
|
||||
{
|
||||
push @sheetfiles, $_;
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 2.3 MiB |
|
@ -1,36 +0,0 @@
|
|||
use Cwd;
|
||||
|
||||
my $dir = getcwd;
|
||||
|
||||
chdir "../../../game";
|
||||
|
||||
if( 1 )
|
||||
{
|
||||
system "rd /s /q ep2\\screenshots";
|
||||
system "mkdir ep2\\screenshots";
|
||||
@output = `hl2.exe -allowdebug -autoconfig -console -toconsole -dev -sw -width 1024 -game ep2 -testscript rendering_regression_test.vtest`;
|
||||
}
|
||||
|
||||
$keydir = "\\\\fileserver\\user\\rendering_regression_test";
|
||||
|
||||
open TESTSCRIPT, "<ep2/testscripts/rendering_regression_test.vtest" || die;
|
||||
foreach $line (<TESTSCRIPT>)
|
||||
{
|
||||
$line =~ s,//.*,,g; # remove comments
|
||||
if( $line =~ m/\s*screenshot\s+(.*)$/i )
|
||||
{
|
||||
push @screenshots, $1;
|
||||
}
|
||||
}
|
||||
close TESTSCRIPT;
|
||||
|
||||
foreach $screenshot (@screenshots)
|
||||
{
|
||||
$cmd = "tgamse $keydir\\$screenshot.tga ep2\\screenshots\\$screenshot.tga 0";
|
||||
$output = `$cmd`;
|
||||
if( $output =~ m/FAIL/ )
|
||||
{
|
||||
$cmd = "tgadiff $keydir\\$screenshot.tga ep2\\screenshots\\$screenshot.tga ep2\\screenshots\\$screenshot" . "_diff.tga";
|
||||
system $cmd;
|
||||
}
|
||||
}
|
|
@ -1,233 +0,0 @@
|
|||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// The copyright to the contents herein is the property of Valve, L.L.C.
|
||||
// The contents may be used and/or copied only with the written permission of
|
||||
// Valve, L.L.C., or in accordance with the terms and conditions stipulated in
|
||||
// the agreement/contract under which the contents have been supplied.
|
||||
//
|
||||
// $Header: $
|
||||
// $NoKeywords: $
|
||||
//
|
||||
// Material editor
|
||||
//=============================================================================
|
||||
#include <windows.h>
|
||||
#include "appframework/vguimatsysapp.h"
|
||||
#include "filesystem.h"
|
||||
#include "materialsystem/imaterialsystem.h"
|
||||
#include "materialsystem/imesh.h"
|
||||
#include "vgui/ISurface.h"
|
||||
#include "vgui/IVGui.h"
|
||||
#include "vgui_controls/controls.h"
|
||||
#include "VGuiMatSurface/IMatSystemSurface.h"
|
||||
#include "vgui/ILocalize.h"
|
||||
#include "vgui/IScheme.h"
|
||||
#include "avi/iavi.h"
|
||||
#include "avi/ibik.h"
|
||||
#include "tier3/tier3.h"
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// The application object
|
||||
//-----------------------------------------------------------------------------
|
||||
class CAVITestApp : public CVguiMatSysApp
|
||||
{
|
||||
typedef CVguiMatSysApp BaseClass;
|
||||
|
||||
public:
|
||||
// Methods of IApplication
|
||||
virtual bool Create();
|
||||
virtual bool PreInit( );
|
||||
virtual int Main();
|
||||
virtual void PostShutdown( );
|
||||
virtual const char *GetAppName() { return "AVITest"; }
|
||||
virtual bool AppUsesReadPixels() { return true; }
|
||||
|
||||
private:
|
||||
// Draws a quad
|
||||
void DrawStuff( AVIMaterial_t hMaterial );
|
||||
IMaterial *m_pMaterial;
|
||||
float m_flStartTime;
|
||||
};
|
||||
|
||||
DEFINE_WINDOWED_STEAM_APPLICATION_OBJECT( CAVITestApp );
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Create all singleton systems
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CAVITestApp::Create()
|
||||
{
|
||||
if ( !BaseClass::Create() )
|
||||
return false;
|
||||
|
||||
AppSystemInfo_t appSystems[] =
|
||||
{
|
||||
{ "valve_avi.dll", AVI_INTERFACE_VERSION },
|
||||
{ "valve_avi.dll", BIK_INTERFACE_VERSION },
|
||||
{ "", "" } // Required to terminate the list
|
||||
};
|
||||
|
||||
return AddSystems( appSystems );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// PreInit, PostShutdown
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CAVITestApp::PreInit( )
|
||||
{
|
||||
if ( !BaseClass::PreInit() )
|
||||
return false;
|
||||
|
||||
if ( !g_pFullFileSystem || !g_pMaterialSystem || !g_pVGui || !g_pVGuiSurface || !g_pAVI || !g_pBIK )
|
||||
return false;
|
||||
|
||||
g_pAVI->SetMainWindow( GetAppWindow() );
|
||||
return true;
|
||||
}
|
||||
|
||||
void CAVITestApp::PostShutdown( )
|
||||
{
|
||||
g_pAVI->SetMainWindow( NULL );
|
||||
BaseClass::PostShutdown();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Draws a quad
|
||||
//-----------------------------------------------------------------------------
|
||||
void CAVITestApp::DrawStuff( AVIMaterial_t hMaterial )
|
||||
{
|
||||
int iViewableWidth = GetWindowWidth();
|
||||
int iViewableHeight = GetWindowHeight();
|
||||
|
||||
g_pAVI->SetTime( hMaterial, Sys_FloatTime() - m_flStartTime );
|
||||
|
||||
float flMaxU, flMaxV;
|
||||
g_pAVI->GetTexCoordRange( hMaterial, &flMaxU, &flMaxV );
|
||||
IMaterial *pMaterial = g_pAVI->GetMaterial( hMaterial );
|
||||
|
||||
CMatRenderContextPtr pRenderContext( g_pMaterialSystem );
|
||||
|
||||
pRenderContext->MatrixMode( MATERIAL_PROJECTION );
|
||||
pRenderContext->LoadIdentity();
|
||||
pRenderContext->Ortho( 0, 0, iViewableWidth, iViewableHeight, 0, 1 );
|
||||
|
||||
pRenderContext->Bind( pMaterial );
|
||||
IMesh *pMesh = pRenderContext->GetDynamicMesh();
|
||||
CMeshBuilder meshBuilder;
|
||||
|
||||
meshBuilder.Begin( pMesh, MATERIAL_QUADS, 1 );
|
||||
|
||||
// Draw a polygon the size of the panel
|
||||
meshBuilder.Color4ub( 255, 255, 255, 255 );
|
||||
meshBuilder.Position3f( -0.5, iViewableHeight + 0.5, 0 );
|
||||
meshBuilder.TexCoord2f( 0, 0, 0 );
|
||||
meshBuilder.AdvanceVertex();
|
||||
|
||||
meshBuilder.Color4ub( 255, 255, 255, 255 );
|
||||
meshBuilder.Position3f( -0.5, 0.5, 0 );
|
||||
meshBuilder.TexCoord2f( 0, 0, flMaxV );
|
||||
meshBuilder.AdvanceVertex();
|
||||
|
||||
meshBuilder.Color4ub( 255, 255, 255, 255 );
|
||||
meshBuilder.Position3f( iViewableWidth - 0.5, 0.5, 0 );
|
||||
meshBuilder.TexCoord2f( 0, flMaxU, flMaxV );
|
||||
meshBuilder.AdvanceVertex();
|
||||
|
||||
meshBuilder.Color4ub( 255, 255, 255, 255 );
|
||||
meshBuilder.Position3f( iViewableWidth - 0.5, iViewableHeight + 0.5, 0 );
|
||||
meshBuilder.TexCoord2f( 0, flMaxU, 0 );
|
||||
meshBuilder.AdvanceVertex();
|
||||
|
||||
meshBuilder.End();
|
||||
pMesh->Draw();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// main application
|
||||
//-----------------------------------------------------------------------------
|
||||
int CAVITestApp::Main()
|
||||
{
|
||||
if (!SetVideoMode())
|
||||
return 0;
|
||||
|
||||
// load scheme
|
||||
if (!vgui::scheme()->LoadSchemeFromFile("resource/BoxRocket.res", "ElementViewer" ))
|
||||
{
|
||||
Assert( 0 );
|
||||
}
|
||||
|
||||
// load the boxrocket localization file
|
||||
g_pVGuiLocalize->AddFile( "resource/boxrocket_%language%.txt" );
|
||||
|
||||
// load the base localization file
|
||||
g_pVGuiLocalize->AddFile( "Resource/valve_%language%.txt" );
|
||||
g_pFullFileSystem->AddSearchPath("platform", "PLATFORM");
|
||||
g_pVGuiLocalize->AddFile( "Resource/vgui_%language%.txt");
|
||||
|
||||
// start vgui
|
||||
g_pVGui->Start();
|
||||
|
||||
// add our main window
|
||||
// vgui::Panel *mainPanel = CreateElementViewerPanel();
|
||||
|
||||
CMatRenderContextPtr pRenderContext( g_pMaterialSystem );
|
||||
AVIParams_t params;
|
||||
Q_strcpy( params.m_pFileName, "c:\\temp\\out.avi" );
|
||||
Q_strcpy( params.m_pPathID, "MOD" );
|
||||
pRenderContext->GetWindowSize( params.m_nWidth, params.m_nHeight );
|
||||
params.m_nFrameRate = 24;
|
||||
params.m_nFrameScale = 1;
|
||||
params.m_nNumChannels = 0;
|
||||
|
||||
AVIHandle_t h = g_pAVI->StartAVI( params );
|
||||
AVIMaterial_t hAVIMaterial = g_pAVI->CreateAVIMaterial( "avitest", "c:\\temp\\test.avi", "MOD" );
|
||||
|
||||
// run app frame loop
|
||||
vgui::VPANEL root = g_pVGuiSurface->GetEmbeddedPanel();
|
||||
g_pVGuiSurface->Invalidate( root );
|
||||
|
||||
int imagesize = params.m_nWidth * params.m_nHeight;
|
||||
BGR888_t *hp = new BGR888_t[ imagesize ];
|
||||
|
||||
m_flStartTime = Sys_FloatTime();
|
||||
m_pMaterial = g_pMaterialSystem->FindMaterial( "debug/debugempty", "app" );
|
||||
while ( g_pVGui->IsRunning() )
|
||||
{
|
||||
AppPumpMessages();
|
||||
|
||||
pRenderContext->ClearColor4ub( 76, 88, 68, 255 );
|
||||
pRenderContext->ClearBuffers( true, true );
|
||||
|
||||
DrawStuff( hAVIMaterial );
|
||||
|
||||
g_pVGui->RunFrame();
|
||||
|
||||
g_pVGuiSurface->PaintTraverse( root );
|
||||
|
||||
// Get Bits from material system
|
||||
Rect_t rect;
|
||||
rect.x = rect.y = 0;
|
||||
rect.width = params.m_nWidth;
|
||||
rect.height = params.m_nHeight;
|
||||
|
||||
pRenderContext->ReadPixelsAndStretch( &rect, &rect, (unsigned char*)hp,
|
||||
IMAGE_FORMAT_BGR888, rect.width * sizeof( BGR888_t ) );
|
||||
g_pAVI->AppendMovieFrame( h, hp );
|
||||
|
||||
g_pMaterialSystem->SwapBuffers();
|
||||
}
|
||||
|
||||
delete[] hp;
|
||||
g_pAVI->FinishAVI( h );
|
||||
g_pAVI->DestroyAVIMaterial( hAVIMaterial );
|
||||
|
||||
// delete mainPanel;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// AVITEST.VPC
|
||||
//
|
||||
// Project Script
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
$Macro SRCDIR "..\.."
|
||||
$Macro OUTBINDIR "$LIBPUBLIC"
|
||||
|
||||
$Include "$SRCDIR\vpc_scripts\source_exe_win_win32_base.vpc"
|
||||
|
||||
$Project "Avitest"
|
||||
{
|
||||
$Folder "Source Files"
|
||||
{
|
||||
$File "avitest.cpp"
|
||||
$File "$SRCDIR\public\vgui_controls\vgui_controls.cpp"
|
||||
}
|
||||
|
||||
$Folder "Link Libraries"
|
||||
{
|
||||
$DynamicFile "$SRCDIR\lib\public\appframework.lib"
|
||||
$DynamicFile "$SRCDIR\lib\public\tier2.lib"
|
||||
$DynamicFile "$SRCDIR\lib\public\tier3.lib"
|
||||
$DynamicFile "$SRCDIR\lib\public\vgui_controls.lib"
|
||||
}
|
||||
}
|
|
@ -1,250 +0,0 @@
|
|||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// The copyright to the contents herein is the property of Valve, L.L.C.
|
||||
// The contents may be used and/or copied only with the written permission of
|
||||
// Valve, L.L.C., or in accordance with the terms and conditions stipulated in
|
||||
// the agreement/contract under which the contents have been supplied.
|
||||
//
|
||||
// $Header: $
|
||||
// $NoKeywords: $
|
||||
//
|
||||
// Material editor
|
||||
//=============================================================================
|
||||
|
||||
#include <windows.h>
|
||||
#include "appframework/tier2app.h"
|
||||
#include "inputsystem/iinputsystem.h"
|
||||
#include "filesystem.h"
|
||||
#include "filesystem_init.h"
|
||||
#include "tier0/icommandline.h"
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Warning/Msg call back through this API
|
||||
// Input : type -
|
||||
// *pMsg -
|
||||
// Output : SpewRetval_t
|
||||
//-----------------------------------------------------------------------------
|
||||
SpewRetval_t SpewFunc( SpewType_t type, char const *pMsg )
|
||||
{
|
||||
OutputDebugString( pMsg );
|
||||
return SPEW_CONTINUE;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// The application object
|
||||
//-----------------------------------------------------------------------------
|
||||
class CInputTestApp : public CTier2SteamApp
|
||||
{
|
||||
typedef CTier2SteamApp BaseClass;
|
||||
|
||||
public:
|
||||
// Methods of IApplication
|
||||
virtual bool Create();
|
||||
virtual bool PreInit( );
|
||||
virtual int Main();
|
||||
virtual void PostShutdown( );
|
||||
virtual void Destroy();
|
||||
virtual const char *GetAppName() { return "InputTest"; }
|
||||
virtual bool AppUsesReadPixels() { return false; }
|
||||
|
||||
private:
|
||||
// Window management
|
||||
bool CreateAppWindow( char const *pTitle, bool bWindowed, int w, int h );
|
||||
|
||||
// Sets up the game path
|
||||
bool SetupSearchPaths();
|
||||
|
||||
HWND m_HWnd;
|
||||
};
|
||||
|
||||
DEFINE_WINDOWED_STEAM_APPLICATION_OBJECT( CInputTestApp );
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Create all singleton systems
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CInputTestApp::Create()
|
||||
{
|
||||
SpewOutputFunc( SpewFunc );
|
||||
|
||||
AppSystemInfo_t appSystems[] =
|
||||
{
|
||||
{ "inputsystem.dll", INPUTSYSTEM_INTERFACE_VERSION },
|
||||
{ "", "" } // Required to terminate the list
|
||||
};
|
||||
|
||||
if ( !AddSystems( appSystems ) )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void CInputTestApp::Destroy()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Window management
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CInputTestApp::CreateAppWindow( char const *pTitle, bool bWindowed, int w, int h )
|
||||
{
|
||||
WNDCLASSEX wc;
|
||||
memset( &wc, 0, sizeof( wc ) );
|
||||
wc.cbSize = sizeof( wc );
|
||||
wc.style = CS_OWNDC | CS_DBLCLKS;
|
||||
wc.lpfnWndProc = DefWindowProc;
|
||||
wc.hInstance = (HINSTANCE)GetAppInstance();
|
||||
wc.lpszClassName = "Valve001";
|
||||
wc.hIcon = NULL; //LoadIcon( s_HInstance, MAKEINTRESOURCE( IDI_LAUNCHER ) );
|
||||
wc.hIconSm = wc.hIcon;
|
||||
|
||||
RegisterClassEx( &wc );
|
||||
|
||||
// Note, it's hidden
|
||||
DWORD style = WS_POPUP | WS_CLIPSIBLINGS;
|
||||
|
||||
if ( bWindowed )
|
||||
{
|
||||
// Give it a frame
|
||||
style |= WS_OVERLAPPEDWINDOW;
|
||||
style &= ~WS_THICKFRAME;
|
||||
}
|
||||
|
||||
// Never a max box
|
||||
style &= ~WS_MAXIMIZEBOX;
|
||||
|
||||
RECT windowRect;
|
||||
windowRect.top = 0;
|
||||
windowRect.left = 0;
|
||||
windowRect.right = w;
|
||||
windowRect.bottom = h;
|
||||
|
||||
// Compute rect needed for that size client area based on window style
|
||||
AdjustWindowRectEx(&windowRect, style, FALSE, 0);
|
||||
|
||||
// Create the window
|
||||
m_HWnd = CreateWindow( wc.lpszClassName, pTitle, style, 0, 0,
|
||||
windowRect.right - windowRect.left, windowRect.bottom - windowRect.top,
|
||||
NULL, NULL, (HINSTANCE)GetAppInstance(), NULL );
|
||||
|
||||
if (!m_HWnd)
|
||||
return false;
|
||||
|
||||
int CenterX, CenterY;
|
||||
|
||||
CenterX = (GetSystemMetrics(SM_CXSCREEN) - w) / 2;
|
||||
CenterY = (GetSystemMetrics(SM_CYSCREEN) - h) / 2;
|
||||
CenterX = (CenterX < 0) ? 0: CenterX;
|
||||
CenterY = (CenterY < 0) ? 0: CenterY;
|
||||
|
||||
// In VCR modes, keep it in the upper left so mouse coordinates are always relative to the window.
|
||||
SetWindowPos (m_HWnd, NULL, CenterX, CenterY, 0, 0,
|
||||
SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW | SWP_DRAWFRAME);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Sets up the game path
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CInputTestApp::SetupSearchPaths()
|
||||
{
|
||||
if ( !BaseClass::SetupSearchPaths( NULL, false, true ) )
|
||||
return false;
|
||||
|
||||
g_pFullFileSystem->AddSearchPath( GetGameInfoPath(), "SKIN", PATH_ADD_TO_HEAD );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// PreInit, PostShutdown
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CInputTestApp::PreInit( )
|
||||
{
|
||||
if ( !BaseClass::PreInit() )
|
||||
return false;
|
||||
|
||||
if (!g_pFullFileSystem || !g_pInputSystem )
|
||||
return false;
|
||||
|
||||
// Add paths...
|
||||
if ( !SetupSearchPaths() )
|
||||
return false;
|
||||
|
||||
const char *pArg;
|
||||
int iWidth = 1024;
|
||||
int iHeight = 768;
|
||||
bool bWindowed = (CommandLine()->CheckParm( "-fullscreen" ) == NULL);
|
||||
if (CommandLine()->CheckParm( "-width", &pArg ))
|
||||
{
|
||||
iWidth = atoi( pArg );
|
||||
}
|
||||
if (CommandLine()->CheckParm( "-height", &pArg ))
|
||||
{
|
||||
iHeight = atoi( pArg );
|
||||
}
|
||||
|
||||
if (!CreateAppWindow( "InputTest", bWindowed, iWidth, iHeight ))
|
||||
return false;
|
||||
|
||||
g_pInputSystem->AttachToWindow( m_HWnd );
|
||||
return true;
|
||||
}
|
||||
|
||||
void CInputTestApp::PostShutdown( )
|
||||
{
|
||||
g_pInputSystem->DetachFromWindow( );
|
||||
BaseClass::PostShutdown();
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// main application
|
||||
//-----------------------------------------------------------------------------
|
||||
int CInputTestApp::Main()
|
||||
{
|
||||
while( true )
|
||||
{
|
||||
g_pInputSystem->PollInputState();
|
||||
|
||||
int nEventCount = g_pInputSystem->GetEventCount();
|
||||
const InputEvent_t* pEvents = g_pInputSystem->GetEventData( );
|
||||
for ( int i = 0; i < nEventCount; ++i )
|
||||
{
|
||||
const InputEvent_t* pEvent = &pEvents[i];
|
||||
switch( pEvent->m_nType )
|
||||
{
|
||||
case IE_ButtonPressed:
|
||||
Msg("Button Pressed Event %d : Start tick %d\n", pEvent->m_nData, pEvent->m_nTick );
|
||||
break;
|
||||
|
||||
case IE_ButtonReleased:
|
||||
Msg("Button Released Event %d : End tick %d Start tick %d\n", pEvent->m_nData, pEvent->m_nTick, g_pInputSystem->GetButtonPressedTick( (ButtonCode_t)pEvent->m_nData ) );
|
||||
break;
|
||||
|
||||
case IE_ButtonDoubleClicked:
|
||||
Msg("Button Double clicked Event %d : Start tick %d\n", pEvent->m_nData, pEvent->m_nTick );
|
||||
break;
|
||||
|
||||
case IE_AnalogValueChanged:
|
||||
Msg("Analog Value Changed %d : Start tick %d Value %d\n", pEvent->m_nData, pEvent->m_nTick, pEvent->m_nData2 );
|
||||
break;
|
||||
|
||||
case IE_Quit:
|
||||
Msg("Quit");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// INPUTTEST.VPC
|
||||
//
|
||||
// Project Script
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
$Macro SRCDIR "..\.."
|
||||
$Macro OUTBINDIR "$LIBPUBLIC"
|
||||
|
||||
$Include "$SRCDIR\vpc_scripts\source_exe_base.vpc"
|
||||
|
||||
$Project "Inputtest"
|
||||
{
|
||||
$Folder "Source Files"
|
||||
{
|
||||
$File "inputtest.cpp"
|
||||
}
|
||||
|
||||
$Folder "Link Libraries"
|
||||
{
|
||||
$Lib appframework
|
||||
$Lib tier2
|
||||
}
|
||||
}
|
|
@ -1,492 +0,0 @@
|
|||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// The copyright to the contents herein is the property of Valve, L.L.C.
|
||||
// The contents may be used and/or copied only with the written permission of
|
||||
// Valve, L.L.C., or in accordance with the terms and conditions stipulated in
|
||||
// the agreement/contract under which the contents have been supplied.
|
||||
//
|
||||
// $Header: $
|
||||
// $NoKeywords: $
|
||||
//
|
||||
// Material editor
|
||||
//=============================================================================
|
||||
|
||||
#include <windows.h>
|
||||
#include "appframework/tier2app.h"
|
||||
#include "materialsystem/materialsystem_config.h"
|
||||
#include "materialsystem/imaterialsystemhardwareconfig.h"
|
||||
#include "materialsystem/imaterialsystem.h"
|
||||
#include "materialsystem/MaterialSystemUtil.h"
|
||||
#include "vstdlib/random.h"
|
||||
#include "filesystem.h"
|
||||
#include "filesystem_init.h"
|
||||
#include "tier0/icommandline.h"
|
||||
#include "tier1/KeyValues.h"
|
||||
#include "tier1/utlbuffer.h"
|
||||
#include "materialsystem/imesh.h"
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Warning/Msg call back through this API
|
||||
// Input : type -
|
||||
// *pMsg -
|
||||
// Output : SpewRetval_t
|
||||
//-----------------------------------------------------------------------------
|
||||
SpewRetval_t SpewFunc( SpewType_t type, const char *pMsg )
|
||||
{
|
||||
if ( Plat_IsInDebugSession() )
|
||||
{
|
||||
OutputDebugString( pMsg );
|
||||
if ( type == SPEW_ASSERT )
|
||||
return SPEW_DEBUGGER;
|
||||
}
|
||||
return SPEW_CONTINUE;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// The application object
|
||||
//-----------------------------------------------------------------------------
|
||||
class CMaterialSystemTestApp : public CTier2SteamApp
|
||||
{
|
||||
typedef CTier2SteamApp BaseClass;
|
||||
|
||||
public:
|
||||
// Methods of IApplication
|
||||
virtual bool Create();
|
||||
virtual bool PreInit( );
|
||||
virtual int Main();
|
||||
virtual void PostShutdown( );
|
||||
virtual void Destroy();
|
||||
virtual const char *GetAppName() { return "MaterialSystemTest"; }
|
||||
virtual bool AppUsesReadPixels() { return false; }
|
||||
|
||||
private:
|
||||
// Window management
|
||||
bool CreateAppWindow( const char *pTitle, bool bWindowed, int w, int h );
|
||||
|
||||
// Sets up the game path
|
||||
bool SetupSearchPaths();
|
||||
|
||||
// Waits for a keypress
|
||||
bool WaitForKeypress();
|
||||
|
||||
// Sets the video mode
|
||||
bool SetMode();
|
||||
|
||||
// Tests dynamic buffers
|
||||
void TestDynamicBuffers( IMatRenderContext *pRenderContext, bool bBuffered );
|
||||
|
||||
// Creates, destroys a test material
|
||||
void CreateWireframeMaterial();
|
||||
void DestroyMaterial();
|
||||
|
||||
CMaterialReference m_pMaterial;
|
||||
|
||||
HWND m_HWnd;
|
||||
};
|
||||
|
||||
DEFINE_WINDOWED_STEAM_APPLICATION_OBJECT( CMaterialSystemTestApp );
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Create all singleton systems
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CMaterialSystemTestApp::Create()
|
||||
{
|
||||
SpewOutputFunc( SpewFunc );
|
||||
|
||||
AppSystemInfo_t appSystems[] =
|
||||
{
|
||||
{ "materialsystem.dll", MATERIAL_SYSTEM_INTERFACE_VERSION },
|
||||
|
||||
// Required to terminate the list
|
||||
{ "", "" }
|
||||
};
|
||||
|
||||
if ( !AddSystems( appSystems ) )
|
||||
return false;
|
||||
|
||||
IMaterialSystem *pMaterialSystem = (IMaterialSystem*)FindSystem( MATERIAL_SYSTEM_INTERFACE_VERSION );
|
||||
if ( !pMaterialSystem )
|
||||
{
|
||||
Warning( "CMaterialSystemTestApp::Create: Unable to connect to necessary interface!\n" );
|
||||
return false;
|
||||
}
|
||||
|
||||
bool bIsVistaOrHigher = false;
|
||||
|
||||
OSVERSIONINFO info;
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||
if ( GetVersionEx( &info ) )
|
||||
{
|
||||
bIsVistaOrHigher = info.dwMajorVersion >= 6;
|
||||
}
|
||||
|
||||
const char *pShaderDLL = CommandLine()->ParmValue( "-shaderdll" );
|
||||
if ( !pShaderDLL )
|
||||
{
|
||||
pShaderDLL = "shaderapidx10.dll";
|
||||
}
|
||||
|
||||
if ( !bIsVistaOrHigher && !Q_stricmp( pShaderDLL, "shaderapidx10.dll" ) )
|
||||
{
|
||||
pShaderDLL = "shaderapidx9.dll";
|
||||
}
|
||||
|
||||
pMaterialSystem->SetShaderAPI( pShaderDLL );
|
||||
return true;
|
||||
}
|
||||
|
||||
void CMaterialSystemTestApp::Destroy()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Window callback
|
||||
//-----------------------------------------------------------------------------
|
||||
static LRESULT CALLBACK MaterialSystemTestWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
switch( message )
|
||||
{
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage( 0 );
|
||||
break;
|
||||
|
||||
default:
|
||||
return DefWindowProc( hWnd, message, wParam, lParam );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Window management
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CMaterialSystemTestApp::CreateAppWindow( const char *pTitle, bool bWindowed, int w, int h )
|
||||
{
|
||||
WNDCLASSEX wc;
|
||||
memset( &wc, 0, sizeof( wc ) );
|
||||
wc.cbSize = sizeof( wc );
|
||||
wc.style = CS_OWNDC | CS_DBLCLKS;
|
||||
wc.lpfnWndProc = MaterialSystemTestWndProc;
|
||||
wc.hInstance = (HINSTANCE)GetAppInstance();
|
||||
wc.lpszClassName = "Valve001";
|
||||
wc.hIcon = NULL; //LoadIcon( s_HInstance, MAKEINTRESOURCE( IDI_LAUNCHER ) );
|
||||
wc.hIconSm = wc.hIcon;
|
||||
|
||||
RegisterClassEx( &wc );
|
||||
|
||||
// Note, it's hidden
|
||||
DWORD style = WS_POPUP | WS_CLIPSIBLINGS;
|
||||
|
||||
if ( bWindowed )
|
||||
{
|
||||
// Give it a frame
|
||||
style |= WS_OVERLAPPEDWINDOW;
|
||||
style &= ~WS_THICKFRAME;
|
||||
}
|
||||
|
||||
// Never a max box
|
||||
style &= ~WS_MAXIMIZEBOX;
|
||||
|
||||
RECT windowRect;
|
||||
windowRect.top = 0;
|
||||
windowRect.left = 0;
|
||||
windowRect.right = w;
|
||||
windowRect.bottom = h;
|
||||
|
||||
// Compute rect needed for that size client area based on window style
|
||||
AdjustWindowRectEx(&windowRect, style, FALSE, 0);
|
||||
|
||||
// Create the window
|
||||
m_HWnd = CreateWindow( wc.lpszClassName, pTitle, style, 0, 0,
|
||||
windowRect.right - windowRect.left, windowRect.bottom - windowRect.top,
|
||||
NULL, NULL, (HINSTANCE)GetAppInstance(), NULL );
|
||||
|
||||
if (!m_HWnd)
|
||||
return false;
|
||||
|
||||
int CenterX, CenterY;
|
||||
|
||||
CenterX = (GetSystemMetrics(SM_CXSCREEN) - w) / 2;
|
||||
CenterY = (GetSystemMetrics(SM_CYSCREEN) - h) / 2;
|
||||
CenterX = (CenterX < 0) ? 0: CenterX;
|
||||
CenterY = (CenterY < 0) ? 0: CenterY;
|
||||
|
||||
// In VCR modes, keep it in the upper left so mouse coordinates are always relative to the window.
|
||||
SetWindowPos (m_HWnd, NULL, CenterX, CenterY, 0, 0,
|
||||
SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW | SWP_DRAWFRAME);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Sets up the game path
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CMaterialSystemTestApp::SetupSearchPaths()
|
||||
{
|
||||
if ( !BaseClass::SetupSearchPaths( NULL, false, true ) )
|
||||
return false;
|
||||
|
||||
g_pFullFileSystem->AddSearchPath( GetGameInfoPath(), "SKIN", PATH_ADD_TO_HEAD );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// PreInit, PostShutdown
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CMaterialSystemTestApp::PreInit( )
|
||||
{
|
||||
if ( !BaseClass::PreInit() )
|
||||
return false;
|
||||
|
||||
if ( !g_pFullFileSystem || !g_pMaterialSystem )
|
||||
return false;
|
||||
|
||||
// Add paths...
|
||||
if ( !SetupSearchPaths() )
|
||||
return false;
|
||||
|
||||
const char *pArg;
|
||||
int iWidth = 1024;
|
||||
int iHeight = 768;
|
||||
bool bWindowed = (CommandLine()->CheckParm( "-fullscreen" ) == NULL);
|
||||
if (CommandLine()->CheckParm( "-width", &pArg ))
|
||||
{
|
||||
iWidth = atoi( pArg );
|
||||
}
|
||||
if (CommandLine()->CheckParm( "-height", &pArg ))
|
||||
{
|
||||
iHeight = atoi( pArg );
|
||||
}
|
||||
|
||||
if (!CreateAppWindow( "Press a Key To Continue", bWindowed, iWidth, iHeight ))
|
||||
return false;
|
||||
|
||||
// Get the adapter from the command line....
|
||||
const char *pAdapterString;
|
||||
int nAdapter = 0;
|
||||
if ( CommandLine()->CheckParm( "-adapter", &pAdapterString ) )
|
||||
{
|
||||
nAdapter = atoi( pAdapterString );
|
||||
}
|
||||
|
||||
int nAdapterFlags = 0;
|
||||
if ( AppUsesReadPixels() )
|
||||
{
|
||||
nAdapterFlags |= MATERIAL_INIT_ALLOCATE_FULLSCREEN_TEXTURE;
|
||||
}
|
||||
|
||||
g_pMaterialSystem->SetAdapter( nAdapter, nAdapterFlags );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void CMaterialSystemTestApp::PostShutdown( )
|
||||
{
|
||||
BaseClass::PostShutdown();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Waits for a keypress
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CMaterialSystemTestApp::WaitForKeypress()
|
||||
{
|
||||
MSG msg = {0};
|
||||
while( WM_QUIT != msg.message )
|
||||
{
|
||||
if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
|
||||
{
|
||||
TranslateMessage( &msg );
|
||||
DispatchMessage( &msg );
|
||||
}
|
||||
|
||||
if ( msg.message == WM_KEYDOWN )
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Sets the video mode
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CMaterialSystemTestApp::SetMode()
|
||||
{
|
||||
MaterialSystem_Config_t config;
|
||||
if ( CommandLine()->CheckParm( "-fullscreen" ) )
|
||||
{
|
||||
config.SetFlag( MATSYS_VIDCFG_FLAGS_WINDOWED, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
config.SetFlag( MATSYS_VIDCFG_FLAGS_WINDOWED, true );
|
||||
}
|
||||
|
||||
if ( CommandLine()->CheckParm( "-resizing" ) )
|
||||
{
|
||||
config.SetFlag( MATSYS_VIDCFG_FLAGS_RESIZING, true );
|
||||
}
|
||||
|
||||
if ( CommandLine()->CheckParm( "-mat_vsync" ) )
|
||||
{
|
||||
config.SetFlag( MATSYS_VIDCFG_FLAGS_NO_WAIT_FOR_VSYNC, false );
|
||||
}
|
||||
config.m_nAASamples = CommandLine()->ParmValue( "-mat_antialias", 1 );
|
||||
config.m_nAAQuality = CommandLine()->ParmValue( "-mat_aaquality", 0 );
|
||||
|
||||
config.m_VideoMode.m_Width = config.m_VideoMode.m_Height = 0;
|
||||
config.m_VideoMode.m_Format = IMAGE_FORMAT_BGRX8888;
|
||||
config.m_VideoMode.m_RefreshRate = 0;
|
||||
|
||||
bool modeSet = g_pMaterialSystem->SetMode( m_HWnd, config );
|
||||
if (!modeSet)
|
||||
{
|
||||
Error( "Unable to set mode\n" );
|
||||
return false;
|
||||
}
|
||||
|
||||
g_pMaterialSystem->OverrideConfig( config, false );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Creates, destroys a test material
|
||||
//-----------------------------------------------------------------------------
|
||||
void CMaterialSystemTestApp::CreateWireframeMaterial()
|
||||
{
|
||||
KeyValues *pVMTKeyValues = new KeyValues( "Wireframe" );
|
||||
pVMTKeyValues->SetInt( "$vertexcolor", 1 );
|
||||
pVMTKeyValues->SetInt( "$nocull", 1 );
|
||||
pVMTKeyValues->SetInt( "$ignorez", 1 );
|
||||
m_pMaterial.Init( "__test", pVMTKeyValues );
|
||||
}
|
||||
|
||||
void CMaterialSystemTestApp::DestroyMaterial()
|
||||
{
|
||||
m_pMaterial.Shutdown();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Tests dynamic buffers
|
||||
//-----------------------------------------------------------------------------
|
||||
void CMaterialSystemTestApp::TestDynamicBuffers( IMatRenderContext *pMatRenderContext, bool bBuffered )
|
||||
{
|
||||
CreateWireframeMaterial();
|
||||
|
||||
g_pMaterialSystem->BeginFrame( 0 );
|
||||
|
||||
pMatRenderContext->Bind( m_pMaterial );
|
||||
IMesh *pMesh = pMatRenderContext->GetDynamicMesh( bBuffered );
|
||||
|
||||
// clear (so that we can make sure that we aren't getting results from the previous quad)
|
||||
pMatRenderContext->ClearColor3ub( RandomInt( 0, 100 ), RandomInt( 0, 100 ), RandomInt( 190, 255 ) );
|
||||
pMatRenderContext->ClearBuffers( true, true );
|
||||
|
||||
static unsigned char s_pColors[4][4] =
|
||||
{
|
||||
{ 255, 0, 0, 255 },
|
||||
{ 0, 255, 0, 255 },
|
||||
{ 0, 0, 255, 255 },
|
||||
{ 255, 255, 255, 255 },
|
||||
};
|
||||
|
||||
static int nCount = 0;
|
||||
|
||||
const int nLoopCount = 8;
|
||||
float flWidth = 2.0f / nLoopCount;
|
||||
for ( int i = 0; i < nLoopCount; ++i )
|
||||
{
|
||||
CMeshBuilder mb;
|
||||
mb.Begin( pMesh, MATERIAL_TRIANGLES, 4, 6 );
|
||||
|
||||
mb.Position3f( -1.0f + i * flWidth, -1.0f, 0.5f );
|
||||
mb.Normal3f( 0.0f, 0.0f, 1.0f );
|
||||
mb.Color4ubv( s_pColors[nCount++ % 4] );
|
||||
mb.AdvanceVertex();
|
||||
|
||||
mb.Position3f( -1.0f + i * flWidth + flWidth, -1.0f, 0.5f );
|
||||
mb.Normal3f( 0.0f, 0.0f, 1.0f );
|
||||
mb.Color4ubv( s_pColors[nCount++ % 4] );
|
||||
mb.AdvanceVertex();
|
||||
|
||||
mb.Position3f( -1.0f + i * flWidth + flWidth, 1.0f, 0.5f );
|
||||
mb.Normal3f( 0.0f, 0.0f, 1.0f );
|
||||
mb.Color4ubv( s_pColors[nCount++ % 4] );
|
||||
mb.AdvanceVertex();
|
||||
|
||||
mb.Position3f( -1.0f + i * flWidth, 1.0f, 0.5f );
|
||||
mb.Normal3f( 0.0f, 0.0f, 1.0f );
|
||||
mb.Color4ubv( s_pColors[nCount++ % 4] );
|
||||
mb.AdvanceVertex();
|
||||
|
||||
++nCount;
|
||||
|
||||
mb.FastIndex( 0 );
|
||||
mb.FastIndex( 2 );
|
||||
mb.FastIndex( 1 );
|
||||
mb.FastIndex( 0 );
|
||||
mb.FastIndex( 3 );
|
||||
mb.FastIndex( 2 );
|
||||
|
||||
mb.End( true );
|
||||
|
||||
pMesh->Draw( );
|
||||
}
|
||||
|
||||
++nCount;
|
||||
|
||||
g_pMaterialSystem->EndFrame();
|
||||
g_pMaterialSystem->SwapBuffers();
|
||||
|
||||
DestroyMaterial();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// main application
|
||||
//-----------------------------------------------------------------------------
|
||||
int CMaterialSystemTestApp::Main()
|
||||
{
|
||||
if ( !SetMode() )
|
||||
return 0;
|
||||
|
||||
CMatRenderContextPtr pRenderContext( g_pMaterialSystem );
|
||||
|
||||
// Sets up a full-screen viewport
|
||||
int w, h;
|
||||
pRenderContext->GetWindowSize( w, h );
|
||||
pRenderContext->Viewport( 0, 0, w, h );
|
||||
pRenderContext->DepthRange( 0.0f, 1.0f );
|
||||
|
||||
// Clears the screen
|
||||
g_pMaterialSystem->BeginFrame( 0 );
|
||||
pRenderContext->ClearColor4ub( 76, 88, 68, 255 );
|
||||
pRenderContext->ClearBuffers( true, true );
|
||||
g_pMaterialSystem->EndFrame();
|
||||
g_pMaterialSystem->SwapBuffers();
|
||||
|
||||
SetWindowText( m_HWnd, "Buffer clearing . . hit a key" );
|
||||
if ( !WaitForKeypress() )
|
||||
return 1;
|
||||
|
||||
SetWindowText( m_HWnd, "Dynamic buffer test.. hit a key" );
|
||||
TestDynamicBuffers( pRenderContext, false );
|
||||
if ( !WaitForKeypress() )
|
||||
return 1;
|
||||
|
||||
SetWindowText( m_HWnd, "Buffered dynamic buffer test.. hit a key" );
|
||||
TestDynamicBuffers( pRenderContext, true );
|
||||
if ( !WaitForKeypress() )
|
||||
return 1;
|
||||
|
||||
return 1;
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// MATERIALSYSTEMTEST.VPC
|
||||
//
|
||||
// Project Script
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
$Macro SRCDIR "..\.."
|
||||
$Macro OUTBINDIR "$LIBPUBLIC"
|
||||
|
||||
$Include "$SRCDIR\vpc_scripts\source_exe_base.vpc"
|
||||
|
||||
$Project "MaterialSystemTest"
|
||||
{
|
||||
$Folder "Source Files"
|
||||
{
|
||||
$File "materialsystemtest.cpp"
|
||||
}
|
||||
|
||||
$Folder "Link Libraries"
|
||||
{
|
||||
$Lib appframework
|
||||
$Lib tier2
|
||||
}
|
||||
}
|
|
@ -1,79 +0,0 @@
|
|||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
#include "tier0/platform.h"
|
||||
#include "mathlib/mathlib.h"
|
||||
#include "mathlib/spherical_geometry.h"
|
||||
#include "tier2/tier2.h"
|
||||
#include "mathlib/halton.h"
|
||||
#include "bitmap/float_bm.h"
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
void main(int argc,char **argv)
|
||||
{
|
||||
InitCommandLineProgram( argc, argv );
|
||||
|
||||
// 1/8th of the sphere
|
||||
float a1=UnitSphereTriangleArea( Vector( 1, 0, 0 ), Vector( 0, 0, -1 ), Vector( 0, 1, 0 ) );
|
||||
printf( "right spherical triangle projected percentage=%2.4f\n", a1 / ( 4 * M_PI ));
|
||||
|
||||
// a small one
|
||||
Vector v1 = Vector( 1, 0, 0 );
|
||||
Vector v2 = v1 + Vector( 0, 0.2, 0 );
|
||||
Vector v3 = v1 + Vector( 0, 0, 0.2 );
|
||||
v2.NormalizeInPlace();
|
||||
v3.NormalizeInPlace();
|
||||
float a2=UnitSphereTriangleArea( v1, v2, v3 );
|
||||
printf( "small spherical triangle projected percentage=%2.5f\n", a2 / ( 4* M_PI ) );
|
||||
|
||||
// now, create a cubemap and sum the area of each of its cells
|
||||
FloatCubeMap_t envMap( 10, 10 );
|
||||
float flAreaSum = 0.;
|
||||
for( int nFace = 0 ; nFace < 6; nFace ++ )
|
||||
{
|
||||
for( int nY = 0 ; nY < 9; nY++ )
|
||||
for( int nX = 0 ; nX < 9; nX++ )
|
||||
{
|
||||
Vector v00 = envMap.PixelDirection( nFace, nX, nY );
|
||||
Vector v01 = envMap.PixelDirection( nFace, nX, nY + 1 );
|
||||
Vector v10 = envMap.PixelDirection( nFace, nX + 1, nY );
|
||||
Vector v11 = envMap.PixelDirection( nFace, nX + 1 , nY + 1 );
|
||||
v00.NormalizeInPlace();
|
||||
v01.NormalizeInPlace();
|
||||
v10.NormalizeInPlace();
|
||||
v11.NormalizeInPlace();
|
||||
flAreaSum += UnitSphereTriangleArea( v00, v01, v10 );
|
||||
flAreaSum += UnitSphereTriangleArea( v10, v11, v01 );
|
||||
}
|
||||
}
|
||||
printf( "sum of areas of cubemap cells = %2.2f\n", flAreaSum / ( 4.0 * M_PI ) );
|
||||
|
||||
#if 0 // visual spherical harmonics as (confusing) point sets
|
||||
// spherical harmonics
|
||||
DirectionalSampler_t sampler;
|
||||
for(int i = 0 ; i < 50000; i++ )
|
||||
{
|
||||
Vector dir=sampler.NextValue();
|
||||
float SH = SphericalHarmonic( 4, 3, dir );
|
||||
float r=0;
|
||||
float g=1; //0.5+0.5*DotProduct( dir, Vector( 0, 0, 1 ) );
|
||||
float b=0;
|
||||
if ( SH < 0 )
|
||||
{
|
||||
SH = -SH;
|
||||
r=g;
|
||||
g=0;
|
||||
}
|
||||
r *= SH;
|
||||
g *= SH;
|
||||
b *= SH;
|
||||
float rad= SH * 4.0; //4.0; //SH *= 8.0;
|
||||
printf( "2\n" );
|
||||
printf( "%f %f %f %f %f %f\n",
|
||||
dir.x * rad, dir.y * rad, dir.z * rad, r, g, b );
|
||||
rad += 0.03;
|
||||
printf( "%f %f %f %f %f %f\n",
|
||||
dir.x * rad, dir.y * rad, dir.z * rad, r, g, b );
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// mathlib_test.VPC
|
||||
//
|
||||
// Project Script
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
$Macro SRCDIR "..\.."
|
||||
$Macro OUTBINDIR "$SRCDIR\unittests\mathlib_test"
|
||||
|
||||
$Include "$SRCDIR\vpc_scripts\source_exe_con_base.vpc"
|
||||
|
||||
$Configuration "Debug"
|
||||
{
|
||||
$Compiler
|
||||
{
|
||||
$PreprocessorDefinitions "$BASE;PROTECTED_THINGS_DISABLE"
|
||||
}
|
||||
|
||||
$Linker
|
||||
{
|
||||
$AdditionalDependencies "$BASE winmm.lib"
|
||||
}
|
||||
}
|
||||
|
||||
$Project "mathlib_test"
|
||||
{
|
||||
$Folder "Source Files"
|
||||
{
|
||||
$File "mathlib_test.cpp"
|
||||
}
|
||||
|
||||
$Folder "Link Libraries"
|
||||
{
|
||||
$Lib bitmap
|
||||
$Lib mathlib
|
||||
$Lib tier2
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// SHADERAPITEST.VPC
|
||||
//
|
||||
// Project Script
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
$Macro SRCDIR "..\.."
|
||||
$Macro OUTBINDIR "$LIBPUBLIC"
|
||||
|
||||
$Include "$SRCDIR\vpc_scripts\source_exe_base.vpc"
|
||||
|
||||
$Project "ShaderAPITest"
|
||||
{
|
||||
$Folder "Source Files"
|
||||
{
|
||||
$File "shaderapitest.cpp"
|
||||
}
|
||||
|
||||
$Folder "Link Libraries"
|
||||
{
|
||||
$Lib appframework
|
||||
$Lib tier2
|
||||
$Lib $LIBCOMMON\bzip2
|
||||
}
|
||||
}
|
|
@ -1,306 +0,0 @@
|
|||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// The copyright to the contents herein is the property of Valve, L.L.C.
|
||||
// The contents may be used and/or copied only with the written permission of
|
||||
// Valve, L.L.C., or in accordance with the terms and conditions stipulated in
|
||||
// the agreement/contract under which the contents have been supplied.
|
||||
//
|
||||
// $Header: $
|
||||
// $NoKeywords: $
|
||||
//
|
||||
// Sound unit test application
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#include <windows.h>
|
||||
#include "tier0/dbg.h"
|
||||
#include "tier0/icommandline.h"
|
||||
#include "filesystem.h"
|
||||
#include "datacache/idatacache.h"
|
||||
#include "appframework/appframework.h"
|
||||
#include "soundsystem/isoundsystem.h"
|
||||
#include "vstdlib/cvar.h"
|
||||
#include "filesystem_init.h"
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Main system interfaces
|
||||
//-----------------------------------------------------------------------------
|
||||
IFileSystem *g_pFileSystem;
|
||||
ISoundSystem *g_pSoundSystem;
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Standard spew functions
|
||||
//-----------------------------------------------------------------------------
|
||||
static SpewRetval_t SoundTestOutputFunc( SpewType_t spewType, char const *pMsg )
|
||||
{
|
||||
printf( pMsg );
|
||||
fflush( stdout );
|
||||
|
||||
if (spewType == SPEW_ERROR)
|
||||
return SPEW_ABORT;
|
||||
return (spewType == SPEW_ASSERT) ? SPEW_DEBUGGER : SPEW_CONTINUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// The application object
|
||||
//-----------------------------------------------------------------------------
|
||||
class CSoundTestApp : public CDefaultAppSystemGroup<CSteamAppSystemGroup>
|
||||
{
|
||||
public:
|
||||
// Methods of IApplication
|
||||
virtual bool Create();
|
||||
virtual bool PreInit();
|
||||
virtual int Main();
|
||||
virtual void PostShutdown();
|
||||
virtual void Destroy();
|
||||
|
||||
private:
|
||||
bool CreateAppWindow( char const *pTitle, bool bWindowed, int w, int h );
|
||||
bool SetupSearchPaths();
|
||||
void AppPumpMessages();
|
||||
|
||||
// Windproc
|
||||
static LONG WINAPI WinAppWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
LONG WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
HWND m_hWnd;
|
||||
bool m_bExitMainLoop;
|
||||
};
|
||||
|
||||
static CSoundTestApp s_SoundTestApp;
|
||||
DEFINE_WINDOWED_STEAM_APPLICATION_OBJECT_GLOBALVAR( CSoundTestApp, s_SoundTestApp );
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// The application object
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CSoundTestApp::Create()
|
||||
{
|
||||
SpewOutputFunc( SoundTestOutputFunc );
|
||||
|
||||
// Add in the cvar factory
|
||||
AppModule_t cvarModule = LoadModule( VStdLib_GetICVarFactory() );
|
||||
AddSystem( cvarModule, CVAR_INTERFACE_VERSION );
|
||||
|
||||
AppSystemInfo_t appSystems[] =
|
||||
{
|
||||
{ "datacache.dll", DATACACHE_INTERFACE_VERSION },
|
||||
{ "soundsystem.dll", SOUNDSYSTEM_INTERFACE_VERSION },
|
||||
{ "", "" } // Required to terminate the list
|
||||
};
|
||||
|
||||
if ( !AddSystems( appSystems ) )
|
||||
return false;
|
||||
|
||||
g_pFileSystem = (IFileSystem*)FindSystem( FILESYSTEM_INTERFACE_VERSION );
|
||||
g_pSoundSystem = (ISoundSystem*)FindSystem( SOUNDSYSTEM_INTERFACE_VERSION );
|
||||
|
||||
return ( g_pFileSystem && g_pSoundSystem );
|
||||
}
|
||||
|
||||
void CSoundTestApp::Destroy()
|
||||
{
|
||||
g_pFileSystem = NULL;
|
||||
g_pSoundSystem = NULL;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Window management
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CSoundTestApp::CreateAppWindow( char const *pTitle, bool bWindowed, int w, int h )
|
||||
{
|
||||
WNDCLASSEX wc;
|
||||
memset( &wc, 0, sizeof( wc ) );
|
||||
wc.cbSize = sizeof( wc );
|
||||
wc.style = CS_OWNDC | CS_DBLCLKS;
|
||||
wc.lpfnWndProc = WinAppWindowProc;
|
||||
wc.hInstance = (HINSTANCE)GetAppInstance();
|
||||
wc.lpszClassName = "Valve001";
|
||||
wc.hIcon = NULL; //LoadIcon( s_HInstance, MAKEINTRESOURCE( IDI_LAUNCHER ) );
|
||||
wc.hIconSm = wc.hIcon;
|
||||
|
||||
RegisterClassEx( &wc );
|
||||
|
||||
// Note, it's hidden
|
||||
DWORD style = WS_POPUP | WS_CLIPSIBLINGS;
|
||||
|
||||
if ( bWindowed )
|
||||
{
|
||||
// Give it a frame
|
||||
style |= WS_OVERLAPPEDWINDOW;
|
||||
style &= ~WS_THICKFRAME;
|
||||
}
|
||||
|
||||
// Never a max box
|
||||
style &= ~WS_MAXIMIZEBOX;
|
||||
|
||||
RECT windowRect;
|
||||
windowRect.top = 0;
|
||||
windowRect.left = 0;
|
||||
windowRect.right = w;
|
||||
windowRect.bottom = h;
|
||||
|
||||
// Compute rect needed for that size client area based on window style
|
||||
AdjustWindowRectEx(&windowRect, style, FALSE, 0);
|
||||
|
||||
// Create the window
|
||||
m_hWnd = CreateWindow( wc.lpszClassName, pTitle, style, 0, 0,
|
||||
windowRect.right - windowRect.left, windowRect.bottom - windowRect.top,
|
||||
NULL, NULL, (HINSTANCE)GetAppInstance(), NULL );
|
||||
|
||||
if ( m_hWnd == INVALID_HANDLE_VALUE )
|
||||
return false;
|
||||
|
||||
int CenterX, CenterY;
|
||||
|
||||
CenterX = (GetSystemMetrics(SM_CXSCREEN) - w) / 2;
|
||||
CenterY = (GetSystemMetrics(SM_CYSCREEN) - h) / 2;
|
||||
CenterX = (CenterX < 0) ? 0: CenterX;
|
||||
CenterY = (CenterY < 0) ? 0: CenterY;
|
||||
|
||||
// In VCR modes, keep it in the upper left so mouse coordinates are always relative to the window.
|
||||
SetWindowPos (m_hWnd, NULL, CenterX, CenterY, 0, 0,
|
||||
SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW | SWP_DRAWFRAME);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Message handler
|
||||
//-----------------------------------------------------------------------------
|
||||
LONG CSoundTestApp::WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
if ( uMsg == WM_CLOSE )
|
||||
{
|
||||
m_bExitMainLoop = true;
|
||||
}
|
||||
return DefWindowProc( hWnd, uMsg, wParam, lParam );
|
||||
}
|
||||
|
||||
LONG WINAPI CSoundTestApp::WinAppWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
return s_SoundTestApp.WindowProc( hWnd, uMsg, wParam, lParam );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Sets up the game path
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CSoundTestApp::SetupSearchPaths()
|
||||
{
|
||||
CFSSteamSetupInfo steamInfo;
|
||||
steamInfo.m_pDirectoryName = NULL;
|
||||
steamInfo.m_bOnlyUseDirectoryName = false;
|
||||
steamInfo.m_bToolsMode = true;
|
||||
steamInfo.m_bSetSteamDLLPath = true;
|
||||
steamInfo.m_bSteam = g_pFileSystem->IsSteam();
|
||||
if ( FileSystem_SetupSteamEnvironment( steamInfo ) != FS_OK )
|
||||
return false;
|
||||
|
||||
CFSMountContentInfo fsInfo;
|
||||
fsInfo.m_pFileSystem = g_pFileSystem;
|
||||
fsInfo.m_bToolsMode = true;
|
||||
fsInfo.m_pDirectoryName = steamInfo.m_GameInfoPath;
|
||||
|
||||
if ( FileSystem_MountContent( fsInfo ) != FS_OK )
|
||||
return false;
|
||||
|
||||
// Finally, load the search paths for the "GAME" path.
|
||||
CFSSearchPathsInit searchPathsInit;
|
||||
searchPathsInit.m_pDirectoryName = steamInfo.m_GameInfoPath;
|
||||
searchPathsInit.m_pFileSystem = g_pFileSystem;
|
||||
if ( FileSystem_LoadSearchPaths( searchPathsInit ) != FS_OK )
|
||||
return false;
|
||||
|
||||
g_pFileSystem->AddSearchPath( steamInfo.m_GameInfoPath, "SKIN", PATH_ADD_TO_HEAD );
|
||||
|
||||
FileSystem_AddSearchPath_Platform( g_pFileSystem, steamInfo.m_GameInfoPath );
|
||||
|
||||
// and now add episodic to the GAME searchpath
|
||||
char shorts[MAX_PATH];
|
||||
Q_strncpy( shorts, steamInfo.m_GameInfoPath, MAX_PATH );
|
||||
Q_StripTrailingSlash( shorts );
|
||||
Q_strncat( shorts, "/../episodic", MAX_PATH, MAX_PATH );
|
||||
|
||||
g_pFileSystem->AddSearchPath( shorts, "GAME", PATH_ADD_TO_HEAD );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// PreInit, PostShutdown
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CSoundTestApp::PreInit( )
|
||||
{
|
||||
// Add paths...
|
||||
if ( !SetupSearchPaths() )
|
||||
return false;
|
||||
|
||||
const char *pArg;
|
||||
int iWidth = 1024;
|
||||
int iHeight = 768;
|
||||
bool bWindowed = (CommandLine()->CheckParm( "-fullscreen" ) == NULL);
|
||||
if (CommandLine()->CheckParm( "-width", &pArg ))
|
||||
{
|
||||
iWidth = atoi( pArg );
|
||||
}
|
||||
if (CommandLine()->CheckParm( "-height", &pArg ))
|
||||
{
|
||||
iHeight = atoi( pArg );
|
||||
}
|
||||
|
||||
if ( !CreateAppWindow( "SoundTest", bWindowed, iWidth, iHeight ) )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void CSoundTestApp::PostShutdown()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Pump messages
|
||||
//-----------------------------------------------------------------------------
|
||||
void CSoundTestApp::AppPumpMessages()
|
||||
{
|
||||
MSG msg;
|
||||
while ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
|
||||
{
|
||||
TranslateMessage( &msg );
|
||||
DispatchMessage( &msg );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// The application object
|
||||
//-----------------------------------------------------------------------------
|
||||
int CSoundTestApp::Main()
|
||||
{
|
||||
CAudioSource *pSource = g_pSoundSystem->LoadSound( "sound/ambient/alarms/alarm1.wav" );
|
||||
|
||||
CAudioMixer *pMixer;
|
||||
g_pSoundSystem->PlaySound( pSource, 1.0f, &pMixer );
|
||||
|
||||
m_bExitMainLoop = false;
|
||||
while ( !m_bExitMainLoop )
|
||||
{
|
||||
AppPumpMessages();
|
||||
g_pSoundSystem->Update( Plat_FloatTime() );
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// SOUNDTEST.VPC
|
||||
//
|
||||
// Project Script
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
$Macro SRCDIR "..\.."
|
||||
$Macro OUTBINDIR "$LIBPUBLIC"
|
||||
|
||||
$Include "$SRCDIR\vpc_scripts\source_exe_win_win32_base.vpc"
|
||||
|
||||
$Project "Soundtest"
|
||||
{
|
||||
$Folder "Source Files"
|
||||
{
|
||||
$File "$SRCDIR\public\filesystem_init.cpp"
|
||||
$File "soundtest.cpp"
|
||||
}
|
||||
|
||||
$Folder "Link Libraries"
|
||||
{
|
||||
$DynamicFile "$SRCDIR\lib\public\appframework.lib"
|
||||
}
|
||||
}
|
|
@ -1,191 +0,0 @@
|
|||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//
|
||||
//===========================================================================//
|
||||
|
||||
#include <windows.h>
|
||||
#include "tier0/icommandline.h"
|
||||
#include <stdio.h>
|
||||
#include "tier0/dbg.h"
|
||||
|
||||
|
||||
static unsigned short g_InitialColor = 0xFFFF;
|
||||
static unsigned short g_LastColor = 0xFFFF;
|
||||
static unsigned short g_BadColor = 0xFFFF;
|
||||
static WORD g_BackgroundFlags = 0xFFFF;
|
||||
|
||||
static void GetInitialColors( )
|
||||
{
|
||||
// Get the old background attributes.
|
||||
CONSOLE_SCREEN_BUFFER_INFO oldInfo;
|
||||
GetConsoleScreenBufferInfo( GetStdHandle( STD_OUTPUT_HANDLE ), &oldInfo );
|
||||
g_InitialColor = g_LastColor = oldInfo.wAttributes & (FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
|
||||
g_BackgroundFlags = oldInfo.wAttributes & (BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE|BACKGROUND_INTENSITY);
|
||||
|
||||
g_BadColor = 0;
|
||||
if (g_BackgroundFlags & BACKGROUND_RED)
|
||||
g_BadColor |= FOREGROUND_RED;
|
||||
if (g_BackgroundFlags & BACKGROUND_GREEN)
|
||||
g_BadColor |= FOREGROUND_GREEN;
|
||||
if (g_BackgroundFlags & BACKGROUND_BLUE)
|
||||
g_BadColor |= FOREGROUND_BLUE;
|
||||
if (g_BackgroundFlags & BACKGROUND_INTENSITY)
|
||||
g_BadColor |= FOREGROUND_INTENSITY;
|
||||
}
|
||||
|
||||
static WORD SetConsoleTextColor( int red, int green, int blue, int intensity )
|
||||
{
|
||||
WORD ret = g_LastColor;
|
||||
|
||||
g_LastColor = 0;
|
||||
if( red ) g_LastColor |= FOREGROUND_RED;
|
||||
if( green ) g_LastColor |= FOREGROUND_GREEN;
|
||||
if( blue ) g_LastColor |= FOREGROUND_BLUE;
|
||||
if( intensity ) g_LastColor |= FOREGROUND_INTENSITY;
|
||||
|
||||
// Just use the initial color if there's a match...
|
||||
if (g_LastColor == g_BadColor)
|
||||
g_LastColor = g_InitialColor;
|
||||
|
||||
SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), g_LastColor | g_BackgroundFlags );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static void RestoreConsoleTextColor( WORD color )
|
||||
{
|
||||
SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), color | g_BackgroundFlags );
|
||||
g_LastColor = color;
|
||||
}
|
||||
|
||||
void CmdLib_Exit( int exitCode )
|
||||
{
|
||||
TerminateProcess( GetCurrentProcess(), 1 );
|
||||
}
|
||||
|
||||
CRITICAL_SECTION g_SpewCS;
|
||||
bool g_bSpewCSInitted = false;
|
||||
bool g_bSuppressPrintfOutput = false;
|
||||
|
||||
SpewRetval_t CmdLib_SpewOutputFunc( SpewType_t type, char const *pMsg )
|
||||
{
|
||||
// Hopefully two threads won't call this simultaneously right at the start!
|
||||
if ( !g_bSpewCSInitted )
|
||||
{
|
||||
InitializeCriticalSection( &g_SpewCS );
|
||||
g_bSpewCSInitted = true;
|
||||
}
|
||||
|
||||
WORD old;
|
||||
SpewRetval_t retVal;
|
||||
|
||||
EnterCriticalSection( &g_SpewCS );
|
||||
{
|
||||
if (( type == SPEW_MESSAGE ) || (type == SPEW_LOG ))
|
||||
{
|
||||
old = SetConsoleTextColor( 1, 1, 1, 0 );
|
||||
retVal = SPEW_CONTINUE;
|
||||
}
|
||||
else if( type == SPEW_WARNING )
|
||||
{
|
||||
old = SetConsoleTextColor( 1, 1, 0, 1 );
|
||||
retVal = SPEW_CONTINUE;
|
||||
}
|
||||
else if( type == SPEW_ASSERT )
|
||||
{
|
||||
old = SetConsoleTextColor( 1, 0, 0, 1 );
|
||||
retVal = SPEW_DEBUGGER;
|
||||
|
||||
#ifdef MPI
|
||||
// VMPI workers don't want to bring up dialogs and suchlike.
|
||||
if ( g_bUseMPI && !g_bMPIMaster )
|
||||
{
|
||||
VMPI_HandleCrash( pMsg, true );
|
||||
exit( 0 );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if( type == SPEW_ERROR )
|
||||
{
|
||||
old = SetConsoleTextColor( 1, 0, 0, 1 );
|
||||
retVal = SPEW_ABORT; // doesn't matter.. we exit below so we can return an errorlevel (which dbg.dll doesn't do).
|
||||
}
|
||||
else
|
||||
{
|
||||
old = SetConsoleTextColor( 1, 1, 1, 1 );
|
||||
retVal = SPEW_CONTINUE;
|
||||
}
|
||||
|
||||
if ( !g_bSuppressPrintfOutput || type == SPEW_ERROR )
|
||||
printf( "%s", pMsg );
|
||||
|
||||
OutputDebugString( pMsg );
|
||||
|
||||
if ( type == SPEW_ERROR )
|
||||
{
|
||||
printf( "\n" );
|
||||
OutputDebugString( "\n" );
|
||||
}
|
||||
|
||||
RestoreConsoleTextColor( old );
|
||||
}
|
||||
LeaveCriticalSection( &g_SpewCS );
|
||||
|
||||
if ( type == SPEW_ERROR )
|
||||
{
|
||||
CmdLib_Exit( 1 );
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
|
||||
void InstallSpewFunction()
|
||||
{
|
||||
setvbuf( stdout, NULL, _IONBF, 0 );
|
||||
setvbuf( stderr, NULL, _IONBF, 0 );
|
||||
|
||||
SpewOutputFunc( CmdLib_SpewOutputFunc );
|
||||
GetInitialColors();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Tests the process.cpp stuff
|
||||
//-----------------------------------------------------------------------------
|
||||
int main( int argc, char **argv )
|
||||
{
|
||||
CommandLine()->CreateCmdLine( argc, argv );
|
||||
InstallSpewFunction();
|
||||
|
||||
float flDelay = CommandLine()->ParmValue( "-delay", 0.0f );
|
||||
const char *pEndMessage = CommandLine()->ParmValue( "-message", "Test Finished!\n" );
|
||||
int nEndExtraBytes = CommandLine()->ParmValue( "-extrabytes", 0 );
|
||||
|
||||
if ( flDelay > 0.0f )
|
||||
{
|
||||
float t = Plat_FloatTime();
|
||||
while ( Plat_FloatTime() - t < flDelay )
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
Msg( pEndMessage );
|
||||
|
||||
if ( nEndExtraBytes )
|
||||
{
|
||||
while( --nEndExtraBytes >= 0 )
|
||||
{
|
||||
Msg( "%c", ( nEndExtraBytes % 10 ) + '0' );
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// TESTPROCESS.VPC
|
||||
//
|
||||
// Project Script
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
$MacroRequired "PLATSUBDIR"
|
||||
|
||||
$Macro SRCDIR "..\.."
|
||||
$Macro OUTBINDIR "$SRCDIR\unittests\testprocess"
|
||||
|
||||
$Include "$SRCDIR\vpc_scripts\source_exe_con_base.vpc"
|
||||
|
||||
$Configuration "Debug"
|
||||
{
|
||||
$Compiler
|
||||
{
|
||||
$PreprocessorDefinitions "$BASE;PROTECTED_THINGS_DISABLE"
|
||||
}
|
||||
|
||||
$Linker
|
||||
{
|
||||
$AdditionalDependencies "$BASE winmm.lib"
|
||||
}
|
||||
}
|
||||
|
||||
$Project "Testprocess"
|
||||
{
|
||||
$Folder "Source Files"
|
||||
{
|
||||
$File "testprocess.cpp"
|
||||
}
|
||||
|
||||
$Folder "Link Libraries"
|
||||
{
|
||||
$Lib tier2
|
||||
}
|
||||
}
|