ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/lib/cf.pm
(Generate patch)

Comparing deliantra/server/lib/cf.pm (file contents):
Revision 1.495 by root, Tue Nov 10 04:38:45 2009 UTC vs.
Revision 1.496 by root, Sun Nov 15 18:03:59 2009 UTC

53use Coro::Util (); 53use Coro::Util ();
54 54
55use JSON::XS 2.01 (); 55use JSON::XS 2.01 ();
56use BDB (); 56use BDB ();
57use Data::Dumper; 57use Data::Dumper;
58use Digest::MD5;
59use Fcntl; 58use Fcntl;
60use YAML::XS (); 59use YAML::XS ();
61use IO::AIO (); 60use IO::AIO ();
62use Time::HiRes; 61use Time::HiRes;
63use Compress::LZF; 62use Compress::LZF;
3292 while (my ($face, $info) = each %$faces) { 3291 while (my ($face, $info) = each %$faces) {
3293 my $idx = (cf::face::find $face) || cf::face::alloc $face; 3292 my $idx = (cf::face::find $face) || cf::face::alloc $face;
3294 3293
3295 cf::face::set_visibility $idx, $info->{visibility}; 3294 cf::face::set_visibility $idx, $info->{visibility};
3296 cf::face::set_magicmap $idx, $info->{magicmap}; 3295 cf::face::set_magicmap $idx, $info->{magicmap};
3297 cf::face::set_data $idx, 0, $info->{data32}, Digest::MD5::md5 $info->{data32}; 3296 cf::face::set_data $idx, 0, $info->{data32}, $info->{hash32};
3298 cf::face::set_data $idx, 1, $info->{data64}, Digest::MD5::md5 $info->{data64}; 3297 cf::face::set_data $idx, 1, $info->{data64}, $info->{hash64};
3299 3298
3300 cf::cede_to_tick; 3299 cf::cede_to_tick;
3301 } 3300 }
3302 3301
3303 while (my ($face, $info) = each %$faces) { 3302 while (my ($face, $info) = each %$faces) {
3327 3326
3328 cf::anim::invalidate_all; # d'oh 3327 cf::anim::invalidate_all; # d'oh
3329 } 3328 }
3330 3329
3331 { 3330 {
3332 # TODO: for gcfclient pleasure, we should give resources
3333 # that gcfclient doesn't grok a >10000 face index.
3334 my $res = $facedata->{resource}; 3331 my $res = $facedata->{resource};
3335 3332
3336 while (my ($name, $info) = each %$res) { 3333 while (my ($name, $info) = each %$res) {
3337 if (defined $info->{type}) { 3334 if (defined $info->{type}) {
3338 my $idx = (cf::face::find $name) || cf::face::alloc $name; 3335 my $idx = (cf::face::find $name) || cf::face::alloc $name;
3339 my $data;
3340 3336
3341 if ($info->{type} & 1) { 3337 cf::face::set_data $idx, 0, $info->{data}, $info->{hash};
3342 # prepend meta info
3343
3344 my $meta = $enc->encode ({
3345 name => $name,
3346 %{ $info->{meta} || {} },
3347 });
3348
3349 $data = pack "(w/a*)*", $meta, $info->{data};
3350 } else {
3351 $data = $info->{data};
3352 }
3353
3354 cf::face::set_data $idx, 0, $data, Digest::MD5::md5 $data;
3355 cf::face::set_type $idx, $info->{type}; 3338 cf::face::set_type $idx, $info->{type};
3356 } else { 3339 } else {
3357 $RESOURCE{$name} = $info; 3340 $RESOURCE{$name} = $info;
3358 } 3341 }
3359 3342

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines