瀏覽代碼

*** empty log message ***

David Rose 25 年之前
父節點
當前提交
4dce4fd946
共有 1 個文件被更改,包括 137 次插入36 次删除
  1. 137 36
      dtool/pptempl/Template.models.pp

+ 137 - 36
dtool/pptempl/Template.models.pp

@@ -24,18 +24,24 @@
 
 
 #define pal_egg_dir pal_egg
 #define pal_egg_dir pal_egg
 #define bam_dir bams
 #define bam_dir bams
+#define soft_maps_dir soft_maps
 #defer phase_prefix $[if $[PHASE],phase_$[PHASE]/]
 #defer phase_prefix $[if $[PHASE],phase_$[PHASE]/]
 
 
 #defer install_model_dir $[install_dir]/$[phase_prefix]$[INSTALL_TO]
 #defer install_model_dir $[install_dir]/$[phase_prefix]$[INSTALL_TO]
+#define filter_dirs $[TARGET_DIR(filter_egg optchar_egg)]
 
 
-#define build_eggs $[sort $[SOURCES(flt_egg):%.flt=%.egg]]
-#define install_eggs $[sort $[SOURCES(install_egg)]]
+#define build_eggs $[sort \
+   $[SOURCES(flt_egg):%.flt=%.egg] \
+   $[forscopes soft_char_egg,$[POLY_MODEL:%=$[EGG_PREFIX]%.egg] $[NURBS_MODEL:%=$[EGG_PREFIX]%.egg]] \
+   $[forscopes soft_char_egg,$[ANIMS:%=$[EGG_PREFIX]%.egg]] \
+   ]
+#define install_eggs $[sort $[SOURCES(install_egg)] $[UNPAL_SOURCES(install_egg)]]
 
 
 #define install_egg_dirs $[sort $[forscopes install_egg,$[install_model_dir]]]
 #define install_egg_dirs $[sort $[forscopes install_egg,$[install_model_dir]]]
-#define installed_eggs $[sort $[forscopes install_egg,$[SOURCES:%=$[install_model_dir]/%]]]
-#define installed_bams $[sort $[forscopes install_egg,$[SOURCES:%.egg=$[install_model_dir]/%.bam]]]
+#define installed_eggs $[sort $[forscopes install_egg,$[SOURCES:%=$[install_model_dir]/%] $[UNPAL_SOURCES:%=$[install_model_dir]/%]]]
+#define installed_bams $[sort $[forscopes install_egg,$[SOURCES:%.egg=$[install_model_dir]/%.bam] $[UNPAL_SOURCES:%.egg=$[install_model_dir]/%.bam]]]
 
 
-#define pal_egg_targets $[install_eggs:%=$[pal_egg_dir]/%]
+#define pal_egg_targets $[sort $[SOURCES(install_egg):%=$[pal_egg_dir]/%]]
 #define bam_targets $[install_eggs:%.egg=$[bam_dir]/%.bam]
 #define bam_targets $[install_eggs:%.egg=$[bam_dir]/%.bam]
 
 
 #output Makefile
 #output Makefile
@@ -46,12 +52,22 @@
 #define all_targets \
 #define all_targets \
     Makefile \
     Makefile \
     $[texattrib_dir] \
     $[texattrib_dir] \
+    $[filter_dirs] \
+    $[optchar_dirs] \
     egg bam
     egg bam
 all : $[all_targets]
 all : $[all_targets]
 
 
-egg : $[build_eggs]
+#define egg_targets \
+    $[if $[POLY_MODEL(soft_char_egg)] $[NURBS_MODEL(soft_char_egg)],$[soft_maps_dir]] \
+    $[build_eggs]
+egg : $[egg_targets]
 
 
-pal : egg $[if $[pal_egg_targets],$[pal_egg_dir]] $[pal_egg_targets]
+#define filter_targets \
+    $[filter_dirs] \
+    $[forscopes install_egg,$[patsubst %,$[SOURCE_DIR:%=%/]%,$[SOURCES] $[UNPAL_SOURCES]]]
+filter : egg $[filter_targets]
+
+pal : filter $[if $[pal_egg_targets],$[pal_egg_dir]] $[pal_egg_targets]
 
 
 bam : pal $[if $[bam_targets],$[bam_dir]] $[bam_targets]
 bam : pal $[if $[bam_targets],$[bam_dir]] $[bam_targets]
 
 
@@ -79,15 +95,23 @@ clean-pal : clean-bam
 
 
 clean : clean-pal
 clean : clean-pal
 #if $[build_eggs]
 #if $[build_eggs]
