public GameObject ImportSdf(string filename, Transform parent, Vector3 localPosition, Quaternion rotation, bool canWreck, out Sdf sdf, out GameObject wreckedPart) { wreckedPart = null; sdf = null; if (!_sdfCache.TryGetValue(filename, out sdf)) { sdf = SdfObjectParser.LoadSdf(filename, canWreck); _sdfCache.Add(filename, sdf); } GameObject sdfObject = new GameObject(sdf.Name); sdfObject.transform.parent = parent; sdfObject.transform.localPosition = localPosition; sdfObject.transform.rotation = rotation; Dictionary <string, GameObject> partDict = new Dictionary <string, GameObject> { { "WORLD", sdfObject } }; foreach (SdfPart sdfPart in sdf.Parts) { GameObject partObj = LoadSdfPart(sdfPart, partDict[sdfPart.ParentName].transform); if (partObj == null) { continue; } partObj.SetActive(true); partDict.Add(sdfPart.Name, partObj); } if (canWreck && sdf.WreckedPart != null) { wreckedPart = LoadSdfPart(sdf.WreckedPart, partDict[sdf.WreckedPart.ParentName].transform); if (wreckedPart != null) { wreckedPart.SetActive(false); Rigidbody rigidBody = sdfObject.AddComponent <Rigidbody>(); rigidBody.isKinematic = true; } } return(sdfObject); }
public void Initialise(Sdf sdf, GameObject wreckedObject) { _sdf = sdf; _health = (int)sdf.Health; _wreckedObject = wreckedObject; }