00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "eggSAnimData.h"
00020 #include "eggMiscFuncs.h"
00021 #include "eggParameters.h"
00022
00023 #include <indent.h>
00024
00025 #include <math.h>
00026
00027 TypeHandle EggSAnimData::_type_handle;
00028
00029
00030
00031
00032
00033
00034
00035 void EggSAnimData::
00036 optimize() {
00037 if (get_num_rows() > 1) {
00038 double value = get_value(0);
00039 for (int row = 1; row < get_num_rows(); row++) {
00040 if (fabs(get_value(row) - value) > egg_parameters->_table_threshold) {
00041 return;
00042 }
00043 }
00044
00045
00046 _data.erase(_data.begin() + 1, _data.end());
00047 }
00048 }
00049
00050
00051
00052
00053
00054
00055
00056
00057 void EggSAnimData::
00058 write(ostream &out, int indent_level) const {
00059 if (get_num_rows() <= 1) {
00060
00061
00062
00063
00064 indent(out, indent_level) << "<S$Anim> ";
00065 if (has_name()) {
00066 enquote_string(out, get_name()) << " {";
00067 } else {
00068 out << "{";
00069 }
00070
00071 if (has_fps()) {
00072 out << " <Scalar> fps { " << get_fps() << " }";
00073 }
00074
00075 if (get_num_rows() == 1) {
00076 out << " <V> { " << get_value(0) << " }";
00077 } else {
00078 out << " <V> { }";
00079 }
00080
00081 out << " }\n";
00082
00083 } else {
00084
00085
00086
00087 write_header(out, indent_level, "<S$Anim>");
00088
00089 if (has_fps()) {
00090 indent(out, indent_level + 2)
00091 << "<Scalar> fps { " << get_fps() << " }\n";
00092 }
00093 indent(out, indent_level + 2) << "<V> {\n";
00094 write_long_list(out, indent_level + 4, _data.begin(), _data.end(),
00095 "", "", 72);
00096 indent(out, indent_level + 2) << "}\n";
00097 indent(out, indent_level) << "}\n";
00098 }
00099 }