summaryrefslogtreecommitdiffstats
path: root/tools/worldbuilder/code/main/pluginMain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/worldbuilder/code/main/pluginMain.cpp')
-rw-r--r--tools/worldbuilder/code/main/pluginMain.cpp193
1 files changed, 193 insertions, 0 deletions
diff --git a/tools/worldbuilder/code/main/pluginMain.cpp b/tools/worldbuilder/code/main/pluginMain.cpp
new file mode 100644
index 0000000..220f8e6
--- /dev/null
+++ b/tools/worldbuilder/code/main/pluginMain.cpp
@@ -0,0 +1,193 @@
+//
+// Copyright (C) 2002 Radical Entertainment
+//
+// File: pluginMain.cpp
+//
+// Author: Maya SDK Wizard
+//
+
+#include <maya/MFnPlugin.h>
+
+//This is a warning provided by the STL... It seems that toollib gets whacky when there
+//is other templates made... Sigh...
+#pragma warning(disable:4786)
+
+#include "pluginmain.h"
+#include "worldbuilder.h"
+
+#include "utility/mayahandles.h"
+#include "utility/mext.h"
+
+#include "gameengine/gameengine.h"
+
+#include "../../../game/code/meta/locatorevents.h"
+
+//Nodes
+#include "nodes/eventlocatornode.h"
+#include "nodes/scriptlocatornode.h"
+#include "nodes/genericlocatornode.h"
+#include "nodes/carstartlocatornode.h"
+#include "nodes/splinelocatornode.h"
+#include "nodes/triggervolumenode.h"
+#include "nodes/zoneeventlocatornode.h"
+#include "nodes/occlusionlocatornode.h"
+#include "nodes/railcamlocatornode.h"
+#include "nodes/interiorentrancelocatornode.h"
+#include "nodes/directionallocatornode.h"
+#include "nodes/actioneventlocatornode.h"
+#include "nodes/fovlocatornode.h"
+#include "nodes/BreakableCameraLocatorNode.h"
+#include "nodes/staticcameralocatornode.h"
+#include "nodes/pedgrouplocator.h"
+
+
+//Contexts
+#include "contexts/LocatorContext.h"
+#include "contexts/TriggerContext.h"
+
+//Commands
+#include "commands/worldbuildercommands.h"
+#include "commands/export.h"
+
+#include <radtime.hpp>
+#include <radmemory.hpp>
+#include <radthread.hpp>
+
+WorldBuilder* gWB;
+
+MStatus initializePlugin( MObject obj )
+//
+// Description:
+// this method is called when the plug-in is loaded into Maya. It
+// registers all of the services that this plug-in provides with
+// Maya.
+//
+// Arguments:
+// obj - a handle to the plug-in object (use MFnPlugin to access it)
+//
+{
+ MStatus status;
+
+
+ MayaHandles::SetHInstance( (void*)(MhInstPlugin) );
+
+ MFnPlugin plugin( obj, "Radical Entertainment", "4.0.1", "Any", &status );
+ assert( status );
+
+ radTimeInitialize();
+ radMemoryInitialize();
+ radThreadInitialize();
+
+ // Add plug-in feature registration here
+ //
+
+ //This is a test due to changes in the SRR stuff.
+ bool test = LocatorEvent::TestEvents();
+ assert( test );
+
+
+ //Register Nodes
+ REGISTER_LOCATOR( plugin, ScriptLocatorNode );
+ REGISTER_LOCATOR( plugin, GenericLocatorNode );
+ REGISTER_LOCATOR( plugin, CarStartLocatorNode );
+ REGISTER_LOCATOR( plugin, SplineLocatorNode );
+ REGISTER_LOCATOR( plugin, TriggerVolumeNode );
+ REGISTER_LOCATOR( plugin, EventLocatorNode );
+ REGISTER_LOCATOR( plugin, ZoneEventLocatorNode );
+ REGISTER_LOCATOR( plugin, OcclusionLocatorNode );
+ REGISTER_LOCATOR( plugin, RailCamLocatorNode );
+ REGISTER_LOCATOR( plugin, InteriorEntranceLocatorNode );
+ REGISTER_LOCATOR( plugin, DirectionalLocatorNode );
+ REGISTER_LOCATOR( plugin, ActionEventLocatorNode );
+ REGISTER_LOCATOR( plugin, FOVLocatorNode );
+ REGISTER_LOCATOR( plugin, BreakableCameraLocatorNode );
+ REGISTER_LOCATOR( plugin, StaticCameraLocatorNode );
+ REGISTER_LOCATOR( plugin, PedGroupLocatorNode );
+
+ //Register Contexts
+ REGISTER_CONTEXT( plugin, LocatorContext );
+ REGISTER_CONTEXT( plugin, TriggerContext );
+
+ //Register Commands
+ REGISTER_COMMAND( plugin, WBChangeDisplayCommand );
+ REGISTER_COMMAND( plugin, WBSetLocatorTypeCmd );
+ REGISTER_COMMAND( plugin, WBSetPrefixCmd );
+ REGISTER_COMMAND( plugin, WBSnapLocatorCmd );
+ REGISTER_COMMAND( plugin, ExportCommand );
+ REGISTER_COMMAND( plugin, WBSplineCompleteCmd );
+ REGISTER_COMMAND( plugin, WBCoinSplineCompleteCmd );
+ REGISTER_COMMAND( plugin, WBSelectObjectCmd );
+
+ gWB = new WorldBuilder();
+
+ //Run any startup scripts.
+ MGlobal::sourceFile( MString( "wb_main.mel" ) );
+
+ GameEngine::CreateInstance();
+
+ return status;
+}
+
+MStatus uninitializePlugin( MObject obj )
+//
+// Description:
+// this method is called when the plug-in is unloaded from Maya. It
+// deregisters all of the services that it was providing.
+//
+// Arguments:
+// obj - a handle to the plug-in object (use MFnPlugin to access it)
+//
+{
+ MStatus status;
+ MFnPlugin plugin( obj );
+
+ // Add plug-in feature deregistration here
+ //
+
+ //Run any cleanup scripts.
+ MGlobal::sourceFile( MString( "wb_cleanup.mel" ) );
+
+ if ( gWB )
+ {
+ delete gWB;
+ }
+
+ //Deregister Commands
+ DEREGISTER_COMMAND( plugin, WBSelectObjectCmd );
+ DEREGISTER_COMMAND( plugin, WBSplineCompleteCmd );
+ DEREGISTER_COMMAND( plugin, WBCoinSplineCompleteCmd );
+ DEREGISTER_COMMAND( plugin, ExportCommand );
+ DEREGISTER_COMMAND( plugin, WBSnapLocatorCmd );
+ DEREGISTER_COMMAND( plugin, WBSetPrefixCmd );
+ DEREGISTER_COMMAND( plugin, WBChangeDisplayCommand );
+ DEREGISTER_COMMAND( plugin, WBSetLocatorTypeCmd );
+
+ //Deregister Contexts
+ DEREGISTER_CONTEXT( plugin, TriggerContext );
+ DEREGISTER_CONTEXT( plugin, LocatorContext );
+
+ //Deregister Nodes
+ DEREGISTER_NODE( plugin, SplineLocatorNode );
+ DEREGISTER_NODE( plugin, TriggerVolumeNode );
+ DEREGISTER_NODE( plugin, CarStartLocatorNode);
+ DEREGISTER_NODE( plugin, GenericLocatorNode );
+ DEREGISTER_NODE( plugin, ScriptLocatorNode );
+ DEREGISTER_NODE( plugin, EventLocatorNode );
+ DEREGISTER_NODE( plugin, ZoneEventLocatorNode );
+ DEREGISTER_NODE( plugin, OcclusionLocatorNode );
+ DEREGISTER_NODE( plugin, RailCamLocatorNode );
+ DEREGISTER_NODE( plugin, InteriorEntranceLocatorNode );
+ DEREGISTER_NODE( plugin, DirectionalLocatorNode );
+ DEREGISTER_NODE( plugin, ActionEventLocatorNode );
+ DEREGISTER_NODE( plugin, FOVLocatorNode );
+ DEREGISTER_NODE( plugin, BreakableCameraLocatorNode );
+ DEREGISTER_NODE( plugin, StaticCameraLocatorNode );
+ DEREGISTER_NODE( plugin, PedGroupLocatorNode );
+
+ GameEngine::DestroyInstance();
+
+ radTimeTerminate();
+
+ return status;
+}
+ \ No newline at end of file