/*
 * Copyright 1993 by Cub'x Systemes
 * 
 * All Rights Reserved
 *
 * Permission to use, copy, and distribute this software and its
 * documentation for the  purpose of making new intuitiv'3d modules.
 * This copyright notice must appears in all copies that you distribute.
 * The name of Cub'x Systeme should not be used in advertising or publicity
 * without specific, written prior permission. 
 * CUB'X SYSTEMES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
 * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
 * CUB'X SYSTEMES BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
 * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 * SOFTWARE.
 */

/*****************************************************************************
 *
 *  CustomObject module
 *  -------------------
 *
 * File: Co.m
 *
 * Contents: An i3dModule subclass 
 *     
 *
 *****************************************************************************/

#import "Co.h"
#import "TorusWave.h"
#import "TeapotTop.h"
#import "TeapotBody.h"
#import "DistortedCube.h"
#import <i3d/CX3DNode.h>


@implementation Co : I3dModule
{
}

/*
 *  Returns the requested section type
 */
+ (SectionType) requestedSectionType
{
  /*
   *  Return ST3DObject if you want to see your section in the object 
   *  library or STShader if you want to see your section in the shader 
   *  library
   */
  return ST3DObject;
}

/*
 *  Fill the list with default instance of class that you want to add
 *  Theses classes should inherit of CX3DObject or CX3DShader according to
 *  the requestedSectionType return value.
 */
+ fillObjectList:(List*) aList
{
  id teapot;

  [aList addObject: [[TorusWave    alloc] init]];
  [aList addObject: [[DistortedCube alloc] init]];
  [aList addObject: [[TeapotTop    alloc] init]];
  [aList addObject: [[TeapotBody   alloc] init]];

  /*
   *  Please notice how it is possible to add a node (object group)
   *  to the list.
   */
  teapot = [[[CX3DNode alloc] init] setTitle: "Teapot"];
  [teapot addObject: [[TeapotTop alloc] init]];
  [teapot addObject: [[TeapotBody alloc] init]];
  [teapot setIconByName: "Teapot"];
  [aList addObject: teapot];
  

  return self;
}

/*
 *  This method returns the module name
 */
+ (const char*) moduleName
{
  return "Custom object";
}

/*
 *  This method returns the name of the tiff used for the unselected image
 *  of the section (This tiff should be in your bundle)
 *  Please return NULL if you don't have any image.
 */
+ (const char*) unselectedImage
{
  return "CoOff";
}

/*
 *  This method returns the name of the tiff used for the selected image of
 *  the section (This tiff should be in your bundle)
 *  Please return NULL if you don't have any image.
 */
+ (const char*) selectedImage
{
  return "CoOn";
}

@end
