示例#1
0
    public BuiltConstructionData AddConstruction(string construct_id, string scene, Vector3 pos)
    {
        BuiltConstructionData citem = new BuiltConstructionData();

        citem.uid                      = UniqueID.GenerateUniqueID();
        citem.construction_id          = construct_id;
        citem.scene                    = scene;
        citem.pos                      = pos;
        built_constructions[citem.uid] = citem;
        return(citem);
    }
示例#2
0
    public SowedPlantData AddPlant(string plant_id, string scene, Vector3 pos, int stage)
    {
        SowedPlantData citem = new SowedPlantData();

        citem.uid               = UniqueID.GenerateUniqueID();
        citem.plant_id          = plant_id;
        citem.scene             = scene;
        citem.pos               = pos;
        citem.growth_stage      = stage;
        sowed_plants[citem.uid] = citem;
        return(citem);
    }
示例#3
0
    //-------- Dropped items --------

    public DroppedItemData AddDroppedItem(string item_id, string scene, Vector3 pos, int quantity)
    {
        DroppedItemData ditem = new DroppedItemData();

        ditem.uid                = UniqueID.GenerateUniqueID();
        ditem.item_id            = item_id;
        ditem.scene              = scene;
        ditem.pos                = pos;
        ditem.quantity           = quantity;
        dropped_items[ditem.uid] = ditem;
        return(ditem);
    }
示例#4
0
    public void Spawn()
    {
        GameObject prefab = spawn_prefabs[Random.Range(0, spawn_prefabs.Length)];
        float      radius = Random.Range(0f, spawn_radius);
        float      angle  = Random.Range(0f, 360f) * Mathf.Deg2Rad;
        Vector3    offset = new Vector3(Mathf.Cos(angle), 0f, Mathf.Sin(angle)) * radius;
        Vector3    pos    = transform.position + offset;
        GameObject obj    = Instantiate(prefab, pos, prefab.transform.rotation);

        spawn_list.Add(obj);

        if (obj.GetComponent <UniqueID>())
        {
            obj.GetComponent <UniqueID>().unique_id = UniqueID.GenerateUniqueID();
        }
    }
示例#5
0
    void OffsetObjects(UniqueID[] objs)
    {
        HashSet <string> existing_ids = new HashSet <string>();

        foreach (UniqueID uid_obj in objs)
        {
            if (uid_obj.unique_id != "")
            {
                if (existing_ids.Contains(uid_obj.unique_id))
                {
                    uid_obj.unique_id = "";
                }
                else
                {
                    existing_ids.Add(uid_obj.unique_id);
                }
            }
        }

        foreach (UniqueID uid_obj in objs)
        {
            if (uid_obj.unique_id == "")
            {
                //Generate new ID
                string new_id = "";
                while (new_id == "" || existing_ids.Contains(new_id))
                {
                    new_id = UniqueID.GenerateUniqueID();
                }

                //Add new id
                uid_obj.unique_id = uid_obj.uid_prefix + new_id;
                existing_ids.Add(new_id);
                EditorUtility.SetDirty(uid_obj);
            }
        }
        EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
    }