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; 
public:
 
	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 )
	{
//Create {the mesh
		cube.initializeMesh( 8, 6, 12, 1 );
//Add the vertices
		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 );
//Set some normals
		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 );
//Add triangles
		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 );

//Generate some uvs
		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 )

...