1 /*
2      PLIB - A Suite of Portable Game Libraries
3      Copyright (C) 1998,2002  Steve Baker
4 
5      This library is free software; you can redistribute it and/or
6      modify it under the terms of the GNU Library General Public
7      License as published by the Free Software Foundation; either
8      version 2 of the License, or (at your option) any later version.
9 
10      This library is distributed in the hope that it will be useful,
11      but WITHOUT ANY WARRANTY; without even the implied warranty of
12      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13      Library General Public License for more details.
14 
15      You should have received a copy of the GNU Library General Public
16      License along with this library; if not, write to the Free Software
17      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
18 
19      For further information visit http://plib.sourceforge.net
20 
21      $Id: ssgBaseTransform.cxx 1568 2002-09-02 06:05:49Z sjbaker $
22 */
23 
24 
25 #include "ssgLocal.h"
26 
copy_from(ssgBaseTransform * src,int clone_flags)27 void ssgBaseTransform::copy_from ( ssgBaseTransform *src, int clone_flags )
28 {
29   ssgBranch::copy_from ( src, clone_flags ) ;
30 
31   src -> getTransform     ( transform ) ;
32   src -> getLastTransform ( last_transform ) ;
33   last_updated = src -> last_updated ;
34   first_time   = src -> first_time   ;
35 }
36 
37 
38 
ssgBaseTransform(void)39 ssgBaseTransform::ssgBaseTransform (void)
40 {
41   type = ssgTypeBaseTransform () ;
42   last_updated = -9999999 ;
43   first_time = TRUE ;
44   sgMakeIdentMat4 ( transform ) ;
45   sgMakeIdentMat4 ( last_transform ) ;
46 }
47 
~ssgBaseTransform(void)48 ssgBaseTransform::~ssgBaseTransform (void)
49 {
50 }
51 
52 
load(FILE * fd)53 int ssgBaseTransform::load ( FILE *fd )
54 {
55   _ssgReadMat4 ( fd, transform ) ;
56   updateTransform () ;
57   first_time = TRUE ;
58   return ssgBranch::load(fd) ;
59 }
60 
save(FILE * fd)61 int ssgBaseTransform::save ( FILE *fd )
62 {
63   _ssgWriteMat4 ( fd, transform ) ;
64   return ssgBranch::save(fd) ;
65 }
66 
67 
print(FILE * fd,char * indent,int how_much)68 void ssgBaseTransform::print ( FILE *fd, char *indent, int how_much )
69 {
70   ssgBranch::print ( fd, indent, how_much ) ;
71 
72   if ( how_much >= 2 )
73     for ( int row = 0 ; row < 4 ; row++ )
74       fprintf ( fd, "%s  Transform[%d]= %f,%f,%f,%f\n", indent, row,
75         transform[row][0], transform[row][1],
76         transform[row][2], transform[row][3] ) ;
77 }
78 
79 
80