| 719 | } |
| 720 | |
| 721 | void ParticleEffect::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) |
| 722 | { |
| 723 | // Base |
| 724 | Actor::Deserialize(stream, modifier); |
| 725 | |
| 726 | PROFILE_MEM(Particles); |
| 727 | const auto overridesMember = stream.FindMember("Overrides"); |
| 728 | if (overridesMember != stream.MemberEnd()) |
| 729 | { |
| 730 | const auto& overrides = overridesMember->value; |
| 731 | CHECK(overrides.IsArray()); |
| 732 | _parametersOverrides.EnsureCapacity(_parametersOverrides.Count() + overrides.Size()); |
| 733 | for (rapidjson::SizeType i = 0; i < overrides.Size(); i++) |
| 734 | { |
| 735 | auto& o = (DeserializeStream&)overrides[i]; |
| 736 | const String trackName = JsonTools::GetString(o, "Track"); |
| 737 | const Guid id = JsonTools::GetGuid(o, "Id"); |
| 738 | ParameterOverride* e = nullptr; |
| 739 | for (auto& q : _parametersOverrides) |
| 740 | { |
| 741 | if (q.Id == id && q.Track == trackName) |
| 742 | { |
| 743 | e = &q; |
| 744 | break; |
| 745 | } |
| 746 | } |
| 747 | if (e) |
| 748 | { |
| 749 | // Update overriden parameter value |
| 750 | const auto mValue = SERIALIZE_FIND_MEMBER(o, "Value"); |
| 751 | if (mValue != stream.MemberEnd()) |
| 752 | Serialization::Deserialize(mValue->value, e->Value, modifier); |
| 753 | } |
| 754 | else |
| 755 | { |
| 756 | // Add parameter override |
| 757 | auto& p = _parametersOverrides.AddOne(); |
| 758 | p.Track = trackName; |
| 759 | p.Id = id; |
| 760 | const auto mValue = SERIALIZE_FIND_MEMBER(o, "Value"); |
| 761 | if (mValue != stream.MemberEnd()) |
| 762 | Serialization::Deserialize(mValue->value, p.Value, modifier); |
| 763 | } |
| 764 | } |
| 765 | } |
| 766 | |
| 767 | DESERIALIZE(ParticleSystem); |
| 768 | DESERIALIZE(UpdateMode); |
| 769 | DESERIALIZE(FixedTimestep); |
| 770 | DESERIALIZE(SimulationSpeed); |
| 771 | DESERIALIZE(UseTimeScale); |
| 772 | DESERIALIZE(IsLooping); |
| 773 | DESERIALIZE(PlayOnStart); |
| 774 | DESERIALIZE(UpdateWhenOffscreen); |
| 775 | DESERIALIZE(DrawModes); |
| 776 | DESERIALIZE(SortOrder); |
| 777 | |
| 778 | if (_parameters.HasItems()) |
nothing calls this directly
no test coverage detected