浏览代码

updated serialization of randomizers to array instead of object

/randomizer-serialization-update
Aryan Mann 3 年前
当前提交
3753ea3b
共有 3 个文件被更改,包括 16 次插入12 次删除
  1. 18
      com.unity.perception/Runtime/Randomization/Scenarios/Serialization/ScenarioSerializer.cs
  2. 3
      com.unity.perception/Runtime/Randomization/Scenarios/Serialization/SerializationStructures.cs
  3. 7
      com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/SampleScenarioConfiguration.json

18
com.unity.perception/Runtime/Randomization/Scenarios/Serialization/ScenarioSerializer.cs


};
}
static Dictionary<string, Group> SerializeRandomizers(IEnumerable<Randomizer> randomizers)
static List<Group> SerializeRandomizers(IEnumerable<Randomizer> randomizers)
var serializedRandomizers = new Dictionary<string, Group>();
var serializedRandomizers = new List<Group>();
serializedRandomizers.Add(randomizer.GetType().Name, randomizerData);
serializedRandomizers.Add(randomizerData);
}
return serializedRandomizers;
}

var randomizerData = new Group();
var fields = randomizer.GetType().GetFields();
randomizerData.className = randomizer.GetType().Name;
foreach (var field in fields)
{
if (field.FieldType.IsSubclassOf(typeof(Randomization.Parameters.Parameter)))

DeserializeRandomizers(scenario.randomizers, template.groups);
}
static void DeserializeRandomizers(IEnumerable<Randomizer> randomizers, Dictionary<string, Group> groups)
static void DeserializeRandomizers(IEnumerable<Randomizer> randomizers, List<Group> groups)
foreach (var randomizerPair in groups)
foreach (var randomizerData in groups)
if (!randomizerTypeMap.ContainsKey(randomizerPair.Key))
if (!randomizerTypeMap.ContainsKey(randomizerData.className))
var randomizer = randomizerTypeMap[randomizerPair.Key];
DeserializeRandomizer(randomizer, randomizerPair.Value);
var randomizer = randomizerTypeMap[randomizerData.className];
DeserializeRandomizer(randomizer, randomizerData);
}
}

3
com.unity.perception/Runtime/Randomization/Scenarios/Serialization/SerializationStructures.cs


#region GroupedObjects
class TemplateConfigurationOptions
{
public Dictionary<string, Group> groups = new Dictionary<string, Group>();
public List<Group> groups = new List<Group>();
}
class StandardMetadata

class Group
{
public string className;
public StandardMetadata metadata = new StandardMetadata();
[JsonConverter(typeof(GroupItemsConverter))]
public Dictionary<string, IGroupItem> items = new Dictionary<string, IGroupItem>();

7
com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/SampleScenarioConfiguration.json


"randomSeed": 539662031
},
"randomizers": {
"groups": {
"RotationRandomizer": {
"groups": [
{
"className": "RotationRandomizer",
"metadata": {
"name": "",
"description": "",

}
}
}
}
]
}
}
正在加载...
取消
保存