private Transform RebuildTransform(Transform parent, RobotGameObjectDataModel dataModel, Dictionary <string, Queue <GameObject> > partsGroup) { GameObject node = null; if (dataModel.IsAsset(out var address)) { if (partsGroup.TryGetValue(address, out var parts)) { if (parts.Count > 0) { node = parts.Dequeue(); node.name = dataModel.name; } } } if (node == null) { node = new GameObject(dataModel.name); } node.transform.SetParent(parent, false); node.transform.localPosition = dataModel.localPosition; node.transform.localRotation = dataModel.localRotation; node.transform.localScale = dataModel.localScale; node.gameObject.layer = dataModel.layer; node.gameObject.tag = dataModel.tag; dataModel.transform = node.transform; foreach (var child in dataModel.children) { RebuildTransform(node.transform, child, partsGroup); } return(node.transform); }
private void RebuildPathLink(RobotGameObjectDataModel dataModel) { foreach (var component in dataModel.components) { ComponentDeserializer.DeserializeFromJson(component); } foreach (var child in dataModel.children) { RebuildPathLink(child); } }
private void AttachComponents(RobotGameObjectDataModel dataModel) { foreach (var component in dataModel.components) { ComponentDeserializer.AttachComponent(dataModel.transform, component); } foreach (var child in dataModel.children) { AttachComponents(child); } }
public bool Parse(LitJson.JsonData modelData) { mAssetDatas.Clear(); mModelData = modelData; if (modelData.ContainsKey(SerializationConst.assets)) { LitJsonHelper.ParseJsonObject(modelData[SerializationConst.assets], assetDatas); } mGameObjectDataModel = new RobotGameObjectDataModel(modelData); return(true); }
private void RebuildComponents(RobotGameObjectDataModel dataModel) { AttachComponents(dataModel); RebuildPathLink(dataModel); }