Richard Boegli's CnC_Generals_Zero_Hour Fork WIP
This is documentation of Richard Boegil's Zero Hour Fork
 
Loading...
Searching...
No Matches
collect.h
Go to the documentation of this file.
1/*
2** Command & Conquer Generals Zero Hour(tm)
3** Copyright 2025 Electronic Arts Inc.
4**
5** This program is free software: you can redistribute it and/or modify
6** it under the terms of the GNU General Public License as published by
7** the Free Software Foundation, either version 3 of the License, or
8** (at your option) any later version.
9**
10** This program is distributed in the hope that it will be useful,
11** but WITHOUT ANY WARRANTY; without even the implied warranty of
12** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13** GNU General Public License for more details.
14**
15** You should have received a copy of the GNU General Public License
16** along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19/***********************************************************************************************
20 *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
21 ***********************************************************************************************
22 * *
23 * Project Name : WW3D *
24 * *
25 * $Archive:: /Commando/Code/ww3d2/collect.h $*
26 * *
27 * Author:: Greg Hjelstrom *
28 * *
29 * $Modtime:: 1/08/01 10:04a $*
30 * *
31 * $Revision:: 1 $*
32 * *
33 *---------------------------------------------------------------------------------------------*
34 * Functions: *
35 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36
37#if defined(_MSC_VER)
38#pragma once
39#endif
40
41#ifndef COLLECT_H
42#define COLLECT_H
43
44#include "rendobj.h"
45#include "composite.h"
46#include "vector.h"
47#include "proto.h"
48#include "w3d_file.h"
49#include "wwstring.h"
50#include "proxy.h"
51
53class SnapPointsClass;
54
55
56/*
57** CollectionClass
58** This is a render object which contains a collection of render objects.
59*/
61{
62public:
63
64 CollectionClass(void);
68 virtual ~CollectionClass(void);
69 virtual RenderObjClass * Clone(void) const;
70
71 virtual int Class_ID(void) const;
72 virtual int Get_Num_Polys(void) const;
73
75 // Proxy interface
77 virtual int Get_Proxy_Count (void) const;
78 virtual bool Get_Proxy (int index, ProxyClass &proxy) const;
79
81 // Render Object Interface - Rendering
83 virtual void Render(RenderInfoClass & rinfo);
84 virtual void Special_Render(SpecialRenderInfoClass & rinfo);
85
87 // Render Object Interface - "Scene Graph"
89 virtual void Set_Transform(const Matrix3D &m);
90 virtual void Set_Position(const Vector3 &v);
91 virtual int Get_Num_Sub_Objects(void) const;
92 virtual RenderObjClass * Get_Sub_Object(int index) const;
93 virtual int Add_Sub_Object(RenderObjClass * subobj);
94 virtual int Remove_Sub_Object(RenderObjClass * robj);
95
97 // Render Object Interface - Collision Detection, Ray Tracing
99 virtual bool Cast_Ray(RayCollisionTestClass & raytest);
100 virtual bool Cast_AABox(AABoxCollisionTestClass & boxtest);
101 virtual bool Cast_OBBox(OBBoxCollisionTestClass & boxtest);
102 virtual bool Intersect_AABox(AABoxIntersectionTestClass & boxtest);
103 virtual bool Intersect_OBBox(OBBoxIntersectionTestClass & boxtest);
104
106 // Render Object Interface - Bounding Volumes
108 virtual void Get_Obj_Space_Bounding_Sphere(SphereClass & sphere) const;
109 virtual void Get_Obj_Space_Bounding_Box(AABoxClass & box) const;
110
111
113 // Render Object Interface - Attributes, Options, Properties, etc
115 virtual int Snap_Point_Count(void);
116 virtual void Get_Snap_Point(int index,Vector3 * set);
117 virtual void Scale(float scale);
118 virtual void Scale(float scalex, float scaley, float scalez);
119 virtual void Update_Obj_Space_Bounding_Volumes(void);
120
121protected:
122
123 void Free(void);
125
126 DynamicVectorClass <ProxyClass> ProxyList;
127 DynamicVectorClass <RenderObjClass *> SubObjects;
129
132};
133
134
135/*
136** CollectionLoaderClass
137** Loader for collection objects
138*/
140{
141public:
142
143 virtual int Chunk_Type(void) { return W3D_CHUNK_COLLECTION; }
144 virtual PrototypeClass * Load_W3D(ChunkLoadClass & cload);
145};
146
148
149#endif
Color scale(const Color &a, const Color &b)
Definition GameMtl.cpp:722
@ W3D_CHUNK_COLLECTION
Definition w3d_file.h:430
virtual int Class_ID(void) const
Definition collect.cpp:332
virtual void Special_Render(SpecialRenderInfoClass &rinfo)
Definition collect.cpp:400
void Update_Sub_Object_Transforms(void)
Definition collect.cpp:860
virtual bool Intersect_OBBox(OBBoxIntersectionTestClass &boxtest)
Definition collect.cpp:663
virtual int Add_Sub_Object(RenderObjClass *subobj)
Definition collect.cpp:504
virtual void Render(RenderInfoClass &rinfo)
Definition collect.cpp:372
virtual void Get_Obj_Space_Bounding_Sphere(SphereClass &sphere) const
Definition collect.cpp:684
virtual bool Intersect_AABox(AABoxIntersectionTestClass &boxtest)
Definition collect.cpp:641
CollectionClass(void)
Definition collect.cpp:150
virtual bool Cast_Ray(RayCollisionTestClass &raytest)
Definition collect.cpp:575
void Free(void)
Definition collect.cpp:306
virtual void Set_Position(const Vector3 &v)
Definition collect.cpp:446
AABoxClass BoundBox
Definition collect.h:131
SnapPointsClass * SnapPoints
Definition collect.h:128
virtual void Set_Transform(const Matrix3D &m)
Definition collect.cpp:427
virtual int Get_Num_Polys(void) const
Definition collect.cpp:350
DynamicVectorClass< ProxyClass > ProxyList
Definition collect.h:126
virtual int Remove_Sub_Object(RenderObjClass *robj)
Definition collect.cpp:532
CollectionClass & operator=(const CollectionClass &)
Definition collect.cpp:232
virtual bool Cast_AABox(AABoxCollisionTestClass &boxtest)
Definition collect.cpp:597
virtual void Update_Obj_Space_Bounding_Volumes(void)
Definition collect.cpp:808
virtual bool Get_Proxy(int index, ProxyClass &proxy) const
Definition collect.cpp:883
virtual bool Cast_OBBox(OBBoxCollisionTestClass &boxtest)
Definition collect.cpp:619
DynamicVectorClass< RenderObjClass * > SubObjects
Definition collect.h:127
virtual void Scale(float scale)
Definition collect.cpp:768
virtual RenderObjClass * Get_Sub_Object(int index) const
Definition collect.cpp:483
virtual RenderObjClass * Clone(void) const
Definition collect.cpp:288
virtual int Get_Proxy_Count(void) const
Definition collect.cpp:912
virtual int Snap_Point_Count(void)
Definition collect.cpp:720
virtual int Get_Num_Sub_Objects(void) const
Definition collect.cpp:465
SphereClass BoundSphere
Definition collect.h:130
virtual void Get_Snap_Point(int index, Vector3 *set)
Definition collect.cpp:745
virtual ~CollectionClass(void)
Definition collect.cpp:270
virtual void Get_Obj_Space_Bounding_Box(AABoxClass &box) const
Definition collect.cpp:702
virtual int Chunk_Type(void)
Definition collect.h:143
virtual PrototypeClass * Load_W3D(ChunkLoadClass &cload)
Definition collect.cpp:1085
PrototypeLoaderClass(void)
Definition proto.h:139
RenderObjClass(void)
Definition rendobj.cpp:170
CollectionLoaderClass _CollectionLoader
Definition collect.cpp:85