Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public void Initialise(Sdf sdf, GameObject wreckedObject)
 {
     _sdf           = sdf;
     _health        = (int)sdf.Health;
     _wreckedObject = wreckedObject;
 }