1 # ======================================================================
2 # CustomizableShaderTemplate.pm
3 # Copyright 2003, Sony Online Entertainment
5 # ======================================================================
7 package CustomizableShaderTemplate
;
10 use CustomizationVariableCollector
;
13 # ======================================================================
14 # CustomizableShaderTemplate potentially-public variables.
15 # ======================================================================
17 # our $relativePathName;
19 # ======================================================================
20 # Setup variables that can be imported by Exporter into user modules.
21 # ======================================================================
23 use vars
qw(@ISA @EXPORT_OK $VERSION);
28 # These symbols are okay to export if specifically requested.
29 @EXPORT_OK = qw(&install);
31 # ======================================================================
32 # CustomizableShaderTemplate private variables.
33 # ======================================================================
36 my $treeFileRelativeName;
38 # ======================================================================
39 # CustomizableShaderTemplate public functions.
40 # ======================================================================
44 # Register handler with CustomizationVariableCollector
45 CustomizationVariableCollector
::registerHandler
("CSHD", \
&processIff
);
48 # ======================================================================
49 # CustomizableShaderTemplate private functions
50 # ======================================================================
56 die "bad iff arg specified" if ref($iff) ne "Iff";
58 $treeFileRelativeName = shift;
59 die "bad tree file relative name" if !defined($treeFileRelativeName);
60 print "CustomizableShaderTemplate: processing file [$treeFileRelativeName]\n" if $debug;
62 # Ensure we're in the proper form.
63 return 0 unless $iff->getCurrentName() eq "CSHD";
65 $iff->enterForm("CSHD");
67 my $version = $iff->getCurrentName();
68 if ($version eq "0001")
74 print STDERR
"CustomizableShaderTemplate: unsupported version tag [$version].";
78 $iff->exitForm("CSHD");
80 print "CustomizableShaderTemplate: finished processing file [$treeFileRelativeName]\n" if $debug;
86 # ----------------------------------------------------------------------
90 print "process_0001(): begin\n" if $debug;
93 die 'bad $iff arg' if ref($iff) ne 'Iff';
95 $iff->enterForm("0001");
96 $iff->walkIff(\
&iffWalker_0001
);
97 $iff->exitForm("0001");
99 print "process_0001(): end\n" if $debug;
102 # ----------------------------------------------------------------------
107 die 'bad iff arg' if ref($iff) ne 'Iff';
109 my $blockName = shift;
112 printf("iffWalker_0001(): %s=[%s]\n", $isChunk ?
"chunk" : "form", $blockName) if $debug;
114 # Process blocks we understand.
117 if ($blockName eq 'AMCL')
119 # Handle material ambient color.
120 my $variableShortName = $iff->read_string();
121 my $variableIsPrivate = $iff->read_uint8();
122 my $palettePathName = $iff->read_string();
123 my $defaultIndex = $iff->read_uint32();
125 my $variableFullName = ($variableIsPrivate ?
'/private/' : '/shared_owner/') . $variableShortName;
126 CustomizationVariableCollector
::logPaletteColorVariable
($treeFileRelativeName, $variableFullName, $palettePathName, $defaultIndex);
128 elsif ($blockName eq 'DFCL')
130 # Handle material diffuse color.
131 my $variableShortName = $iff->read_string();
132 my $variableIsPrivate = $iff->read_uint8();
133 my $palettePathName = $iff->read_string();
134 my $defaultIndex = $iff->read_uint32();
136 my $variableFullName = ($variableIsPrivate ?
'/private/' : '/shared_owner/') . $variableShortName;
137 CustomizationVariableCollector
::logPaletteColorVariable
($treeFileRelativeName, $variableFullName, $palettePathName, $defaultIndex);
139 elsif ($blockName eq 'EMCL')
141 # Handle material emissive color.
142 my $variableShortName = $iff->read_string();
143 my $variableIsPrivate = $iff->read_uint8();
144 my $palettePathName = $iff->read_string();
145 my $defaultIndex = $iff->read_uint32();
147 my $variableFullName = ($variableIsPrivate ?
'/private/' : '/shared_owner/') . $variableShortName;
148 CustomizationVariableCollector
::logPaletteColorVariable
($treeFileRelativeName, $variableFullName, $palettePathName, $defaultIndex);
150 elsif ($blockName eq 'PAL ')
152 # Handle TextureFactor customization
153 my $variableShortName = $iff->read_string();
154 my $variableIsPrivate = $iff->read_uint8();
156 my $palettePathName = $iff->read_string();
157 my $defaultIndex = $iff->read_uint32();
159 my $variableFullName = ($variableIsPrivate ?
'/private/' : '/shared_owner/') . $variableShortName;
160 CustomizationVariableCollector
::logPaletteColorVariable
($treeFileRelativeName, $variableFullName, $palettePathName, $defaultIndex);
163 elsif ($blockName eq 'TX1D')
166 my $rangeMaxExclusive = $iff->read_uint16();
167 my $variableShortName = $iff->read_string();
168 my $variableIsPrivate = $iff->read_uint8();
169 my $defaultValue = $iff->read_uint16();
171 my $rangeMinInclusive = 0;
172 my $variableFullName = ($variableIsPrivate ?
'/private/' : '/shared_owner/') . $variableShortName;
173 CustomizationVariableCollector
::logBasicRangedIntVariable
($treeFileRelativeName, $variableFullName, $rangeMinInclusive, $rangeMaxExclusive, $defaultValue);
181 # ======================================================================