PxCollection Class Reference
[Common]

Collection class for serialization. More...

#include <PxCollection.h>

List of all members.

Public Member Functions

virtual void add (PxBase &object, PxSerialObjectId id=PX_SERIAL_OBJECT_ID_INVALID)=0
 Adds a PxBase object to the collection.
virtual void remove (PxBase &object)=0
 Removes a PxBase member object from the collection.
virtual bool contains (PxBase &object) const =0
 Returns whether the collection contains a certain PxBase object.
virtual void addId (PxBase &object, PxSerialObjectId id)=0
 Adds an id to a member PxBase object.
virtual void removeId (PxSerialObjectId id)=0
 Removes id from a contained PxBase object.
virtual void add (PxCollection &collection)=0
 Adds all PxBase objects and their ids of collection to this collection.
virtual void remove (PxCollection &collection)=0
 Removes all PxBase objects of collection from this collection.
virtual PxU32 getNbObjects () const =0
 Gets number of PxBase objects in this collection.
virtual PxBasegetObject (PxU32 index) const =0
 Gets the PxBase object of this collection given its index.
virtual PxU32 getObjects (PxBase **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const =0
 Copies member PxBase pointers to a user specified buffer.
virtual PxBasefind (PxSerialObjectId id) const =0
 Looks for a PxBase object given a PxSerialObjectId value.
virtual PxU32 getNbIds () const =0
 Gets number of PxSerialObjectId names in this collection.
virtual PxU32 getIds (PxSerialObjectId *userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const =0
 Copies member PxSerialObjectId values to a user specified buffer.
virtual PxSerialObjectId getId (const PxBase &object) const =0
 Gets the PxSerialObjectId name of a PxBase object within the collection.
virtual void release ()=0
 Deletes a collection object.

Protected Member Functions

 PxCollection ()
virtual ~PxCollection ()


Detailed Description

Collection class for serialization.

A collection is a set of PxBase objects. PxBase objects can be added to the collection regardless of other objects they depend on. Objects may be named using PxSerialObjectId values in order to resolve dependencies between objects of different collections.

Serialization and deserialization only work through collections.

A scene is typically serialized using the following steps:

  1. create a serialization registry
  2. create a collection for scene objects
  3. complete the scene objects (adds all dependent objects, e.g. meshes)
  4. serialize collection
  5. release collection
  6. release serialization registry

For example the code may look like this:

    PxPhysics* physics; // The physics
    PxScene* scene;     // The physics scene
    SerialStream s;     // The user-defined stream doing the actual write to disk
    
    PxSerializationRegistry* registry = PxSerialization::createSerializationRegistry(*physics); // step 1)
    PxCollection* collection = PxSerialization::createCollection(*scene);                       // step 2)
    PxSerialization::complete(*collection, *registry);                                          // step 3)
    PxSerialization::serializeCollectionToBinary(s, *collection, *registry);                    // step 4)
    collection->release();                                                                      // step 5)
    registry->release();                                                                        // step 6)

A scene is typically deserialized using the following steps:

  1. load a serialized collection into memory
  2. create a serialization registry
  3. create a collection by passing the serialized memory block
  4. add collected objects to scene
  5. release collection
  6. release serialization registry

For example the code may look like this:

    PxPhysics* physics; // The physics
    PxScene* scene;     // The physics scene
    void* memory128;    // a 128-byte aligned buffer previously loaded from disk by the user    - step 1)
    
    PxSerializationRegistry* registry = PxSerialization::createSerializationRegistry(*physics);     // step 2)
    PxCollection* collection = PxSerialization::createCollectionFromBinary(memory128, *registry);   // step 3)
    scene->addCollection(*collection);                                                              // step 4)
    collection->release();                                                                          // step 5)
    registry->release();                                                                            // step 6)

See also:
PxBase, PxCreateCollection()

Constructor & Destructor Documentation

PxCollection::PxCollection (  )  [inline, protected]

virtual PxCollection::~PxCollection (  )  [inline, protected, virtual]


Member Function Documentation

virtual void PxCollection::add ( PxCollection collection  )  [pure virtual]

Adds all PxBase objects and their ids of collection to this collection.

PxBase objects already in this collection are ignored. Object ids need to be conflict free, i.e. the same object may not have two different ids within the two collections.

Parameters:
[in] collection Collection to be added

virtual void PxCollection::add ( PxBase object,
PxSerialObjectId  id = PX_SERIAL_OBJECT_ID_INVALID 
) [pure virtual]

Adds a PxBase object to the collection.

Adds a PxBase object to the collection. Optionally a PxSerialObjectId can be provided in order to resolve dependencies between collections. A PxSerialObjectId value of PX_SERIAL_OBJECT_ID_INVALID means the object remains without id. Objects can be added regardless of other objects they require. If the object is already in the collection, the ID will be set if it was PX_SERIAL_OBJECT_ID_INVALID previously, otherwise the operation fails.

Parameters:
[in] object Object to be added to the collection
[in] id Optional PxSerialObjectId id

virtual void PxCollection::addId ( PxBase object,
PxSerialObjectId  id 
) [pure virtual]

Adds an id to a member PxBase object.

If the object is already associated with an id within the collection, the id is replaced. May only be called for objects that are members of the collection. The id needs to be unique within the collection.

Parameters:
[in] object Member PxBase object
[in] id PxSerialObjectId id to be given to the object

virtual bool PxCollection::contains ( PxBase object  )  const [pure virtual]

Returns whether the collection contains a certain PxBase object.

Parameters:
[in] object PxBase object
Returns:
Whether object is contained.

virtual PxBase* PxCollection::find ( PxSerialObjectId  id  )  const [pure virtual]

Looks for a PxBase object given a PxSerialObjectId value.

If there is no PxBase object in the collection with the given id, NULL is returned.

Parameters:
[in] id PxSerialObjectId value to look for
Returns:
PxBase object with the given id value or NULL

virtual PxSerialObjectId PxCollection::getId ( const PxBase object  )  const [pure virtual]

Gets the PxSerialObjectId name of a PxBase object within the collection.

The PxBase object needs to be a member of the collection.

Parameters:
[in] object PxBase object to get id for
Returns:
PxSerialObjectId name of the object or PX_SERIAL_OBJECT_ID_INVALID if the object is unnamed

virtual PxU32 PxCollection::getIds ( PxSerialObjectId userBuffer,
PxU32  bufferSize,
PxU32  startIndex = 0 
) const [pure virtual]

Copies member PxSerialObjectId values to a user specified buffer.

Parameters:
[out] userBuffer Array of PxSerialObjectId values
[in] bufferSize Capacity of userBuffer
[in] startIndex Offset into list of member PxSerialObjectId values
Returns:
number of members PxSerialObjectId values that have been written to the userBuffer

virtual PxU32 PxCollection::getNbIds (  )  const [pure virtual]

Gets number of PxSerialObjectId names in this collection.

Returns:
Number of PxSerialObjectId names in this collection

virtual PxU32 PxCollection::getNbObjects (  )  const [pure virtual]

Gets number of PxBase objects in this collection.

Returns:
Number of objects in this collection

virtual PxBase& PxCollection::getObject ( PxU32  index  )  const [pure virtual]

Gets the PxBase object of this collection given its index.

Parameters:
[in] index PxBase index in [0, getNbObjects())
Returns:
PxBase object at index index

virtual PxU32 PxCollection::getObjects ( PxBase **  userBuffer,
PxU32  bufferSize,
PxU32  startIndex = 0 
) const [pure virtual]

Copies member PxBase pointers to a user specified buffer.

Parameters:
[out] userBuffer Array of PxBase pointers
[in] bufferSize Capacity of userBuffer
[in] startIndex Offset into list of member PxBase objects
Returns:
number of members PxBase objects that have been written to the userBuffer

virtual void PxCollection::release (  )  [pure virtual]

Deletes a collection object.

This function only deletes the collection object, i.e. the container class. It doesn't delete objects that are part of the collection.

See also:
PxCreateCollection()

virtual void PxCollection::remove ( PxCollection collection  )  [pure virtual]

Removes all PxBase objects of collection from this collection.

PxBase objects not present in this collection are ignored. Ids of objects which are removed are also removed.

Parameters:
[in] collection Collection to be removed

virtual void PxCollection::remove ( PxBase object  )  [pure virtual]

Removes a PxBase member object from the collection.

Object needs to be contained by the collection.

Parameters:
[in] object PxBase object to be removed

virtual void PxCollection::removeId ( PxSerialObjectId  id  )  [pure virtual]

Removes id from a contained PxBase object.

May only be called for ids that are associated with an object in the collection.

Parameters:
[in] id PxSerialObjectId value


The documentation for this class was generated from the following file:


Copyright © 2008-2017 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. www.nvidia.com