-	rm -f $[build_eggs]
+	rm -f $[build_eggs] $[install_eggs:%.egg=%.pt]
+#endif
+#if $[POLY_MODEL(soft_char_egg)] $[NURBS_MODEL(soft_char_egg)]
+	rm -rf $[soft_maps_dir]
+#endif
+#if $[filter_dirs]
+	rm -rf $[filter_dirs]
 #endif
 #endif
 
 
 // We need a rule for each directory we might need to make.  This
 // We need a rule for each directory we might need to make.  This
 // loops through the full set of directories and creates a rule to
 // loops through the full set of directories and creates a rule to
 // make each one, as needed.
 // make each one, as needed.
 #foreach directory $[sort \
 #foreach directory $[sort \
+    $[filter_dirs] \
     $[if $[pal_egg_targets],$[pal_egg_dir]] \
     $[if $[pal_egg_targets],$[pal_egg_dir]] \
     $[if $[bam_targets],$[bam_dir]] \
     $[if $[bam_targets],$[bam_dir]] \
+    $[if $[POLY_MODEL(soft_char_egg)] $[NURBS_MODEL(soft_char_egg)],$[soft_maps_dir]] \
     $[texattrib_dir] \
     $[texattrib_dir] \
     $[install_egg_dirs] \
     $[install_egg_dirs] \
     ]
     ]
@@ -97,73 +121,150 @@ $[directory] :
 #end directory
 #end directory
 
 
 
 
-// Egg file generation.
+// Egg file generation from Flt files.
 #forscopes flt_egg
 #forscopes flt_egg
-#foreach flt $[SOURCES]
-#define target $[flt:%.flt=%.egg]
-#define source $[flt]
+  #foreach flt $[SOURCES]
+    #define target $[flt:%.flt=%.egg]
+    #define source $[flt]
 $[target] : $[source]
 $[target] : $[source]
 	flt2egg -no -rt -o $[target] $[source]
 	flt2egg -no -rt -o $[target] $[source]
 
 
-#end flt
+  #end flt
 #end flt_egg
 #end flt_egg
 
 
+// Egg character model generation from Soft databases.
+#forscopes soft_char_egg
+  #if $[POLY_MODEL]
+    #define target $[EGG_PREFIX]$[POLY_MODEL].egg
+    #define scene $[SCENE_PREFIX]$[MODEL].1-0.dsc
+    #define source $[DATABASE]/SCENES/$[scene]
+$[target] : $[source]
+	soft2egg $[SOFT2EGG_OPTS] -p -M $[target] -N $[CHAR_NAME] -d $[DATABASE] -s $[scene] -t $[soft_maps_dir]
+  #endif
+  #if $[NURBS_MODEL]
+    #define target $[EGG_PREFIX]$[NURBS_MODEL].egg
+    #define scene $[SCENE_PREFIX]$[MODEL].1-0.dsc
+    #define source $[DATABASE]/SCENES/$[scene]
+$[target] : $[source]
+	soft2egg $[SOFT2EGG_OPTS] -n -M $[target] -N $[CHAR_NAME] -d $[DATABASE] -s $[scene] -t $[soft_maps_dir]
+  #endif
+
+#end soft_char_egg
+
+// Egg animation generation from Soft database.
+#forscopes soft_char_egg
+  #foreach anim $[ANIMS]
+    #define target $[EGG_PREFIX]$[anim].egg
+    #define scene $[SCENE_PREFIX]$[anim].1-0.dsc
+    #define source $[DATABASE]/SCENES/$[scene]
+    #define begin $[or $[$[anim]_b],1]
+    #define end $[$[anim]_e]
+$[target] : $[source]
+	soft2egg $[SOFT2EGG_OPTS] -a -A $[target] -N $[CHAR_NAME] -d $[DATABASE] -s $[scene] $[begin:%=-b%] $[end:%=-e%]
+  #end anim
+#end soft_char_egg
+
+
+// Generic egg filters.
+#forscopes filter_egg
+  #define source_prefix $[SOURCE_DIR:%=%/]
+  #foreach egg $[SOURCES]
+    #define source $[source_prefix]$[egg]
+    #define target $[TARGET_DIR]/$[egg]
+$[target] : $[source] $[pt]
+	$[COMMAND]
+  #end egg
+#end filter_egg
+
+// Character optimization.
+#forscopes optchar_egg
+  #define source_prefix $[SOURCE_DIR:%=%/]
+  #define sources $[SOURCES:%=$[source_prefix]%]
+  #define target $[TARGET_DIR]/$[notdir $[firstword $[SOURCES]]]
+
+   // A bunch of rules to make each generated egg file depend on the
+   // first one.
+  #foreach egg $[notdir $[wordlist 2,9999,$[SOURCES]]]
+$[TARGET_DIR]/$[egg] : $[target]
+	touch $[TARGET_DIR]/$[egg]
+  #end egg
+
+   // And this is the actual optchar pass.
+$[target] : $[sources]
+	egg-optchar $[OPTCHAR_OPTS] -d $[TARGET_DIR] $[sources]
+#end optchar_egg
+
 
 
 // Palettization rules.
 // Palettization rules.
 #forscopes install_egg
 #forscopes install_egg
