public static void loadGeneratorObject(SceneObject obj) { if (obj.GetType().Equals(typeof(GeneratorObject))) { GeneratorObject gObject = (GeneratorObject)obj; GameObject generator = Instantiate(prefabDictionary[obj.GetType()]); generator.transform.position = new Vector3(gObject.position.x, gObject.position.y, gObject.position.z); generator.transform.eulerAngles = new Vector3(gObject.rotation.x, gObject.rotation.y, gObject.rotation.z); Transform rotatingPart = generator.transform.GetChild(0); Transform standPart = generator.transform.GetChild(1); rotatingPart.position = new Vector3(rotatingPart.position.x, gObject.height, rotatingPart.position.z); standPart.position = new Vector3(standPart.position.x, gObject.height / 2.0f, standPart.position.z); standPart.localScale = new Vector3(standPart.localScale.x, gObject.height, standPart.localScale.z); foreach (int id in gObject.connectedObjects) { Tuple <SceneObject, GameObject> tuple = addedSceneObjects.Find(tp => tp.Item1.id.Equals(id)); if (tuple != null) { generator.GetComponentInChildren <Connectable>().addConnectedPart(tuple.Item2.GetComponentInChildren <Rotatable>()); } } //Set Layer for gameobject and all its children string tagLayerName = "Generator"; SetLayerRecursively(generator, LayerMask.NameToLayer(tagLayerName)); generator.gameObject.tag = tagLayerName; addedSceneObjects.Add(new Tuple <SceneObject, GameObject>(obj, generator)); } }
public static void addGeneratorObject(List <SceneObject> sceneObjects, Dictionary <GameObject, SceneObject> addedSceneObjects, GameObject obj) { if (obj.tag.Equals("Generator")) { GeneratorObject newObject = new GeneratorObject(); List <Rotatable> connectedObjects = obj.GetComponentInChildren <Generator>().getConnectedParts(); newObject.connectedObjects = new int[connectedObjects.Count]; for (int i = 0; i < connectedObjects.Count; i++) { if (!addedSceneObjects.ContainsKey(connectedObjects[i].getRootTransform().gameObject)) { SceneLoaderDictionary.addSceneObjectDictionary[connectedObjects[i].getRootTransform().tag].Invoke(sceneObjects, addedSceneObjects, connectedObjects[i].getRootTransform().gameObject); } newObject.connectedObjects[i] = addedSceneObjects[connectedObjects[i].getRootTransform().gameObject].id; } newObject.id = sceneObjects.Count; newObject.kind = "GeneratorObject"; Vector3 objPosition = obj.transform.position; newObject.position = new Vector3Object(objPosition.x, objPosition.y, objPosition.z); Vector3 objRotation = obj.transform.eulerAngles; newObject.rotation = new Vector3Object(objRotation.x, objRotation.y, objRotation.z); newObject.height = obj.transform.GetChild(1).localScale.y; sceneObjects.Add(newObject); addedSceneObjects.Add(obj, newObject); } else { Debug.Log("JsonConfigInteraction.addConeCogwheelObject: object is not tagged with 'Generator'."); } }