@ -1,25 +0,0 @@
@@ -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 @@
@@ -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.0 MiB |
@ -1,16 +0,0 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -1 +0,0 @@
|
||||
testprocess autotest1 |
@ -1,181 +0,0 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 |
||||
} |
||||
} |