# IRfSceneHelper Interface Reference

Inherits IUnknown.

List of all members.

## Public Member Functions
HRESULT | GetCurrentScene ([out, retval] IRnSpace3D **ppCurrScene)
HRESULT | SetCurrentScene ([in] IRnSpace3D *pNewScene)
HRESULT | GetCurrentSceneName ([out, retval] BSTR *pbszCurrSceneName)
HRESULT | EnumScenes ([out, retval] IRsEnumNodes **ppEnum)
HRESULT | RenameCurrentScene ([in] BSTR bszNewSceneName)
HRESULT | ReplaceCurrScene ([in] IRnSpace3D *pNewSpace3D)
HRESULT | ClearCurrentScene (void)
HRESULT | SaveScene ([in] BSTR bstrFileName,[in] BSTR bstrAuthor,[in] BSTR bstrDescr,[in] IRdBitmap *pThumbnail,[in] IRsNode *pScene)
HRESULT | SaveSceneNode ([in] IRsFileHandle *pRsFileHandle,[in] IRsNode *pScene)
HRESULT | LoadScene ([in] BSTR bstrFileName)
HRESULT | LoadSceneNode ([in] IRsFileHandle *pRsFileHandle,[in] IRsNode **ppScene)

## Detailed Description

Scene helper object provides functionality for managing 3D scenes.

- 3D scene is represented by encapusaltor node located in /Project encapsulator and exposing IRnSpace3D interface.
- There is only one scene node that is referred to as the current scene.
- The scene defines topmost encapsulator for all user renderable content.

There are two scene related system messages sent to all registered packages:

- MSG_SYS_SCENE_NEW denotes that new scene is created.
- MSG_SYS_SCENE_LOADED informs other packages that new scene was loaded.

## Member Function Documentation

HRESULT IRfSceneHelper::GetCurrentScene | ( | [out, retval] IRnSpace3D ** | ppCurrScene | ) |

Return the current scene object.

Returns:
  ppCurrScene [out,retval] Returns IRnSpace3D interface to the current scene object.

  Standard HRESULT processing can be applied to the result.

HRESULT IRfSceneHelper::SetCurrentScene | ( | [in] IRnSpace3D * | pNewScene | ) |

Set new current scene.

Parameters:

  | pNewScene | [in] Pointer to the scene object that will be set as current scene.

Returns:
  Standard HRESULT processing can be applied to the result.

HRESULT IRfSceneHelper::GetCurrentSceneName | ( | [out, retval] BSTR * | pbszCurrSceneName | ) |

Get current scene's name.

Returns:
  pbszCurrSceneName [out,retval] Returns full name of the current scene.

  Standard HRESULT processing can be applied to the result.

HRESULT IRfSceneHelper::EnumScenes | ( | [out, retval] IRsEnumNodes ** | ppEnum | ) |

Return the scene enumerator.

Returns:
  ppEnum [out,retval] Interface to the enumerator

  Standard HRESULT processing can be applied to the result.

HRESULT IRfSceneHelper::RenameCurrentScene | ( | [in] BSTR | bszNewSceneName | ) |

Rename current scene.

Parameters:

  | bszNewSceneName | [in] New name for current scene.

Returns:
  Standard HRESULT processing can be applied to the result.

HRESULT IRfSceneHelper::ReplaceCurrScene | ( | [in] IRnSpace3D * | pNewSpace3D | ) |

Replace current scenes's content by the one from pNewSpace3D scene object.

- Method send all necessary messages and clear history stack.

Parameters:

  | pNewSpace3D | [in] The source object that content will be put into current scene object.

Returns:
  Standard HRESULT processing can be applied to the result.

HRESULT IRfSceneHelper::ClearCurrentScene | ( | void |  | ) |

Clears the current scene.

Returns:
  Standard HRESULT processing can be applied to the result.

HRESULT IRfSceneHelper::SaveScene | ( | [in] BSTR | bstrFileName,
|  | [in] BSTR | bstrAuthor,
|  | [in] BSTR | bstrDescr,
|  | [in] IRdBitmap * | pThumbnail,
|  | [in] IRsNode * | pScene |
| ) |  |  |

Save scene to specified file and send all necessary events.

Parameters:

  | bstrFileName | [in] Desired filename.
  | bstrAuthor | [in] Author of the file.
  | bstrDescr | [in] File description.
  | pThumbnail | [in] Thumbnail.
  | pScene | [in] Scene to save. If NULL, the current one will be used.

Returns:
  Standard HRESULT processing can be applied to the result.

HRESULT IRfSceneHelper::SaveSceneNode | ( | [in] IRsFileHandle * | pRsFileHandle,
|  | [in] IRsNode * | pScene |
| ) |  |  |

Save scene to specified file handle.

- Method creates Tags and RsObj chunks if they don't exist.
- If the chunks exists, then they are only adapted.

Parameters:

  | pRsFileHandle | [in] File handle to which the scene will be written.
  | pScene | [in] The scene object.

Returns:
  Standard HRESULT processing can be applied to the result.

HRESULT IRfSceneHelper::LoadScene | ( | [in] BSTR | bstrFileName | ) |

Load scene from specified file.

Parameters:

  | bstrFileName | [in] Scene's filename.

Returns:
  Standard HRESULT processing can be applied to the result.

HRESULT IRfSceneHelper::LoadSceneNode | ( | [in] IRsFileHandle * | pRsFileHandle,
|  | [in] IRsNode ** | ppScene |
| ) |  |  |

Load scene from specified file handle.

Parameters:

  | pRsFileHandle | [in] File handle from which the scene should be read.
  | ppScene | [in] The scene object if successfully loaded.

Returns:
  Standard HRESULT processing can be applied to the result.