Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Code Block
languagecpp
titleCube creator
firstline1
linenumberstrue
#include <math.h>
#include "extensionmanager.h"
#include "geometryextension.h"
#include "maxwell.h"
class CubeExampleExtension : public CgeometryLoaderExtension
{
 DECLARE_EXTENSION_METHODS( "CubeExample", CubeExampleExtension, 1 )
public:
 double cubeSize;
 
 CubeExampleExtension()
 {
 getExtensionData()->createDouble( "Cube size", 1.0, 0, 1000 );//Create parameter with Default value
 }
 
 ~CubeExampleExtension() 
 {
 }
 bool initialize()
 {
 getExtensionData()->getDouble( "Cube size", cubeSize );//Get the parameter value and store it before using it
 return true;
 }
 
 bool loadMesh( Cmaxwell::Cobject &cube )
 {
 cube.initializeMesh( 8, 6, 12, 1 );
 Cpoint point;
 point.assign( 0.0, 0.0, 0.0 );
 cube.setVertex ( 0, 0, point );
 point.assign( 0.0, 0.0, cubeSize );
 cube.setVertex ( 1, 0, point );
 point.assign( cubeSize, 0.0, cubeSize );
 cube.setVertex ( 2, 0, point );
 point.assign( cubeSize, 0.0, 0.0 );
 cube.setVertex ( 3, 0, point );
 point.assign( 0.0, cubeSize, 0.0 );
 cube.setVertex ( 4, 0, point );
 point.assign( 0.0, cubeSize, cubeSize );
 cube.setVertex ( 5, 0, point );
 point.assign( cubeSize, cubeSize, cubeSize );
 cube.setVertex ( 6, 0, point );
 point.assign( cubeSize, cubeSize, 0.0 );
 cube.setVertex ( 7, 0, point );
 Cvector normal;
 normal.assign( 1.0, 0.0, 0.0 );
 cube.setNormal( 0, 0, normal );
 normal.assign( -1.0, 0.0, 0.0 );
 cube.setNormal( 1, 0, normal );
 normal.assign( 0.0, 1.0, 0.0 );
 cube.setNormal( 2, 0, normal );
 normal.assign( 0.0, -1.0, 0.0 );
 cube.setNormal( 3, 0, normal );
 normal.assign( 0.0, 0.0, 1.0 );
 cube.setNormal( 4, 0, normal );
 normal.assign( 0.0, 0.0, -1.0 );
 cube.setNormal( 5, 0, normal );
 cube.setTriangle ( 0, 0, 2, 1, 3, 3, 3 );
 cube.setTriangle ( 1, 0, 3, 2, 3, 3, 3 );
 cube.setTriangle ( 2, 4, 5, 6, 2, 2, 2 );
 cube.setTriangle ( 3, 4, 6, 7, 2, 2, 2 );
 cube.setTriangle ( 4, 2, 3, 7, 0, 0, 0 );
 cube.setTriangle ( 5, 2, 7, 6, 0, 0, 0 );
 cube.setTriangle ( 6, 0, 1, 5, 1, 1, 1 );
 cube.setTriangle ( 7, 0, 5, 4, 1, 1, 1 );
 cube.setTriangle ( 8, 1, 2, 6, 4, 4, 4 );
 cube.setTriangle ( 9, 1, 6, 5, 4, 4, 4 );
 cube.setTriangle ( 10, 0, 4, 7, 5, 5, 5 );
 cube.setTriangle ( 11, 0, 7, 3, 5, 5, 5 );
 
 dword cchanIdx = 0;
 dword daChan;
 cube.addChannelUVW( daChan, cchanIdx );
 Cbase projBase;
 projBase.origin.assign( 0.5, 0.5, 0.5 );
 projBase.xAxis.assign( 1.0, 0.0, 0.0 );
 projBase.yAxis.assign( 0.0, 1.0, 0.0 );
 projBase.zAxis.assign( 0.0, 0.0, 1.0 );
 Cvector scale; scale.assign( 0.5, 0.5, 1.0 );
 byte sux = cube.generateCubicUVW( cchanIdx, projBase );
 return true;
 }
 
 bool getBoundingBox( Cvector &bmin, Cvector& bmax)
 { 
 bmin.assign( -cubeSize, -cubeSize, -cubeSize );
 bmax.assign( cubeSize, cubeSize, cubeSize );
 return true;
 }
};
EXPORT_GEOMETRY_LOADER_EXTENSION( CubeExampleExtension )

blablabla