Ejemplo n.º 1
0
        protected GameObject BuildGameObject(Dictionary <String, OBJObjectBuilder> builderDict)
        {
            List <GameObject> objObjects = new List <GameObject>();

            foreach (var builder in builderDict)
            {
                if (builder.Value.PushedFaceCount == 0)
                {
                    continue;
                }

                var builtObj = builder.Value.Build();

                objObjects.Add(builtObj);
            }

            GameObject obj = new GameObject(/*_objInfo != null ? Path.GetFileNameWithoutExtension(_objInfo.Name) :*/ "WavefrontObject");

            obj.transform.localScale = new Vector3(-0.001f, 0.001f, 0.001f);

            foreach (var g in objObjects)
            {
                g.transform.SetParent(obj.transform, false);
            }

            ObjBox box = CalculateBigBox(builderDict);

            ObjBoxComponent.FromGameObject(obj, box);

            return(obj);
        }
Ejemplo n.º 2
0
        protected ObjBox CalculateBigBox(Dictionary <String, OBJObjectBuilder> builderDict)
        {
            List <ObjBox> boxes = CalculateBoxOfChild(builderDict);
            ObjBox        box   = ObjBox.FromBoxes(boxes);

            return(box);
        }
Ejemplo n.º 3
0
        private void redraw_gui(ObjBox board)
        {
            RacketPair rp     = getRP(board);
            int        temp   = 0;
            int        holder = 0;

            System.Drawing.Color c;

            for (int i = 0; i < 4; i++)
            {
                RacketPair row = getRP(rp.car());
                rp = getRP(rp.cdr());

                for (int j = 0; j < 4; j++)
                {
                    holder = getVal(row.car());
                    c      = num2Color(holder);
                    ((RectangleShape)this.shapeContainer1.Shapes.get_Item(temp + j)).BackColor = c;
                    labelGrid[temp + j].Text = (holder == 0) ? "" : (holder + "");
                    if (holder > 4)
                    {
                        labelGrid[temp + j].ForeColor = System.Drawing.ColorTranslator.FromHtml("#F9F6F2");
                    }
                    else
                    {
                        labelGrid[temp + j].ForeColor = System.Drawing.ColorTranslator.FromHtml("#776E65");
                    }
                    labelGrid[temp + j].BackColor = c;
                    row = getRP(row.cdr());
                }
                temp += 4;
            }
        }
Ejemplo n.º 4
0
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            List <object> obj = new List <object>();

            switch (e.KeyCode)
            {
            case Keys.W:    //up
                obj.Add((object)Board);
                Board = (ObjBox)DLL2048.move_board_up_helper(env, obj);
                // DLL2048.debug_display(env, obj);
                redraw_gui(Board);
                break;

            case Keys.A:    //left
                obj.Add((object)Board);
                Board = (ObjBox)DLL2048.move_board_left_helper(env, obj);
                //  DLL2048.debug_display(env, obj);
                redraw_gui(Board);
                break;

            case Keys.S:    //down
                obj.Add((object)Board);
                Board = (ObjBox)DLL2048.move_board_down_helper(env, obj);
                // DLL2048.net_debug_display(env, obj);
                redraw_gui(Board);
                break;

            case Keys.D:    //right
                obj.Add((object)Board);
                Board = (ObjBox)DLL2048.move_board_right_helper(env, obj);
                //  DLL2048.debug_display(env, obj);
                redraw_gui(Board);
                break;
            }
        }
Ejemplo n.º 5
0
 private void Form1_Load(object sender, EventArgs e)
 {
     this.BringToFront();
     this.Focus();
     this.KeyPreview = true;
     this.KeyDown   += new KeyEventHandler(Form1_KeyDown);
     env             = DLL2048.init();
     Board           = (ObjBox)DLL2048.init_board(env, new List <object>());
     redraw_gui(Board);
 }
Ejemplo n.º 6
0
    public static ObjBoxComponent FromGameObject(GameObject gameObject, ObjBox objBox)
    {
        ObjBoxComponent instance = null;

        if (gameObject != null)
        {
            instance = gameObject.AddComponent <ObjBoxComponent>();
        }
        instance.box = objBox;
        return(instance);
    }
