public override YAMLNode ExportYAML(IExportContainer container) { YAMLMappingNode node = (YAMLMappingNode)base.ExportYAML(container); node.InsertSerializedVersion(ToSerializedVersion(container.ExportVersion)); node.Add(TypeName, (int)GetType(container.Version)); node.Add(AngleName, Angle); node.Add(LengthName, GetExportLength(container.Version)); node.Add(BoxThicknessName, BoxThickness.ExportYAML(container)); node.Add(RadiusThicknessName, GetExportRadiusThickness(container.Version)); node.Add(DonutRadiusName, GetExportDonutRadius(container.Version)); node.Add(PositionName, Position.ExportYAML(container)); node.Add(RotationName, Rotation.ExportYAML(container)); node.Add(ScaleName, Scale.ExportYAML(container)); node.Add(PlacementModeName, (int)PlacementMode); node.Add(MeshMaterialIndexName, MeshMaterialIndex); node.Add(MeshNormalOffsetName, MeshNormalOffset); if (HasMeshSpawn(container.Version)) { node.Add(MeshSpawnName, MeshSpawn.ExportYAML(container)); } node.Add(MeshName, Mesh.ExportYAML(container)); node.Add(MeshRendererName, MeshRenderer.ExportYAML(container)); node.Add(SkinnedMeshRendererName, SkinnedMeshRenderer.ExportYAML(container)); node.Add(UseMeshMaterialIndexName, UseMeshMaterialIndex); node.Add(UseMeshColorsName, GetExportUseMeshColors(container.Version)); node.Add(AlignToDirectionName, AlignToDirection); node.Add(RandomDirectionAmountName, RandomDirectionAmount); node.Add(SphericalDirectionAmountName, SphericalDirectionAmount); node.Add(RandomPositionAmountName, RandomPositionAmount); node.Add(RadiusName, Radius.ExportYAML(container)); node.Add(ArcName, GetArc(container.Version).ExportYAML(container)); return(node); }
public override void Read(AssetReader reader) { base.Read(reader); Type = (ParticleSystemShapeType)reader.ReadInt32(); if (HasRadiusSingle(reader.Version)) { float radius = reader.ReadSingle(); Radius = new MultiModeParameter(radius); } Angle = reader.ReadSingle(); if (HasLength(reader.Version)) { Length = reader.ReadSingle(); } if (HasBoxAxes(reader.Version)) { float boxX = reader.ReadSingle(); float boxY = reader.ReadSingle(); float boxZ = reader.ReadSingle(); Scale = Type.IsBoxAny() ? new Vector3f(boxX, boxY, boxZ) : Vector3f.One; } if (HasArcSingle(reader.Version)) { float arc = reader.ReadSingle(); Arc = new MultiModeParameter(arc); } if (HasRadius(reader.Version)) { if (HasRadiusFirst(reader.Version)) { Radius.Read(reader); Arc.Read(reader); } } if (HasBoxThickness(reader.Version)) { BoxThickness.Read(reader); RadiusThickness = reader.ReadSingle(); DonutRadius = reader.ReadSingle(); Position.Read(reader); Rotation.Read(reader); Scale.Read(reader); } PlacementMode = (PlacementMode)reader.ReadInt32(); if (HasMeshMaterialIndex(reader.Version)) { if (HasMeshMaterialIndexFirst(reader.Version)) { MeshMaterialIndex = reader.ReadInt32(); MeshNormalOffset = reader.ReadSingle(); } } if (HasMeshSpawn(reader.Version)) { MeshSpawn.Read(reader, false); } Mesh.Read(reader); if (HasMeshRenderer(reader.Version)) { MeshRenderer.Read(reader); SkinnedMeshRenderer.Read(reader); } if (HasSprite(reader.Version)) { Sprite.Read(reader); SpriteRenderer.Read(reader); } if (HasMeshMaterialIndex(reader.Version)) { if (!HasMeshMaterialIndexFirst(reader.Version)) { MeshMaterialIndex = reader.ReadInt32(); MeshNormalOffset = reader.ReadSingle(); } } if (HasMeshScale(reader.Version)) { float meshScale = reader.ReadSingle(); Scale = new Vector3f(meshScale, meshScale, meshScale); } if (HasUseMeshMaterialIndex(reader.Version)) { UseMeshMaterialIndex = reader.ReadBoolean(); UseMeshColors = reader.ReadBoolean(); } if (HasAlignToDirection(reader.Version)) { AlignToDirection = reader.ReadBoolean(); } if (HasRandomDirection(reader.Version)) { bool randomDirection = reader.ReadBoolean(); RandomDirectionAmount = randomDirection ? 1.0f : 0.0f; } reader.AlignStream(); if (HasTexture(reader.Version)) { Texture.Read(reader); TextureClipChannel = reader.ReadInt32(); TextureClipThreshold = reader.ReadSingle(); TextureUVChannel = reader.ReadInt32(); TextureColorAffectsParticles = reader.ReadBoolean(); TextureAlphaAffectsParticles = reader.ReadBoolean(); TextureBilinearFiltering = reader.ReadBoolean(); reader.AlignStream(); } if (HasRandomDirectionAmount(reader.Version)) { RandomDirectionAmount = reader.ReadSingle(); SphericalDirectionAmount = reader.ReadSingle(); } if (HasRandomPositionAmount(reader.Version)) { RandomPositionAmount = reader.ReadSingle(); } if (HasRadius(reader.Version)) { if (!HasRadiusFirst(reader.Version)) { Radius.Read(reader); Arc.Read(reader); } } }