Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/CGirderPlugin.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations) (download) (as text)
Sun Aug 15 01:53:13 2010 UTC (13 years, 9 months ago) by okadu
File MIME type: text/x-c++src
File size: 1781 byte(s)


1 #include "stdafx.h"
2 #include "CRailPlugin.h"
3 #include "CGirderPlugin.h"
4 #include "CGirderSelectMode.h"
5
6 /*
7 * ƒ[ƒh
8 */
9 bool CGirderPlugin::Load(){
10 char *str = m_Script, *tmp, *eee;
11 if(!ChDir() || !m_Script) return false;
12 try{
13 if(!(str = BeginBlock(eee = str, "GirderInfo"))) throw CSynErr(eee);
14 if(!(str = AsgnFloat(eee = str, "Height", &m_Height))) throw CSynErr(eee);
15 if(tmp = AsgnInteger(eee = str, "TrackNum", &m_TrackNum)) str = tmp;
16 else m_TrackNum = 1;
17 if(m_TrackNum<1){
18 throw CSynErr(eee, lang(InvalidTrackNum));
19 }else if(m_TrackNum>1){
20 if(!(str = AsgnFloat(eee = str, "TrackInterval", &m_TrackInterval))) throw CSynErr(eee);
21 }
22 if(tmp = AsgnYesNo(eee = str, "FlattenCant", &m_FlattenCant)) str = tmp;
23 else m_FlattenCant = false;
24 if(!(str = EndBlock(eee = str))) throw CSynErr(eee, ERR_ENDBLOCK);
25
26 if(!(str = ReadProfile(eee = str))) throw CSynErr(eee);
27
28 if(*(eee = str)) throw CSynErr(eee);
29 }
30 catch(CSynErr err){
31 HandleError(&err);
32 return false;
33 }
34 LoadData();
35 DELETE_A(m_Buffer);
36 return true;
37 }
38
39 /*
40 * ƒvƒŒƒrƒ…[Ý’č
41 */
42 void CGirderPlugin::SetPreview(){
43 ms_PreviewState = true;
44 g_Girder = this;
45 string desc = g_Girder->GetBasicInfo();
46 if(m_TrackNum>1) desc += FlashIn("\n%s: %d\n%s: %.3f [m]",
47 lang(TrackNum), m_TrackNum, lang(Interval), m_TrackInterval);
48 desc += "\n"+g_Girder->GetDescription();
49 g_GirderSelectMode->SetProperty((char *)desc.c_str());
50 }
51
52 /*
53 * ‹´‹rÝ’uˆĘ’uŒvŽZ
54 */
55 void CGirderPlugin::CalcPierPos(
56 VEC3 *pos, // ˆĘ’u
57 VEC3 *right, // right (ł‹K‰ťĎ)
58 VEC3 *up, // up (ł‹K‰ťĎ)
59 VEC3 *dir // dir (ł‹K‰ťĎ)
60 ){
61 if(m_FlattenCant){
62 right->y = 0.0f;
63 V3Norm(up, V3Cross(up, dir, V3Norm(right, right)));
64 }
65 *pos -= *up*m_Height;
66 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26