OpenGLViewportRendererPlugin.cpp

//-
// ==========================================================================
// Copyright 1995,2006,2008 Autodesk, Inc. All rights reserved.
//
// Use of this software is subject to the terms of the Autodesk
// license agreement provided at the time of installation or download,
// or which otherwise accompanies this software in either electronic
// or hard copy form.
// ==========================================================================
//+

#include <stdio.h>

#include <OpenGLViewportRenderer.h>

#include <maya/MGlobal.h>
#include <maya/MString.h>
#include <maya/MStringArray.h>
#include <maya/MFnPlugin.h>

#include <stdio.h>

//
// Plug-in functions
//

static OpenGLViewportRenderer *g_OpenGLRenderer = 0;
static OpenGLViewportRendererHUD *g_OpenGLRendererHUD = 0;
static OpenGLViewportRendererFullUI *g_OpenGLRendererFullUI = 0;

MStatus initializePlugin( MObject obj )
{
    MStatus   status = MStatus::kFailure;

    MFnPlugin plugin( obj, PLUGIN_COMPANY, "1.0", "Any");

    // Register the renderer
    //
    g_OpenGLRenderer = new OpenGLViewportRenderer();
    if (g_OpenGLRenderer)
    {
        status = g_OpenGLRenderer->registerRenderer();
        if (status != MStatus::kSuccess)
        {
            status.perror("Failed to register OpenGL renderer properly.");
        }
    }
    g_OpenGLRendererHUD = new OpenGLViewportRendererHUD();
    if (g_OpenGLRendererHUD)
    {
        status = g_OpenGLRendererHUD->registerRenderer();
        if (status != MStatus::kSuccess)
        {
            status.perror("Failed to register OpenGL renderer properly.");
        }
    }
    g_OpenGLRendererFullUI = new OpenGLViewportRendererFullUI();
    if (g_OpenGLRendererFullUI)
    {
        status = g_OpenGLRendererFullUI->registerRenderer();
        if (status != MStatus::kSuccess)
        {
            status.perror("Failed to register OpenGL renderer properly.");
        }
    }
    return status;
}

MStatus uninitializePlugin( MObject obj )
{
    MStatus   status = MStatus::kSuccess;

    // Deregister the renderer
    //
    if (g_OpenGLRenderer)
    {
        status = g_OpenGLRenderer->deregisterRenderer();
        if (status != MStatus::kSuccess)
        {
            status.perror("Failed to deregister OpenGL renderer properly.");
        }
    }
    g_OpenGLRenderer = 0;
    if (g_OpenGLRendererHUD)
    {
        status = g_OpenGLRendererHUD->deregisterRenderer();
        if (status != MStatus::kSuccess)
        {
            status.perror("Failed to deregister OpenGL renderer properly.");
        }
    }
    g_OpenGLRendererHUD = 0;
    if (g_OpenGLRendererFullUI)
    {
        status = g_OpenGLRendererFullUI->deregisterRenderer();
        if (status != MStatus::kSuccess)
        {
            status.perror("Failed to deregister OpenGL renderer properly.");
        }
    }
    g_OpenGLRendererFullUI = 0;
    return status;
}