Ejemplo n.º 7
0
    public static ObjBox FromBoxes(List <ObjBox> boxes)
    {
        ObjBox box = null;

        Vector3 minExtend = Vector3.zero;
        Vector3 maxExtend = Vector3.zero;

        float minimumYaxis = float.MaxValue;
        float minimumXaxis = float.MaxValue;
        float minimumZaxis = float.MaxValue;

        float maximumXaxis = float.MinValue;
        float maximumYaxis = float.MinValue;
        float maximumZaxis = float.MinValue;

        Vector3 center = Vector3.zero;

        foreach (var v in boxes)
        {
            center += v.center;
            if (minimumYaxis > v.minExtend.y)
            {
                minimumYaxis = v.minExtend.y;
            }
            if (minimumXaxis > v.minExtend.x)
            {
                minimumXaxis = v.minExtend.x;
            }
            if (minimumZaxis > v.minExtend.z)
            {
                minimumZaxis = v.minExtend.z;
            }
            if (maximumYaxis < v.maxExtend.y)
            {
                maximumYaxis = v.maxExtend.y;
            }
            if (maximumXaxis < v.maxExtend.x)
            {
                maximumXaxis = v.maxExtend.x;
            }
            if (maximumZaxis < v.maxExtend.z)
            {
                maximumZaxis = v.maxExtend.z;
            }
        }
        center   /= boxes.Count;
        minExtend = new Vector3(minimumXaxis, minimumYaxis, minimumZaxis);
        maxExtend = new Vector3(maximumXaxis, maximumYaxis, maximumZaxis);

        box = new ObjBox(center, minExtend, maxExtend);
        return(box);
    }
Ejemplo n.º 8
0
    public static ObjBox FromVertices(List <Vector3> vertices)
    {
        float minimumYaxis = float.MaxValue;
        float minimumXaxis = float.MaxValue;
        float minimumZaxis = float.MaxValue;

        float maximumYaxis = float.MinValue;
        float maximumXaxis = float.MinValue;
        float maximumZaxis = float.MinValue;

        Vector3 center = Vector3.zero;

        foreach (Vector3 v in vertices)
        {
            center += v;
            if (minimumYaxis > v.y)
            {
                minimumYaxis = v.y;
            }
            if (minimumXaxis > v.x)
            {
                minimumXaxis = v.x;
            }
            if (minimumZaxis > v.z)
            {
                minimumZaxis = v.z;
            }
            if (maximumYaxis < v.y)
            {
                maximumYaxis = v.y;
            }
            if (maximumXaxis < v.x)
            {
                maximumXaxis = v.x;
            }
            if (maximumZaxis < v.z)
            {
                maximumZaxis = v.z;
            }
        }
        center /= vertices.Count;
        Vector3 minExtend = new Vector3(minimumXaxis, minimumYaxis, minimumZaxis);
        Vector3 maxExtend = new Vector3(maximumXaxis, maximumYaxis, maximumZaxis);


        ObjBox box = new ObjBox(center, minExtend, maxExtend);

        return(box);
    }
Ejemplo n.º 9
0
    void Awake()
    {
        if (mInstance != null)
        {
            Debug.LogError("ObjBox:" + "场景中存在多个ObjBox!!!");
        }
        else
        {
            mInstance = this;
        }

        //添加无标签物体到字典
        mObjs.Add("", new Dictionary <string, GameObject>());
        foreach (var item in NoTagObjs)
        {
            mObjs[""].Add(item.name, item);
        }

        //通过标签查找物体并加入字典
        GameObject[] GameObjects;
        foreach (string tag in Tags)
        {
            mObjs.Add(tag, new Dictionary <string, GameObject>());
            GameObjects = GameObject.FindGameObjectsWithTag(tag);

            foreach (var item in GameObjects)
            {
                if (mObjs[tag].ContainsKey(item.name))
                {
                    Debug.LogError("ObjBox:" + tag + " 标签下存在同名游戏物体");
                }
                else
                {
                    mObjs[tag].Add(item.name, item);
                }
            }
        }
        //添加分组游戏物体
        foreach (ObjGroup objGroup in objGroups)
        {
            mObjs.Add(objGroup.GroupName, new Dictionary <string, GameObject>());
            foreach (var element in objGroup.elements)
            {
                mObjs[objGroup.GroupName].Add(element.name, element);
            }
        }
    }
Ejemplo n.º 10
0
 static RacketPair getRP(ObjBox val)
 {
     return((RacketPair)val.getObj());
 }
Ejemplo n.º 11
0
        static int getVal(ObjBox val)
        {
            RacketInt rint = (RacketInt)val.getObj();

            return(rint.value);
        }
Ejemplo n.º 12
0
 private ObjBox recalculateBox()
 {
     box = ObjBox.FromVertices(_vertices);
     return(box);
 }