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