-#foreach egg $[SOURCES]
-#define pt $[egg:%.egg=%.pt]
-#define source $[egg]
-#define target $[pal_egg_dir]/$[source]
-$[target] : $[source] $[pt] $[build_eggs]
-#if $[PHASE]
+  #foreach egg $[SOURCES]
+    #define pt $[egg:%.egg=$[SOURCE_DIR]/%.pt]
+    #define source $[SOURCE_DIR]/$[egg]
+    #define target $[pal_egg_dir]/$[egg]
+$[target] : $[source] $[pt]
+    #if $[PHASE]
 	egg-palettize-new -C -dm $[install_dir]/%s/maps -g phase_$[PHASE] -gdir phase_$[PHASE] -P256,256 -2 -o $[target] $[texattrib_file] $[source]
 	egg-palettize-new -C -dm $[install_dir]/%s/maps -g phase_$[PHASE] -gdir phase_$[PHASE] -P256,256 -2 -o $[target] $[texattrib_file] $[source]
-#else
+    #else
 	egg-palettize-new -C -dm $[install_dir]/maps -P256,256 -2 -o $[target] $[texattrib_file] $[source]
 	egg-palettize-new -C -dm $[install_dir]/maps -P256,256 -2 -o $[target] $[texattrib_file] $[source]
-#endif
+    #endif
 
 
 $[pt] :
 $[pt] :
 	touch $[pt]
 	touch $[pt]
 
 
-#end egg
+  #end egg
 #end install_egg
 #end install_egg
 
 
 
 
 // Bam file creation.
 // Bam file creation.
 #forscopes install_egg
 #forscopes install_egg
-#foreach egg $[SOURCES]
-#define source $[pal_egg_dir]/$[egg]
-#define target $[bam_dir]/$[egg:%.egg=%.bam]
+  #foreach egg $[SOURCES]
+    #define source $[pal_egg_dir]/$[egg]
+    #define target $[bam_dir]/$[egg:%.egg=%.bam]
+$[target] : $[source]
+	egg2bam -o $[target] $[source]
+
+  #end egg
+  #foreach egg $[UNPAL_SOURCES]
+    #define source $[SOURCE_DIR]/$[egg]
+    #define target $[bam_dir]/$[egg:%.egg=%.bam]
 $[target] : $[source]
 $[target] : $[source]
 	egg2bam -o $[target] $[source]
 	egg2bam -o $[target] $[source]
 
 
-#end egg
+  #end egg
 #end install_egg
 #end install_egg
 
 
 
 
 // Egg file installation.
 // Egg file installation.
 #forscopes install_egg
 #forscopes install_egg
-#foreach egg $[SOURCES]
-#define local $[egg]
-#define sourcedir $[pal_egg_dir]
-#define dest $[install_model_dir]
+  #foreach egg $[SOURCES]
+    #define local $[egg]
+    #define sourcedir $[pal_egg_dir]
+    #define dest $[install_model_dir]
+$[dest]/$[local] : $[sourcedir]/$[local]
+	cd ./$[sourcedir] && $[INSTALL]
+
+  #end egg
+  #foreach egg $[UNPAL_SOURCES]
+    #define local $[egg]
+    #define sourcedir $[SOURCE_DIR]
+    #define dest $[install_model_dir]
 $[dest]/$[local] : $[sourcedir]/$[local]
 $[dest]/$[local] : $[sourcedir]/$[local]
 	cd ./$[sourcedir] && $[INSTALL]
 	cd ./$[sourcedir] && $[INSTALL]
 
 
-#end egg
+  #end egg
 #end install_egg
 #end install_egg
 
 
 
 
 // Bam file installation.
 // Bam file installation.
 #forscopes install_egg
 #forscopes install_egg
-#foreach egg $[SOURCES]
-#define local $[egg:%.egg=%.bam]
-#define sourcedir $[bam_dir]
-#define dest $[install_model_dir]
+  #foreach egg $[SOURCES] $[UNPAL_SOURCE]
+    #define local $[egg:%.egg=%.bam]
+    #define sourcedir $[bam_dir]
+    #define dest $[install_model_dir]
 $[dest]/$[local] : $[sourcedir]/$[local]
 $[dest]/$[local] : $[sourcedir]/$[local]
 	cd ./$[sourcedir] && $[INSTALL]
 	cd ./$[sourcedir] && $[INSTALL]
 
 
-#end egg
+  #end egg
 #end install_egg
 #end install_egg
 
 
 #end Makefile
 #end Makefile