os/graphics/m3g/m3gcore11/inc/m3g_group.h
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
/*
sl@0
     2
* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     3
* All rights reserved.
sl@0
     4
* This component and the accompanying materials are made available
sl@0
     5
* under the terms of the License "Eclipse Public License v1.0"
sl@0
     6
* which accompanies this distribution, and is available
sl@0
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     8
*
sl@0
     9
* Initial Contributors:
sl@0
    10
* Nokia Corporation - initial contribution.
sl@0
    11
*
sl@0
    12
* Contributors:
sl@0
    13
*
sl@0
    14
* Description: Group interface
sl@0
    15
*
sl@0
    16
*/
sl@0
    17
sl@0
    18
#ifndef __M3G_GROUP_H__
sl@0
    19
#define __M3G_GROUP_H__
sl@0
    20
sl@0
    21
/*!
sl@0
    22
 * \internal
sl@0
    23
 * \file
sl@0
    24
 * \brief Group interface
sl@0
    25
 */
sl@0
    26
sl@0
    27
#include "m3g_gl.h"
sl@0
    28
#include "m3g_node.h"
sl@0
    29
sl@0
    30
typedef M3Gushort GroupDescendantCount;
sl@0
    31
sl@0
    32
struct M3GGroupImpl
sl@0
    33
{
sl@0
    34
	Node node;
sl@0
    35
sl@0
    36
	Node *firstChild;
sl@0
    37
    
sl@0
    38
    AABB *bbox;
sl@0
    39
    GroupDescendantCount numRenderables, numNonCullables;
sl@0
    40
};
sl@0
    41
sl@0
    42
/*----------------------------------------------------------------------
sl@0
    43
 * Virtual functions
sl@0
    44
 *--------------------------------------------------------------------*/
sl@0
    45
 
sl@0
    46
static void m3gDestroyGroup(Object *obj);
sl@0
    47
static M3Gbool m3gGroupAlign(Node *self, const Node *refNode);
sl@0
    48
static M3Gbool m3gGroupSetupRender(Node *self,
sl@0
    49
                                   const Node *caller,
sl@0
    50
                                   SetupRenderState *s,
sl@0
    51
                                   RenderQueue *renderQueue);
sl@0
    52
static M3Gint m3gGroupApplyAnimation(Object *self, M3Gint time);
sl@0
    53
static M3Gbool m3gGroupRayIntersect(	Node *self,
sl@0
    54
								M3Gint mask,
sl@0
    55
								M3Gfloat *ray,
sl@0
    56
								RayIntersection *ri,
sl@0
    57
								Matrix *toGroup);
sl@0
    58
static M3Gint m3gGroupDoGetReferences(Object *self, Object **references);
sl@0
    59
static M3Gint m3gGroupGetBBox(Node *self, AABB *bbox);
sl@0
    60
static Object *m3gGroupFindID(Object *self, M3Gint userID);
sl@0
    61
static M3Gbool m3gGroupDuplicate(const Object *original, Object **clone, Object **pairs, M3Gint *numPairs);
sl@0
    62
static M3Gbool m3gGroupValidate(Node *self, M3Gbitmask stateBits, M3Gint scope);
sl@0
    63
static void m3gGroupUpdateDuplicateReferences(Node *self, Object **pairs, M3Gint numPairs);
sl@0
    64
sl@0
    65
/*----------------------------------------------------------------------
sl@0
    66
 * Internal functions
sl@0
    67
 *--------------------------------------------------------------------*/
sl@0
    68
sl@0
    69
static void m3gInitGroup(Interface *m3g,
sl@0
    70
                         Group *group,
sl@0
    71
                         M3GClass classID);
sl@0
    72
sl@0
    73
#endif /*__M3G_GROUP_H__*/