// =========================================================================== // Copyright 2018 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. // =========================================================================== // // // Creation Date: Dec 2014 // // Description: Add and remove callbacks triggered before or after rendering a frame. // // // // // // // addFrameRenderCallback (string $beforeOrAfter, string $commandString) // // // This proc registers a user-defined command string which will be triggered before or after rendering a frame. // // // string $beforeOrAfter A string, either "before" or "after", to specify the callback type. // string $commandString The callback function to be triggered before or after rendering a frame. // // // // // addFrameRenderCallback("after", "clearUpMyRendererResource()"); // removeFrameRenderCallback("after", "clearUpMyRendererResource()"); // // // global string $gBeforeFrameRenderCallbacks[]; global string $gAfterFrameRenderCallbacks[]; global proc addFrameRenderCallback(string $beforeOrAfter, string $commandString) { global string $gBeforeFrameRenderCallbacks[]; global string $gAfterFrameRenderCallbacks[]; if ($beforeOrAfter=="before") { $gBeforeFrameRenderCallbacks[size($gBeforeFrameRenderCallbacks)] = $commandString; } else { $gAfterFrameRenderCallbacks[size($gAfterFrameRenderCallbacks)] = $commandString; } } global proc removeFrameRenderCallback(string $beforeOrAfter, string $commandString) { global string $gBeforeFrameRenderCallbacks[]; global string $gAfterFrameRenderCallbacks[]; if ($beforeOrAfter=="before") { int $index = stringArrayFind($commandString, 0, $gBeforeFrameRenderCallbacks); if (-1 != $index) { stringArrayRemoveAtIndex($index, $gBeforeFrameRenderCallbacks); } } else { int $index = stringArrayFind($commandString, 0, $gAfterFrameRenderCallbacks); if (-1 != $index) { stringArrayRemoveAtIndex($index, $gAfterFrameRenderCallbacks); } } }