12#ifndef TT_INCLUDE__PROJECTORMANAGERCLASS_H
13#define TT_INCLUDE__PROJECTORMANAGERCLASS_H
15class ProjectorManagerDefClass;
17class PhysTexProjectClass;
19#include "engine_string.h"
20class ProjectorManagerClass
23 ProjectorManagerClass(
void);
24 ~ProjectorManagerClass(
void);
27 IS_ANIMATED = 0x00000001,
29 void Init(
const ProjectorManagerDefClass & def,RenderObjClass * model);
30 void Update_From_Model(RenderObjClass * model);
31 void Set_Flag(
int flag,
bool onoff) {(onoff ? Flags |= flag : Flags &= ~flag);}
32 bool Get_Flag(
int flag) {
return ((Flags & flag) == flag);}
36 uint16 ProjectorBoneIndex;
37 TexProjectClass *Projector;
41class ProjectorManagerDefClass
44 ProjectorManagerDefClass(
void);
45 ~ProjectorManagerDefClass(
void);
46 void Validate_Parameters(
void);
47 bool Save(ChunkSaveClass &csave);
48 bool Load(ChunkLoadClass &cload);
61 StringClass TextureName;
64#define PROJECTORMANAGERDEF_EDITABLE_PARAMS( class_name , member_name ) \
65 PARAM_SEPARATOR( class_name, "Texture Projector Settings"); \
66 NAMED_EDITABLE_PARAM( class_name , ParameterClass::TYPE_BOOL, member_name ## .IsEnabled, "EnableProjector"); \
67 NAMED_EDITABLE_PARAM( class_name , ParameterClass::TYPE_BOOL, member_name ## .IsPerspective, "Perspective Projection" ); \
68 NAMED_EDITABLE_PARAM( class_name , ParameterClass::TYPE_BOOL, member_name ## .IsAdditive, "Projector Is Additive" ); \
69 NAMED_EDITABLE_PARAM( class_name , ParameterClass::TYPE_BOOL, member_name ## .IsAnimated, "Projector Is Animated" ); \
70 NAMED_FLOAT_UNITS_PARAM( class_name , member_name ## .OrthoWidth , 0.01f , 1000.0f, "meters","Ortho Width" ); \
71 NAMED_FLOAT_UNITS_PARAM( class_name , member_name ## .OrthoHeight , 0.01f , 1000.0f, "meters","Ortho Height" ); \
72 NAMED_ANGLE_EDITABLE_PARAM( class_name , member_name ## .HorizontalFOV, DEG_TO_RADF(0.01f), DEG_TO_RADF(89.99f), "Horizontal FOV" ); \
73 NAMED_ANGLE_EDITABLE_PARAM( class_name , member_name ## .VerticalFOV, DEG_TO_RADF(0.01f), DEG_TO_RADF(89.99f), "Vertical FOV" ); \
74 NAMED_FLOAT_UNITS_PARAM( class_name , member_name ## .NearZ , 0.01f , 1000.0f, "meters","NearZ" ); \
75 NAMED_FLOAT_UNITS_PARAM( class_name , member_name ## .FarZ , 0.01f , 1000.0f, "meters","FarZ" ); \
76 NAMED_FLOAT_UNITS_PARAM( class_name , member_name ## .Intensity , 0.01f , 1.0f, "","Intensity" ); \
77 FILENAME_PARAM ( class_name , member_name ## .TextureName, "Texture files", ".tga"); \
78 NAMED_EDITABLE_PARAM( class_name , ParameterClass::TYPE_STRING, member_name ## .BoneName, "BoneName" );