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