EggXfmSAnim

from panda3d.egg import EggXfmSAnim
class EggXfmSAnim

Bases: EggGroupNode

This corresponds to an <Xfm$Anim_S$> entry, which is a collection of up to nine <S$Anim> entries that specify the nine components of a transformation. It’s implemented as a group that can contain any number of EggSAnimData children.

Inheritance diagram

Inheritance diagram of EggXfmSAnim

__init__(*args, **kwargs)
addComponentData()

C++ Interface: add_component_data(const EggXfmSAnim self, str component_name, double value) add_component_data(const EggXfmSAnim self, int component, double value)

/**
  • Adds a new row to the named component (one of matrix_component_letters) of

  • the table.

*/

/**
  • Adds a new row to the indicated component (0-12) of the table.

*/

addData()

C++ Interface: add_data(const EggXfmSAnim self, const LMatrix4d mat)

/**
  • Adds a new matrix to the table, by adding a new row to each of the

  • subtables.

  • This is a convenience function that treats the table of tables as if it

  • were a single table of matrices. It is an error to call this if any

  • SAnimData children of this node have an improper name (e.g. not a single

  • letter, or not one of “ijkabchprxyz”).

  • This function has the further requirement that all nine of the subtables

  • must exist and be of the same length. Furthermore, the order string must

  • be the standard order string, which matches the system compose_matrix() and

  • decompose_matrix() functions.

  • Thus, you probably cannot take an existing EggXfmSAnim object and start

  • adding matrices to the end; you must clear out the original data first.

  • (As a special exception, if no tables exist, they will be created.) The

  • method normalize() will do this for you on an existing EggXfmSAnim.

  • This function may fail silently if the matrix cannot be decomposed into

  • scale, shear, rotate, and translate. In this case, the closest

  • approximation is added to the table, and false is returned.

*/

add_component_data()

C++ Interface: add_component_data(const EggXfmSAnim self, str component_name, double value) add_component_data(const EggXfmSAnim self, int component, double value)

/**
  • Adds a new row to the named component (one of matrix_component_letters) of

  • the table.

*/

/**
  • Adds a new row to the indicated component (0-12) of the table.

*/

add_data()

C++ Interface: add_data(const EggXfmSAnim self, const LMatrix4d mat)

/**
  • Adds a new matrix to the table, by adding a new row to each of the

  • subtables.

  • This is a convenience function that treats the table of tables as if it

  • were a single table of matrices. It is an error to call this if any

  • SAnimData children of this node have an improper name (e.g. not a single

  • letter, or not one of “ijkabchprxyz”).

  • This function has the further requirement that all nine of the subtables

  • must exist and be of the same length. Furthermore, the order string must

  • be the standard order string, which matches the system compose_matrix() and

  • decompose_matrix() functions.

  • Thus, you probably cannot take an existing EggXfmSAnim object and start

  • adding matrices to the end; you must clear out the original data first.

  • (As a special exception, if no tables exist, they will be created.) The

  • method normalize() will do this for you on an existing EggXfmSAnim.

  • This function may fail silently if the matrix cannot be decomposed into

  • scale, shear, rotate, and translate. In this case, the closest

  • approximation is added to the table, and false is returned.

*/

assign()

C++ Interface: assign(const EggXfmSAnim self, const EggXfmSAnim copy)

/**

*/

clearData()

C++ Interface: clear_data(const EggXfmSAnim self)

/**
  • Removes all data from the table. It does this by removing all of its

  • children.

*/

clearFps()

C++ Interface: clear_fps(const EggXfmSAnim self)

/**

*/

clearOrder()

C++ Interface: clear_order(const EggXfmSAnim self)

/**

*/

clear_data()

C++ Interface: clear_data(const EggXfmSAnim self)

/**
  • Removes all data from the table. It does this by removing all of its

  • children.

*/

clear_fps()

C++ Interface: clear_fps(const EggXfmSAnim self)

/**

*/

clear_order()

C++ Interface: clear_order(const EggXfmSAnim self)

/**

*/

composeWithOrder()

C++ Interface: compose_with_order(LMatrix4d mat, const LVecBase3d scale, const LVecBase3d shear, const LVecBase3d hpr, const LVecBase3d trans, str order, int cs)

/**
  • Composes a matrix out of the nine individual components, respecting the

  • order string. The components will be applied in the order indicated by the

  • string.

*/

compose_with_order()

C++ Interface: compose_with_order(LMatrix4d mat, const LVecBase3d scale, const LVecBase3d shear, const LVecBase3d hpr, const LVecBase3d trans, str order, int cs)

/**
  • Composes a matrix out of the nine individual components, respecting the

  • order string. The components will be applied in the order indicated by the

  • string.

*/

getClassType()

C++ Interface: get_class_type()

getCoordinateSystem()

C++ Interface: get_coordinate_system(EggXfmSAnim self)

/**
  • Returns the coordinate system this table believes it is defined within.

  • This should always match the coordinate system of the EggData structure

  • that owns it. It is necessary to store it here because the meaning of the

  • h, p, and r columns depends on the coordinate system.

*/

getFps()

C++ Interface: get_fps(EggXfmSAnim self)

