Beispiel #1
0
    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));
        }
    }
Beispiel #2
0
    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'.");
        }
    }