コード例 #1
0
ファイル: GeneratorMenu.cs プロジェクト: riaJha97/aimmo-unity
    /**
     * Generates GUI elements given a type of generator.
     * The GenData it points to should not be shared by multiple UI elements.
     */
    private void GeneratorGUI(Type generatorType, string buttonName, GenerationData data)
    {
        SpriteGeneratorBuilder builder = ObjectController.GetContext().
                                         AddComponent <SpriteGeneratorBuilder>().CreateBuilder(generatorType);

        GUILayout.BeginHorizontal();

        // A dropdown list which displays all the PNG files that can be used as spites
        // See AssetController for
        IList <string> spriteList = AssetFetcher.GetSprites();

        spriteList.Insert(0, "Default Sprite");

        string[] sprites = spriteList.ToArray <string>();
        GUILayout.Label("Sprite:");
        data.idx = EditorGUILayout.Popup(data.idx, sprites);

        GUILayout.EndHorizontal();

        if (GUILayout.Button(new GUIContent(buttonName)))
        {
            // We use the Builder pattern so that the GUI logic can get updated easily
            builder = builder.ByCoord(0.0f, 0.0f);
            if (data.idx != 0)
            {
                builder = builder.ByPath(sprites [data.idx]);
            }

            if (data.width != "")
            {
                builder = builder.ByWidth(int.Parse(data.width));
            }

            if (data.height != "")
            {
                builder = builder.ByHeight(int.Parse(data.height));
            }

            if (lightsUI.addLight)
            {
                builder = builder.ByLightData(lightsUI.lightData);
            }

            // We append the file name of the sprite at the end so the type of
            // the object is easily identifiable
            string finalName = "object-" + sprites[data.idx].Replace(" ", "-") + fileIncrement++;

            // The Builder is the component that should persist as a Script Component
            // together with the object. All the fields of the Builder *must* be serializable
            // to persist with the saved scene. The Builder can encasulate all behaviour
            // of the generators.
            GameObject gameObject = builder.Build().GenerateObject(finalName);
            gameObject.AddComponent <SpriteGeneratorBuilder>().ByBuilder(builder);
        }

        UnityEngine.Object.DestroyImmediate(builder);
    }
コード例 #2
0
        // A function that gets all objects that are serializable
        // and that should be exported to the backend. The Builders
        // *must* be fully serializable and for the moment SpriteGeneratorBuilder
        // is the only one.
        private LinkedList <GameObject> GetSceneObjects()
        {
            GameObject[]            allObjects          = UnityEngine.Object.FindObjectsOfType <GameObject>();
            LinkedList <GameObject> serializableObjects = new LinkedList <GameObject>();

            foreach (GameObject obj in allObjects)
            {
                if (obj.GetComponent <SpriteGeneratorBuilder> ())
                {
                    // Debug.Log (obj.ToString());
                    if (obj != ObjectController.GetContext())
                    {
                        serializableObjects.AddLast(obj);
                    }
                }
            }
            return(serializableObjects);
        }
コード例 #3
0
 public override IMapFeatureManager GetManager()
 {
     return(ObjectController.GetContext().AddComponent <HealthPointManager> ()  as IMapFeatureManager);
 }