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); }
protected ObjBox CalculateBigBox(Dictionary <String, OBJObjectBuilder> builderDict) { List <ObjBox> boxes = CalculateBoxOfChild(builderDict); ObjBox box = ObjBox.FromBoxes(boxes); return(box); }
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; } }
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; } }
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); }
public static ObjBoxComponent FromGameObject(GameObject gameObject, ObjBox objBox) { ObjBoxComponent instance = null; if (gameObject != null) { instance = gameObject.AddComponent <ObjBoxComponent>(); } instance.box = objBox; return(instance); }
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); }
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); }
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); } } }
static RacketPair getRP(ObjBox val) { return((RacketPair)val.getObj()); }
static int getVal(ObjBox val) { RacketInt rint = (RacketInt)val.getObj(); return(rint.value); }
private ObjBox recalculateBox() { box = ObjBox.FromVertices(_vertices); return(box); }