Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

LampForMaya.cpp

Go to the documentation of this file.
00001 //------------------------------------------------------------------------------
00002 // Lamp : Open source game middleware
00003 // Copyright (C) 2004  Junpei Ohtani ( Email : junpee@users.sourceforge.jp )
00004 //
00005 // This library is free software; you can redistribute it and/or
00006 // modify it under the terms of the GNU Lesser General Public
00007 // License as published by the Free Software Foundation; either
00008 // version 2.1 of the License, or (at your option) any later version.
00009 //
00010 // This library is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 // Lesser General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU Lesser General Public
00016 // License along with this library; if not, write to the Free Software
00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 //------------------------------------------------------------------------------
00019 
00020 /** @file
00021  * Lamp for Maya 実装
00022  *
00023  * "Test/LampForMayaUnitTestBuildFlag.h"のLAMP_FOR_MAYA_UNIT_TEST_BUILD_FLAG
00024  * フラグを立てるとユニットテストをビルドします。<br>
00025  * 実行後Maya上で以下のコマンドを実行するとユニットテスト開始します。<br>
00026  * 「LampForMayaTest; unloadPlugin LampForMaya;」<br>
00027  * プラグインのアンロードはメモリリークを誤判定しないために必要です。<br>
00028  * <br>
00029  * プロジェクト設定<br>
00030  * 構成プロパティ->デバッグ->動作->コマンドに「maya.exe」<br>
00031  * 構成プロパティ->デバッグ->動作->コマンド引数に<br>
00032  * 「-command "LampForMayaTestInitialize;"」<br>
00033  * <br>
00034  * Mayaのファイルパス<br>
00035  * 「Lamp/LampForMaya/plug-ins」にプラグインパスを通す必要がある。<br>
00036  * 「Lamp/LampForMaya/scripts」にスクリプトパスを通す必要がある。<br>
00037  * 「Lamp/LampForMaya/icons」にアイコンパスを通す必要がある。<br>
00038  * Maya.envに以下の三行を付け加えるとよい。<br>
00039  *  MAYA_PLUG_IN_PATH = D:/Lamp/LampForMaya/plug-ins<br>
00040  *  MAYA_SCRIPT_PATH = D:/Lamp/LampForMaya/scripts<br>
00041  *  XBMLANGPATH = D:/Lamp/LampForMaya/icons<br>
00042  * @author Junpee
00043  */
00044 
00045 /** @namespace LampForMaya Lamp用Mayaプラグイン
00046  *
00047  * 3DグラフィックスライブラリLampのMayaプラグイン用ネームスペースです。
00048  */
00049 
00050 #include "System/stdafx.h"
00051 #include <maya/MFnPlugin.h>
00052 #include "Translator/Core/LampTextTranslator.h"
00053 #include "Translator/Core/LampBinaryTranslator.h"
00054 #include "Material/Basic/LampBasicMaterial.h"
00055 
00056 #include "Test/LampForMayaUnitTestBuildFlag.h"
00057 #if LAMP_FOR_MAYA_UNIT_TEST_BUILD_FLAG
00058 #include "Test/LampForMayaTest.h"
00059 #endif
00060 
00061 using namespace LampForMaya;
00062 
00063 //------------------------------------------------------------------------------
00064 /**
00065  * プラグイン初期化
00066  * @param object プラグインオブジェクト
00067  * @return プラグインの初期化に成功すればMStatus::kSuccess
00068  */
00069 MStatus initializePlugin(MObject object){
00070     //--------------------------------------------------------------------------
00071     // システム初期化
00072     //--------------------------------------------------------------------------
00073     // Lamp初期化
00074     LampCore::initialize();
00075     // Mayaエラー出力初期化
00076     MayaErrorOutput::initialize();
00077 
00078     //--------------------------------------------------------------------------
00079     MStatus result;
00080 
00081     MFnPlugin plugin(object, "Nemunekoya", "0.1", "Any");
00082 
00083     // サーフェースシェーダ分類
00084     MString surfaceShaderClassify("shader/surface");
00085 
00086     // 基本マテリアルの登録
00087     result = plugin.registerNode(
00088         "LampBasicMaterial",            // プラグイン名
00089         LampBasicMaterial::id,          // タイプID
00090         LampBasicMaterial::creator,     // 生成メソッド
00091         LampBasicMaterial::initialize,  // 初期化メソッド
00092         MPxNode::kHwShaderNode,         // ノードの種類を指定
00093         &surfaceShaderClassify);        // シェーダ分類
00094     MayaStatusCheck(result);
00095 
00096     // テキストファイル出力プラグインの登録
00097     result = plugin.registerFileTranslator(
00098         "LampTextTranslator",           // プラグイン名
00099         "LampTextTranslator.xpm",       // アイコンファイル名
00100         LampTextTranslator::creator,    // 生成メソッド
00101         "LampTranslatorOptions",        // オプションMELスクリプト名
00102         "",                             // デフォルトオプション
00103         true);                          // MEL使用フラグ
00104     MayaStatusCheck(result);
00105 
00106     // バイナリファイル出力プラグインの登録
00107     result = plugin.registerFileTranslator(
00108         "LampBinaryTranslator",         // プラグイン名
00109         "LampBinaryTranslator.xpm",     // アイコンファイル名
00110         LampBinaryTranslator::creator,  // 生成メソッド
00111         "LampTranslatorOptions",        // オプションMELスクリプト名
00112         "",                             // デフォルトオプション
00113         true);                          // MEL使用フラグ
00114     MayaStatusCheck(result);
00115 
00116 #if LAMP_FOR_MAYA_UNIT_TEST_BUILD_FLAG
00117     // テストコマンドプラグインの登録
00118     result = plugin.registerCommand(
00119         "LampForMayaTest", LampForMayaTest::creator);
00120     MayaStatusCheck(result);
00121 #endif
00122 
00123     return result;
00124 }
00125 //------------------------------------------------------------------------------
00126 /**
00127  * プラグイン後始末
00128  * @param object プラグインオブジェクト
00129  * @return プラグインの後始末に成功すればMStatus::kSuccess
00130  */
00131 MStatus uninitializePlugin(MObject object){
00132     MStatus result;
00133     MFnPlugin plugin(object);
00134 
00135 #if LAMP_FOR_MAYA_UNIT_TEST_BUILD_FLAG
00136     // テストコマンドプラグインの登録解除
00137     result = plugin.deregisterCommand ("LampForMayaTest");
00138     MayaStatusCheck(result);
00139 #endif
00140 
00141     // バイナリファイル出力プラグインの登録解除
00142     result = plugin.deregisterFileTranslator("LampBinaryTranslator");
00143     MayaStatusCheck(result);
00144 
00145     // テキストファイル出力プラグインの登録解除
00146     result = plugin.deregisterFileTranslator("LampTextTranslator");
00147     MayaStatusCheck(result);
00148 
00149     // 基本マテリアルの登録解除
00150     result = plugin.deregisterNode(LampBasicMaterial::id);
00151     MayaStatusCheck(result);
00152 
00153     // Lamp後始末
00154     LampCore::finalize();
00155 
00156     //--------------------------------------------------------------------------
00157     return result;
00158 }
00159 //------------------------------------------------------------------------------

Generated on Wed Mar 16 10:29:55 2005 for LampForMaya by doxygen 1.3.2