/**
  • This is only valid if has_fps() returns true.

*/

getNumRows()

C++ Interface: get_num_rows(EggXfmSAnim self)

/**
  • Returns the effective number of rows in the table. This is actually the

  • number of rows of the smallest subtable larger than one row. This is a

  • convenience function that treats the table of tables as if it were a single

  • table of matrices.

*/

getOrder()

C++ Interface: get_order(EggXfmSAnim self)

/**

*/

getStandardOrder()

C++ Interface: get_standard_order()

/**
  • Returns the standard order of matrix component composition. This is what

  • the order string must be set to in order to use set_value() or add_data()

  • successfully.

*/

getValue()

C++ Interface: get_value(EggXfmSAnim self, int row, LMatrix4d mat)

/**
  • Returns the value of the aggregate row of the table as a matrix. This is a

  • convenience function that treats the table of tables as if it were a single

  • table of matrices. It is an error to call this if any SAnimData children

  • of this node have an improper name (e.g. not a single letter, or not one

  • of “ijkabchprxyz”).

*/

get_class_type()

C++ Interface: get_class_type()

get_coordinate_system()

C++ Interface: get_coordinate_system(EggXfmSAnim self)

/**
  • Returns the coordinate system this table believes it is defined within.

  • This should always match the coordinate system of the EggData structure

  • that owns it. It is necessary to store it here because the meaning of the

  • h, p, and r columns depends on the coordinate system.

*/

get_fps()

C++ Interface: get_fps(EggXfmSAnim self)

/**
  • This is only valid if has_fps() returns true.

*/

get_num_rows()

C++ Interface: get_num_rows(EggXfmSAnim self)

/**
  • Returns the effective number of rows in the table. This is actually the

  • number of rows of the smallest subtable larger than one row. This is a

  • convenience function that treats the table of tables as if it were a single

  • table of matrices.

*/

get_order()

C++ Interface: get_order(EggXfmSAnim self)

/**

*/

get_standard_order()

C++ Interface: get_standard_order()

/**
  • Returns the standard order of matrix component composition. This is what

  • the order string must be set to in order to use set_value() or add_data()

  • successfully.

*/

get_value()

C++ Interface: get_value(EggXfmSAnim self, int row, LMatrix4d mat)

/**
  • Returns the value of the aggregate row of the table as a matrix. This is a

  • convenience function that treats the table of tables as if it were a single

  • table of matrices. It is an error to call this if any SAnimData children

  • of this node have an improper name (e.g. not a single letter, or not one

  • of “ijkabchprxyz”).

*/

hasFps()

C++ Interface: has_fps(EggXfmSAnim self)

/**

*/

hasOrder()

C++ Interface: has_order(EggXfmSAnim self)

/**

*/

has_fps()

C++ Interface: has_fps(EggXfmSAnim self)

/**

*/

has_order()

C++ Interface: has_order(EggXfmSAnim self)

/**

*/

normalize()

C++ Interface: normalize(const EggXfmSAnim self)

/**
  • The inverse operation of optimize(), this ensures that all the sub-tables

  • have the same length by duplicating rows as necessary. This is needed

  • before doing operations like add_data() or set_value() on an existing

  • table.

*/

optimize()

C++ Interface: optimize(const EggXfmSAnim self)

/**
  • Optimizes the table by collapsing redundant sub-tables.

*/

optimizeToStandardOrder()

C++ Interface: optimize_to_standard_order(const EggXfmSAnim self)

/**
  • Optimizes the table by collapsing redundant sub-tables, and simultaneously

  • ensures that the order string is the standard order (which is the same as

  • that supported by compose_matrix() and decompose_matrix()).

*/

optimize_to_standard_order()

C++ Interface: optimize_to_standard_order(const EggXfmSAnim self)

/**
  • Optimizes the table by collapsing redundant sub-tables, and simultaneously

  • ensures that the order string is the standard order (which is the same as

  • that supported by compose_matrix() and decompose_matrix()).

*/

setFps()

C++ Interface: set_fps(const EggXfmSAnim self, double fps)

/**

*/

setOrder()

C++ Interface: set_order(const EggXfmSAnim self, str order)

/**

*/

setValue()

C++ Interface: set_value(const EggXfmSAnim self, int row, const LMatrix4d mat)

/**
  • Replaces the indicated row of the table with the given matrix.

  • This function can only be called if all the constraints of add_data(),

  • below, are met. Call normalize() first if you are not sure.

  • The return value is true if the matrix can be decomposed and stored as

  • scale, shear, rotate, and translate, or false otherwise. The data is set

  • in either case.

*/

set_fps()

C++ Interface: set_fps(const EggXfmSAnim self, double fps)

/**

*/

set_order()

C++ Interface: set_order(const EggXfmSAnim self, str order)

/**

*/

set_value()

C++ Interface: set_value(const EggXfmSAnim self, int row, const LMatrix4d mat)

/**
  • Replaces the indicated row of the table with the given matrix.

  • This function can only be called if all the constraints of add_data(),

  • below, are met. Call normalize() first if you are not sure.

  • The return value is true if the matrix can be decomposed and stored as

  • scale, shear, rotate, and translate, or false otherwise. The data is set

  • in either case.

*/