1 // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
2 // Copyright (C) 2010 Winch Gate Property Limited
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU Affero General Public License as
6 // published by the Free Software Foundation, either version 3 of the
7 // License, or (at your option) any later version.
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU Affero General Public License for more details.
14 // You should have received a copy of the GNU Affero General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
19 #ifndef CL_PACS_CLIENT_H
20 #define CL_PACS_CLIENT_H
27 #include "nel/misc/types_nl.h"
30 #include "ig_client.h"
34 // Size max of an entity in PACS (Trees and creatures)
35 #define RYZOM_ENTITY_SIZE_MAX 16
37 class CIGCallback
; // collision with igs of the landscapes (trees..)
42 using NL3D::UInstanceGroup
;
43 using NLPACS::UMoveContainer
;
44 using NLPACS::UGlobalRetriever
;
45 using NLPACS::UGlobalPosition
;
50 // Global Move Container.
51 extern UMoveContainer
*PACS
;
52 extern CIGCallback
*IGCallbacks
;
53 extern UGlobalRetriever
*GR
;
54 extern const float LRRefeshRadius
;
56 extern const uint8 staticWI
; // Static World Image
57 extern const uint8 dynamicWI
; // Dynamic World Image
59 extern const NLPACS::UMovePrimitive::TCollisionMask MaskColNone
;
60 extern const NLPACS::UMovePrimitive::TCollisionMask MaskColPlayer
;
61 extern const NLPACS::UMovePrimitive::TCollisionMask MaskColNpc
;
62 extern const NLPACS::UMovePrimitive::TCollisionMask MaskColDoor
;
63 extern const NLPACS::UMovePrimitive::TCollisionMask MaskColAll
;
65 extern const uint16 UserDataTree
;
66 extern const uint16 UserDataLift
;
67 extern const uint16 UserDataDoor
;
68 extern const uint16 UserDataEntity
;
74 void initPACS (const char* rbank
, const char* gr
, NLMISC::IProgressCallback
&progress
);
77 /** Initialize landscape IG collisions
79 void initLandscapeIGCallbacks();
80 /** release landscape IG collisions.
82 void releaseLandscapeIGCallbacks();
86 /// Get the cluster from a global position.
87 UInstanceGroup
*getCluster(const UGlobalPosition
&gp
);
89 /// PACS primitive manager
90 void initPrimitiveBlocks();
91 void addPacsPrim(const std::string
&filename
);
92 void deletePrimitiveBlocks();
94 /// The pacs primitives
95 typedef CHashMap
<std::string
, NLPACS::UPrimitiveBlock
*> TPacsPrimMap
;
96 extern TPacsPrimMap PacsPrims
;
98 #endif // CL_PACS_CLIENT_H
100 /* End of pacs_client.h */