Elaztek Developer Hub
Blamite Game Engine - blam!  00453.06.08.26.0624.blamite
The core library for the Blamite Game Engine.
sky_atm_parameters.h
Go to the documentation of this file.
1 // sky_atm_parameters [skya] - Tag Definition //
3 // -------- //
4 // Author: haloman30 //
5 // Revision: 1 //
6 // -------- //
7 // Part of the Blamite Game Engine //
8 // Copyright (c) Elaztek Studios 2013 - 2023 //
10 
11 
12 #pragma once
13 
14 #include <string>
15 #include <blam/api/v1/types/tags.h>
17 
18 #ifndef BLAM
19 #define BLAM
20 #endif
21 
22 #define tag_skya "skya"
23 
24 
25 
26 #pragma pack(push, 1)
28 {
33  TAG_ENUM8(sun_direction_method,
34  {
35  altitude_azimuth,
36  direction,
37  });
38 
39  TAG_BLOCK(altitudeazimuth_sun_settings,
40  {
41  real altitude;
42  real azimuth;
43  });
44  TAG_BLOCK(directional_sun_settings,
45  {
46  vector3 direction;
47  });
48  TAG_BLOCK(presets,
49  {
50  real time;
51  real sky_power;
52  real sun_power;
53  color sky_color;
54  real environment_map_scale;
55  real horizon_limit;
56  real density_coefficient;
57  real density_diffusion;
58  real fog_density;
59  real min_brightness;
60  real falloff;
61  real linked_light_power;
62  real upper_hemisphere_ambient_light_power;
63  real lower_hemisphere_ambient_light_power;
64  });
68  TAG_ENUM8(fog_mode,
69  {
70  none,
71  exponential,
72  exponential_squared,
73  linear,
74  });
75 
80 };
81 #pragma pack(pop)
82 
84 {
85 public:
87  {
88  class_name_long = "sky_atm_parameters";
89  class_name_short = "skya";
90  version = 1;
91 
92  revisions = {
93  {1, "haloman30", "Initial revision"},
94 
95  };
96 
97  tag_size = 178;
98 
99  fields =
100  {
101  new RealField("time", ""),
102  new RealField("sea level", ""),
103  new RealField("atmosphere height", ""),
104  new CommentField("SUN",
105  ""),
106  new TagReferenceField("linked light", "", { "ligh"}),
107  new Enum8Field("sun direction method", "",
108  {
109  "altitude/azimuth",
110  "direction",
111  }),
112  new BlockField(8, "altitude/azimuth sun settings", "", 1,
113  {
114  new RealField("altitude", ""),
115  new RealField("azimuth", ""),
116  }),
117  new BlockField(12, "directional sun settings", "", 1,
118  {
119  new Vector3Field("direction", ""),
120  }),
121  new CommentField("SKY PRESETS",
122  ""),
123  new BlockField(56, "presets", "",
124  {
125  new RealField("time", ""),
126  new CommentField("SKY",
127  ""),
128  new RealField("sky power", ""),
129  new RealField("sun power", ""),
130  new ColorField("sky color", ""),
131  new RealField("environment map scale", ""),
132  new CommentField("FOG",
133  ""),
134  new RealField("horizon limit", ""),
135  new RealField("density coefficient", ""),
136  new RealField("density diffusion", ""),
137  new RealField("fog density", ""),
138  new CommentField("LIGHT BREAKTHROUGH",
139  ""),
140  new RealField("min brightness", ""),
141  new RealField("falloff", ""),
142  new CommentField("LINKED LIGHTS",
143  ""),
144  new RealField("linked light power", ""),
145  new RealField("upper hemisphere ambient light power", ""),
146  new RealField("lower hemisphere ambient light power", ""),
147  }),
148  new CommentField("AMBIENT LIGHT",
149  ""),
150  new ColorField("upper hemisphere color", ""),
151  new ColorField("lower hemisphere color", ""),
152  new Vector3Field("hemisphere direction", ""),
153  new CommentField("FOG",
154  ""),
155  new Enum8Field("fog mode", "",
156  {
157  "none",
158  "exponential",
159  "exponential squared",
160  "linear",
161  }),
162  new ColorField("fog color", ""),
163  new RealField("fog exponential density", ""),
164  new RealField("fog linear start", ""),
165  new RealField("fog linear end", ""),
166 
167  };
168  }
169 };
170 
171 namespace Blam::Content::Tags
172 {
173  BLAM sky_atm_parameters* GetSkyAtmParametersTag(std::string tag_path);
174 }
tag_skya
#define tag_skya
Definition: sky_atm_parameters.h:22
Blam::Content::Tags
Namespace containing functions related to tag data.
Definition: bitmap.h:181
RealField
Class representing a real tag field.
Definition: real.h:16
color
BlamColor color
Typedef for a color field, used in tag definitions.
Definition: tags.h:447
vector3
BlamVector3 vector3
Typedef for a vector3 field, used in tag definitions.
Definition: tags.h:445
SkyAtmParametersTagClass::SkyAtmParametersTagClass
SkyAtmParametersTagClass()
Definition: sky_atm_parameters.h:86
sky_atm_parameters::TAG_ENUM8
TAG_ENUM8(sun_direction_method, { altitude_azimuth, direction, })
BLAM
#define BLAM
Definition: sky_atm_parameters.h:19
sky_atm_parameters::time
real time
Definition: sky_atm_parameters.h:29
Vector3Field
Class representing a vector3 tag field.
Definition: vector.h:47
sky_atm_parameters::fog_linear_end
real fog_linear_end
Definition: sky_atm_parameters.h:79
TagReferenceField
Class representing a tag reference, or tagref for short.
Definition: tagref.h:20
Blam::API::v1::Tags::GetTagData
BLAM_EXT_API BlamTagData * GetTagData(std::string tag_path)
Retrieves information for a given tag.
Definition: api.cpp:208
BlamTagClass::fields
std::vector< BlamTagClassField * > fields
A series of tag fields that store the layout of the tag.
Definition: tags.h:209
BlamTagClass::revisions
std::vector< BlamTagClassRevision > revisions
List of all tag class revisions. Does not get written to tags, but is included in plugin files.
Definition: tags.h:208
plugins.h
sky_atm_parameters
Definition: sky_atm_parameters.h:27
BlamTagClass::class_name_short
std::string class_name_short
The short, 4-character name of the tag class.
Definition: tags.h:206
sky_atm_parameters.h
SkyAtmParametersTagClass
Definition: sky_atm_parameters.h:83
BlamTagClass::version
int version
The tag class version. Should be incremented any time a tag class is modified whatsoever.
Definition: tags.h:207
sky_atm_parameters::fog_exponential_density
real fog_exponential_density
Definition: sky_atm_parameters.h:77
tag_reference
Structure representing a tag reference.
Definition: tags.h:289
Blam::Content::Tags::GetSkyAtmParametersTag
BLAM sky_atm_parameters * GetSkyAtmParametersTag(std::string tag_path)
Definition: sky_atm_parameters.cpp:16
BlamTagClass::class_name_long
std::string class_name_long
The longer class name. Typically shown alongside short name for user-friendliness.
Definition: tags.h:205
real
float real
Typedef for a 'real', aka a float.
Definition: tags.h:443
bitmap_filtering_mode::none
@ none
sky_atm_parameters::hemisphere_direction
vector3 hemisphere_direction
Definition: sky_atm_parameters.h:67
bitmap_filtering_mode::linear
@ linear
Enum8Field
Definition: enum.h:33
sky_atm_parameters::fog_linear_start
real fog_linear_start
Definition: sky_atm_parameters.h:78
BlamTagClass::tag_size
int tag_size
The size of the tag's data. Used on loading/writing tag files.
Definition: tags.h:210
ColorField
Class representing a color tag field.
Definition: color.h:19
sky_atm_parameters::atmosphere_height
real atmosphere_height
Definition: sky_atm_parameters.h:31
sky_atm_parameters::fog_color
color fog_color
Definition: sky_atm_parameters.h:76
BlamTagData::address
void * address
The address pointing to the start of the tag's data.
Definition: tags.h:132
tags.h
BlamTagData
Class used to contain and access tag data.
Definition: tags.h:125
sky_atm_parameters::upper_hemisphere_color
color upper_hemisphere_color
Definition: sky_atm_parameters.h:65
sky_atm_parameters::sea_level
real sea_level
Definition: sky_atm_parameters.h:30
CommentField
Class representing a comment field.
Definition: comment.h:29
sky_atm_parameters::TAG_BLOCK
TAG_BLOCK(altitudeazimuth_sun_settings, { real altitude;real azimuth;})
BlockField
Class representing a tag block field, also sometimes referred to as a struct or reflexive in the modd...
Definition: block.h:19
sky_atm_parameters::lower_hemisphere_color
color lower_hemisphere_color
Definition: sky_atm_parameters.h:66
BlamTagClass
Class representing a tag class.
Definition: tags.h:202
sky_atm_parameters::linked_light
tag_reference linked_light
Definition: sky_atm_parameters.h:32
api.h
BlamTagData::tag_class
std::string tag_class
The tag's short class name.
Definition: tags.h:146