summaryrefslogtreecommitdiffstats
path: root/rwsdk/include/d3d8/rplodatm.h
blob: d4583338af73f570747c30bec7f90efdd9bf5b36 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131

/******************************************
 *                                        *
 *    RenderWare(TM) Graphics Library     *
 *                                        *
 ******************************************/

/*
 * This file is a product of Criterion Software Ltd.
 *
 * This file is provided as is with no warranties of any kind and is
 * provided without any obligation on Criterion Software Ltd.
 * or Canon Inc. to assist in its use or modification.
 *
 * Criterion Software Ltd. and Canon Inc. will not, under any
 * circumstances, be liable for any lost revenue or other damages
 * arising from the use of this file.
 *
 * Copyright (c) 1998. Criterion Software Ltd.
 * All Rights Reserved.
 */

/***************************************************************************
 *                                                                         *
 * Module  : rplodatm.h                                                    *
 *                                                                         *
 * Purpose : LODATM Geometry                                               *
 *                                                                         *
 **************************************************************************/

#ifndef RPLODATM_H
#define RPLODATM_H


/**
 * \defgroup rplodatm RpLODAtomic
 * \ingroup rpplugin
 *
 * Level of Detail Management Plugin for RenderWare Graphics.
 */

/****************************************************************************
 Includes
 */

#include "rwcore.h"
#include "rpworld.h"

#include "rpcriter.h"          /* Note: each vendor can choose their own method for
                                * allocation of unique ID's. This file defines 
                                * the ID's used by Criterion.
                                */
#include "rplodatm.rpe"        /* automatically generated header file */

/****************************************************************************
 Defines
 */
#define RPLODATOMICMAXLOD 10


/****************************************************************************
 Type defs 
 */
typedef RwInt32 (*RpLODAtomicLODCallBack)( RpAtomic *atomic );

/****************************************************************************
 Function prototypes
 */

#ifdef    __cplusplus
extern              "C"
{
#endif                          /* __cplusplus */

    extern RwBool
        RpLODAtomicPluginAttach( void );

    extern RpAtomic *
        RpLODAtomicSetGeometry(
            RpAtomic *atomic, RwInt32 lodIdx, RpGeometry *geometry );

    extern RpGeometry *
        RpLODAtomicGetGeometry(
            RpAtomic *atomic, RwInt32 lodIdx );

    extern RpAtomic *
        RpLODAtomicSetCurrentLOD(
            RpAtomic *atomic, RwInt32 lodIdx );

    extern RwInt32
        RpLODAtomicGetCurrentLOD(
            RpAtomic *atomic );

    extern RpAtomic *
        RpLODAtomicSetRange(
            RpAtomic *atomic, RwReal farRange );

    extern RwReal
        RpLODAtomicGetRange(
            RpAtomic *atomic );

    extern void 
        RpLODAtomicSetCamera(
            RwCamera *camera );

    extern RpAtomic *
        RpLODAtomicSetLODCallBack(
            RpAtomic *atomic, RpLODAtomicLODCallBack callback );

    extern RpAtomic *
        RpLODAtomicSelectLOD(
            RpAtomic *atomic );

    extern RpAtomic *
        RpLODAtomicForAllLODGeometries(
            RpAtomic *atomic, RpGeometryCallBack callback, void *pData );

    extern RpAtomic * 
        RpLODAtomicHookRender(
            RpAtomic *atomic );

    extern RpAtomic * 
        RpLODAtomicUnHookRender(
            RpAtomic *atomic );

#ifdef    __cplusplus
}
#endif                          /* __cplusplus */

#endif                          /* RPLODATM_H */