3#include "pixelbullet/scene/components/animation_state_component.h"
4#include "pixelbullet/scene/components/audio_listener_component.h"
5#include "pixelbullet/scene/components/audio_source_component.h"
6#include "pixelbullet/scene/components/camera_component.h"
7#include "pixelbullet/scene/components/collider_component.h"
8#include "pixelbullet/scene/components/directional_light_component.h"
9#include "pixelbullet/scene/components/material_uv_transform_component.h"
10#include "pixelbullet/scene/components/mesh_renderer.h"
11#include "pixelbullet/scene/components/morph_mesh_renderer.h"
12#include "pixelbullet/scene/components/morph_weights_animation_component.h"
13#include "pixelbullet/scene/components/morph_weights_component.h"
14#include "pixelbullet/scene/components/name.h"
15#include "pixelbullet/scene/components/point_light_component.h"
16#include "pixelbullet/scene/components/prefab_instance_component.h"
17#include "pixelbullet/scene/components/prefab_transform_overrides_component.h"
18#include "pixelbullet/scene/components/rigid_body_component.h"
19#include "pixelbullet/scene/components/skeleton_animation_component.h"
20#include "pixelbullet/scene/components/skinned_mesh_renderer.h"
21#include "pixelbullet/scene/components/skinned_morph_mesh_renderer.h"
22#include "pixelbullet/scene/components/spot_light_component.h"
23#include "pixelbullet/scene/components/sprite_renderer.h"
24#include "pixelbullet/scene/components/transform.h"
25#include "pixelbullet/scene/components/transform_animation_component.h"
26#include "pixelbullet/scene/components/transform_parent_component.h"
27#include "pixelbullet/serialization/node_reader.h"
38 ok &= serialization::TryReadOptionalProperty(node,
"enabled", component.enabled, reader);
39 ok &= serialization::TryReadOptionalProperty(node,
"activeClip", component.active_clip, reader);
46 return serialization::TryReadOptionalProperty(node,
"enabled", component.enabled, reader);
53 ok &= serialization::TryReadOptionalProperty(node,
"enabled", component.enabled, reader);
54 ok &= serialization::TryReadOptionalProperty(node,
"clip", component.clip, reader);
55 ok &= serialization::TryReadOptionalProperty(node,
"autoplay", component.autoplay, reader);
56 ok &= serialization::TryReadOptionalProperty(node,
"loop", component.loop, reader);
57 ok &= serialization::TryReadOptionalProperty(node,
"volume", component.volume, reader);
58 ok &= serialization::TryReadOptionalProperty(node,
"spatial", component.spatial_settings.enabled, reader);
59 ok &= serialization::TryReadOptionalProperty(node,
"minDistance", component.spatial_settings.min_distance, reader);
60 ok &= serialization::TryReadOptionalProperty(node,
"maxDistance", component.spatial_settings.max_distance, reader);
61 ok &= serialization::TryReadOptionalProperty(node,
"loadMode", component.load_mode, reader);
67 std::string serialized;
68 if (!serialization::TryReadNode(node, serialized, reader))
72 value = serialized ==
"Orthographic" ? CameraProjectionMode::Orthographic : CameraProjectionMode::Perspective;
80 ok &= serialization::TryReadRequiredProperty(node,
"primary", camera.primary, reader);
81 ok &= serialization::TryReadRequiredProperty(node,
"fieldOfViewDegrees", camera.field_of_view_degrees, reader);
82 ok &= serialization::TryReadRequiredProperty(node,
"nearPlane", camera.near_plane, reader);
83 ok &= serialization::TryReadRequiredProperty(node,
"farPlane", camera.far_plane, reader);
84 ok &= serialization::TryReadOptionalProperty(node,
"projectionMode", camera.projection_mode, reader);
85 ok &= serialization::TryReadOptionalProperty(node,
"orthographicXMag", camera.orthographic_x_mag, reader);
86 ok &= serialization::TryReadOptionalProperty(node,
"orthographicYMag", camera.orthographic_y_mag, reader);
94 ok &= serialization::TryReadOptionalProperty(node,
"enabled", component.enabled, reader);
95 ok &= serialization::TryReadOptionalProperty(node,
"shape", component.shape, reader);
96 ok &= serialization::TryReadOptionalProperty(node,
"boxHalfExtents", component.box_half_extents, reader);
97 ok &= serialization::TryReadOptionalProperty(node,
"sphereRadius", component.sphere_radius, reader);
98 ok &= serialization::TryReadOptionalProperty(node,
"capsuleRadius", component.capsule_radius, reader);
99 ok &= serialization::TryReadOptionalProperty(node,
"capsuleHalfHeight", component.capsule_half_height, reader);
100 ok &= serialization::TryReadOptionalProperty(node,
"center", component.center, reader);
101 ok &= serialization::TryReadOptionalProperty(node,
"friction", component.friction, reader);
102 ok &= serialization::TryReadOptionalProperty(node,
"restitution", component.restitution, reader);
103 ok &= serialization::TryReadOptionalProperty(node,
"isTrigger", component.is_trigger, reader);
111 ok &= serialization::TryReadRequiredProperty(node,
"enabled", light.enabled, reader);
112 ok &= serialization::TryReadRequiredProperty(node,
"color", light.color, reader);
113 ok &= serialization::TryReadRequiredProperty(node,
"intensity", light.intensity, reader);
114 ok &= serialization::TryReadOptionalProperty(node,
"shadowEnabled", light.shadow_enabled, reader);
115 ok &= serialization::TryReadOptionalProperty(node,
"shadowStrength", light.shadow_strength, reader);
116 ok &= serialization::TryReadOptionalProperty(node,
"shadowBias", light.shadow_bias, reader);
117 ok &= serialization::TryReadOptionalProperty(node,
"shadowNormalBias", light.shadow_normal_bias, reader);
118 ok &= serialization::TryReadOptionalProperty(node,
"shadowDistance", light.shadow_distance, reader);
125 return serialization::TryReadOptionalProperty(node,
"transform", component.transform, reader);
132 ok &= serialization::TryReadRequiredProperty(node,
"mesh", mesh_renderer.mesh, reader);
133 ok &= serialization::TryReadRequiredProperty(node,
"material", mesh_renderer.material, reader);
134 ok &= serialization::TryReadRequiredProperty(node,
"visible", mesh_renderer.visible, reader);
142 ok &= serialization::TryReadRequiredProperty(node,
"mesh", renderer.mesh, reader);
143 ok &= serialization::TryReadRequiredProperty(node,
"material", renderer.material, reader);
144 ok &= serialization::TryReadOptionalProperty(node,
"weightsSource", renderer.weights_source, reader);
145 ok &= serialization::TryReadRequiredProperty(node,
"visible", renderer.visible, reader);
153 ok &= serialization::TryReadRequiredProperty(node,
"timeSeconds", keyframe.time_seconds, reader);
154 ok &= serialization::TryReadOptionalProperty(node,
"weights", keyframe.weights, reader);
155 keyframe.time_seconds = std::max(keyframe.time_seconds, 0.0f);
163 ok &= serialization::TryReadOptionalProperty(node,
"name", clip.name, reader);
164 ok &= serialization::TryReadOptionalProperty(node,
"keys", clip.keys, reader);
165 NormalizeMorphWeightsAnimationClip(clip);
173 if (node.has_property(
"clips"))
175 ok &= serialization::TryReadOptionalProperty(node,
"clips", component.clips, reader);
180 clip.name =
"Default";
181 ok &= serialization::TryReadOptionalProperty(node,
"keys", clip.keys, reader);
182 bool legacy_enabled =
true;
183 ok &= serialization::TryReadOptionalProperty(node,
"enabled", legacy_enabled, reader);
184 NormalizeMorphWeightsAnimationClip(clip);
185 if (!clip.keys.empty() || node.has_property(
"enabled"))
187 component.clips.push_back(std::move(clip));
190 NormalizeMorphWeightsAnimationComponent(component);
197 return serialization::TryReadOptionalProperty(node,
"weights", component.weights, reader);
203 return serialization::TryReadRequiredProperty(node,
"value", name.value, reader);
210 ok &= serialization::TryReadRequiredProperty(node,
"enabled", light.enabled, reader);
211 ok &= serialization::TryReadRequiredProperty(node,
"color", light.color, reader);
212 ok &= serialization::TryReadRequiredProperty(node,
"intensity", light.intensity, reader);
213 ok &= serialization::TryReadRequiredProperty(node,
"range", light.range, reader);
220 return serialization::TryReadRequiredProperty(node,
"prefabPath", component.prefab_path, reader);
227 ok &= serialization::TryReadOptionalProperty(node,
"entity", entry.prefab_entity, reader);
228 ok &= serialization::TryReadOptionalProperty(node,
"transform", entry.transform, reader);
235 const bool ok = serialization::TryReadOptionalProperty(node,
"transformOverrides", component.transform_overrides, reader);
236 NormalizePrefabTransformOverrideEntries(component.transform_overrides);
244 ok &= serialization::TryReadOptionalProperty(node,
"enabled", component.enabled, reader);
245 ok &= serialization::TryReadOptionalProperty(node,
"motionType", component.motion_type, reader);
246 ok &= serialization::TryReadOptionalProperty(node,
"mass", component.mass, reader);
247 ok &= serialization::TryReadOptionalProperty(node,
"linearDamping", component.linear_damping, reader);
248 ok &= serialization::TryReadOptionalProperty(node,
"angularDamping", component.angular_damping, reader);
249 ok &= serialization::TryReadOptionalProperty(node,
"gravityScale", component.gravity_scale, reader);
257 ok &= serialization::TryReadOptionalProperty(node,
"name", clip.name, reader);
258 ok &= serialization::TryReadRequiredProperty(node,
"clipAsset", clip.clip_asset, reader);
266 ok &= serialization::TryReadRequiredProperty(node,
"skeletonAsset", component.skeleton_asset, reader);
267 ok &= serialization::TryReadOptionalProperty(node,
"jointEntities", component.joint_entities, reader);
268 ok &= serialization::TryReadOptionalProperty(node,
"clips", component.clips, reader);
269 bool legacy_enabled =
true;
270 ok &= serialization::TryReadOptionalProperty(node,
"enabled", legacy_enabled, reader);
271 NormalizeSkeletonAnimationComponent(component);
279 ok &= serialization::TryReadRequiredProperty(node,
"mesh", renderer.mesh, reader);
280 ok &= serialization::TryReadRequiredProperty(node,
"material", renderer.material, reader);
281 ok &= serialization::TryReadOptionalProperty(node,
"joints", renderer.joints, reader);
282 ok &= serialization::TryReadRequiredProperty(node,
"visible", renderer.visible, reader);
290 ok &= serialization::TryReadRequiredProperty(node,
"mesh", renderer.mesh, reader);
291 ok &= serialization::TryReadRequiredProperty(node,
"material", renderer.material, reader);
292 ok &= serialization::TryReadOptionalProperty(node,
"joints", renderer.joints, reader);
293 ok &= serialization::TryReadOptionalProperty(node,
"weightsSource", renderer.weights_source, reader);
294 ok &= serialization::TryReadRequiredProperty(node,
"visible", renderer.visible, reader);
302 ok &= serialization::TryReadRequiredProperty(node,
"enabled", light.enabled, reader);
303 ok &= serialization::TryReadRequiredProperty(node,
"color", light.color, reader);
304 ok &= serialization::TryReadRequiredProperty(node,
"intensity", light.intensity, reader);
305 ok &= serialization::TryReadRequiredProperty(node,
"range", light.range, reader);
306 ok &= serialization::TryReadOptionalProperty(node,
"innerConeAngleDegrees", light.inner_cone_angle_degrees, reader);
307 ok &= serialization::TryReadOptionalProperty(node,
"outerConeAngleDegrees", light.outer_cone_angle_degrees, reader);
315 ok &= serialization::TryReadRequiredProperty(node,
"texture", sprite.texture, reader);
316 ok &= serialization::TryReadRequiredProperty(node,
"tint", sprite.tint, reader);
317 ok &= serialization::TryReadRequiredProperty(node,
"uvScale", sprite.uv_scale, reader);
318 ok &= serialization::TryReadRequiredProperty(node,
"uvOffset", sprite.uv_offset, reader);
319 ok &= serialization::TryReadRequiredProperty(node,
"visible", sprite.visible, reader);
327 ok &= serialization::TryReadRequiredProperty(node,
"position", transform.position, reader);
328 ok &= serialization::TryReadRequiredProperty(node,
"rotation", transform.rotation, reader);
329 ok &= serialization::TryReadRequiredProperty(node,
"scale", transform.scale, reader);
337 ok &= serialization::TryReadRequiredProperty(node,
"timeSeconds", keyframe.time_seconds, reader);
338 ok &= serialization::TryReadRequiredProperty(node,
"position", keyframe.transform.position, reader);
339 ok &= serialization::TryReadRequiredProperty(node,
"rotation", keyframe.transform.rotation, reader);
340 ok &= serialization::TryReadRequiredProperty(node,
"scale", keyframe.transform.scale, reader);
341 keyframe.time_seconds = std::max(keyframe.time_seconds, 0.0f);
349 ok &= serialization::TryReadOptionalProperty(node,
"name", clip.name, reader);
350 ok &= serialization::TryReadOptionalProperty(node,
"keys", clip.keys, reader);
351 NormalizeTransformAnimationClip(clip);
359 if (node.has_property(
"clips"))
361 ok &= serialization::TryReadOptionalProperty(node,
"clips", component.clips, reader);
366 clip.name =
"Default";
367 ok &= serialization::TryReadOptionalProperty(node,
"keys", clip.keys, reader);
368 bool legacy_enabled =
true;
369 ok &= serialization::TryReadOptionalProperty(node,
"enabled", legacy_enabled, reader);
370 NormalizeTransformAnimationClip(clip);
371 if (!clip.keys.empty() || node.has_property(
"enabled"))
373 component.clips.push_back(std::move(clip));
376 NormalizeTransformAnimationComponent(component);
383 return serialization::TryReadRequiredProperty(node,
"parent", component.parent, reader);
Represents a hierarchical node capable of storing various data types and supporting YAML serializatio...
Definition node.h:49
Definition node_reader.h:48
Definition animation_state_component.h:10
Definition audio_listener_component.h:8
Definition audio_source_component.h:13
Definition camera_component.h:43
Definition collider_component.h:11
Definition directional_light_component.h:8
Definition mesh_renderer.h:10
Definition morph_mesh_renderer.h:11
Definition morph_weights_animation_component.h:64
Definition morph_weights_animation_component.h:100
Definition morph_weights_component.h:10
Definition morph_weights_animation_component.h:16
Definition point_light_component.h:8
Definition prefab_instance_component.h:10
Definition prefab_transform_overrides_component.h:21
Definition rigid_body_component.h:10
Definition skeleton_animation_component.h:17
Definition skeleton_animation_component.h:33
Definition skinned_mesh_renderer.h:13
Definition skinned_morph_mesh_renderer.h:13
Definition spot_light_component.h:8
Definition sprite_renderer.h:12