# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

NL3D::IShape Class Reference

The basic interface for shapes. More...

#include <shape.h>

Inheritance diagram for NL3D::IShape

Inheritance graph
[legend]
Collaboration diagram for NL3D::IShape:

Collaboration graph
[legend]
List of all members.

Public Methods

 IShape ()
 Constructor. More...

virtual ~IShape ()
 Dtor. More...

virtual CTransformShapecreateInstance (CScene &scene)
 create an instance of this shape. More...

virtual bool clip (const std::vector<CPlane> &pyramid)
 clip this shape with a pyramid. More...

virtual void render (IDriver *drv, CTransformShape *trans) = 0
 render() this shape in a driver, with the specified TransformShape information. More...


Detailed Description

The basic interface for shapes.

A shape is a kind of instanciable mesh. For simplicity, render() and clip() virtual method are provided, so majority of shape could be implemented by just define those methods, and let createInstance() as default. But other complex shapes may be defined, by implement a compatible model which will comunicate with them.

Serialisation of a shape MUST be done with ISTREAM::serialPolyPtr.

DERIVER RULES:

  • simple: just implement clip() and render(). The shape will be movable via CTransform.
  • complex: if special interaction is needed between the instance and the shape:
    • implement a special Model, derived from CTransformShape, adding your instance behavior.
    • implement YourShape::createInstance(), so it create this good model.
    • implement your own communication system between the model and the shape.
Author(s):
Lionel Berenguier , Nevrax France
Date:
2000

Definition at line 66 of file shape.h.


Constructor & Destructor Documentation

NL3D::IShape::IShape ( ) [inline]
 

Constructor.

Definition at line 71 of file shape.h.

NL3D::IShape::~IShape ( ) [inline, virtual]
 

Dtor.

Definition at line 73 of file shape.h.


Member Function Documentation

bool NL3D::IShape::clip ( const std::vector< CPlane >& pyramid ) [inline, virtual]
 

clip this shape with a pyramid.

the pyramid is given in object space so the shape do not need to know the matrix of the object.

Parameters:
pyramid   the clipping polytope, planes MUST be normalized.
Returns:
true if the object is visible, false otherwise. The default behavior is to return true (never clipped).

Reimplemented in NL3D::CMesh, NL3D::CParticleSystemShape, and NL3D::CSkeletonShape.

Definition at line 87 of file shape.h.

CTransformShape * NL3D::IShape::createInstance ( CScene & scene ) [virtual]
 

create an instance of this shape.

The instance may be a CTransformShape, or a specialized version of it. The default behavior is to createModel() a CTransformShape, and just assign to it the Shape.

Parameters:
scene   the scene used to createModel().
Returns:
the specialized instance for this shape.

Reimplemented in NL3D::CMesh, NL3D::CParticleSystemShape, and NL3D::CSkeletonShape.

Definition at line 44 of file shape.cpp.

void NL3D::IShape::render ( IDriver * drv,
CTransformShape * trans ) [pure virtual]
 

render() this shape in a driver, with the specified TransformShape information.

CTransfromShape call this method in the render traversal.

Reimplemented in NL3D::CMesh, NL3D::CParticleSystemShape, and NL3D::CSkeletonShape.


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