/********************************************************************/ /* Copyright (c) 2017 System fugen G.K. and Yuzi Mizuno */ /* All rights reserved. */ /********************************************************************/ // mgSysGLList.cpp : mgSysGLList クラスのimplementation。 #include "MGCLStdAfx.h" #include "mg/DNameControl.h" #include "mgGL/OpenGLView.h" #include "mgGL/SysGL.h" #if defined(_DEBUG) #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif mgSysGL::mgSysGL():m_fucntion_id(0),m_gel(0){;} mgSysGL::mgSysGL(int fucntion_code,const MGGel* object_id) :m_fucntion_id(fucntion_code),m_gel(const_cast(object_id)){ } //Copy constructor, replacing gel_old to gel_new. mgSysGL::mgSysGL( mgSysGL& glold, const MGGel* gel_old, const MGGel* gel_new ):mgVBO(glold),m_fucntion_id(glold.m_fucntion_id),m_gel(glold.m_gel){ replace(gel_old,gel_new); } ///Copy constructor. mgSysGL::mgSysGL(const mgSysGL& sp) :mgVBO(sp),m_fucntion_id(sp.m_fucntion_id),m_gel(sp.m_gel){ } ///Assignment mgSysGL& mgSysGL::operator=( const mgSysGL& sp ){ mgVBO::operator=(sp); m_fucntion_id=sp.m_fucntion_id; m_gel=sp.m_gel; return *this; } mgSysGL::~mgSysGL(){ } //Construct new object by copying to newed area. //User must delete this copied object by "delete". mgSysGL* mgSysGL::clone()const{ return new mgSysGL(*this); } ///Test if this mgSysGL includes gel(return true) or not. ///The default includes tests if the input gel is m_gel of this ///member data. bool mgSysGL::includes(const MGGel* gel)const{ if(!gel || !m_gel) return false; return gel==m_gel; } ///(1) initializeVBO ///(2)drawSysGLで描画データを作成しなおす。 void mgSysGL::make_display_list(MGCL::VIEWMODE vmode){ initializeVBO(vmode); drawSysGL(); setDirty(false); } //Make system display list in glv. //This must be a newed object and the ownership will be transfered to //glv(glv.m_sysgllist). void mgSysGL::makeSysGLDisplayList( MGOpenGLView& glv ){ initializeVBO(); drawSysGL(); glv.push_back_to_sysgl(this); setDirty(false); } //replace gel_old to gel_new. //If gel_old is not included in this, do nothing. void mgSysGL::replace( const MGGel* gel_old, const MGGel* gel_new ){ if(m_gel==gel_old) m_gel=const_cast(gel_new); } // Output virtual function. //Output to stream file:メンバデータを標準出力に出力する。 std::ostream& mgSysGL::out(std::ostream& ostrm) const{ // ostrm.setf(ios::scientific,ios::floatfield); // ostrm.precision(10); ostrm<<"mgSysGL::"<