public static StatementBlock LoadChildBlocks(XmlElement element, BlockEditor blockEditor) { XmlNodeList blockElements = element.SelectNodes("Block"); if (blockElements.Count <= 0) { return(null); } var firstBlock = LoadBlock(blockElements[0] as XmlElement, blockEditor) as StatementBlock; var prevBlock = firstBlock; for (int i = 1; i < blockElements.Count; i++) { if (prevBlock is PrevStatementBlock) { var block = LoadBlock(blockElements[i] as XmlElement, blockEditor) as StatementBlock; (prevBlock as PrevStatementBlock).NextConnectHole.StatementBlock = block; prevBlock = block; } else { throw new Exception("Statement를 붙일 수 없습니다."); } } return(firstBlock); }
public override void OnInspectorGUI() { DrawBlockSet(blockSet); EditorGUILayout.Separator(); if (selectedBlock != null) { BlockEditor.DrawBlockEditor(selectedBlock, blockSet); if (materialEditor == null || materialEditor.target != selectedBlock.Material) { materialEditor = (MaterialEditor)CreateEditor(selectedBlock.Material); } if (materialEditor != null) { materialEditor.DrawHeader(); materialEditor.OnInspectorGUI(); } } if (GUI.changed) { EditorUtility.SetDirty(blockSet); } }
private void OnGUI() { if (Block != null) { BlockEditor.DrawBlockEditor(Block); } }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { var functionName = element.GetAttribute("FunctionName"); var block = new FunctionBlock(new GFunction(functionName)); return(block); }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { var command = BlockUtils.LoadGCommand(element); var block = new EventBlock(command); return(block); }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { var friendlyName = element.GetAttribute("FriendlyName"); var variableName = element.GetAttribute("VariableName"); return(new VariableBlock(friendlyName, new GVariable(variableName))); }
public override void OnInspectorGUI() { EditorGUIUtility.LookLikeControls(); Mode oldMode = mode; mode = (Mode)BlockEditorUtils.Toolbar(mode); EditorGUILayout.Separator(); if (mode != oldMode) { EditorGUIUtility.keyboardControl = 0; } if (mode == Mode.AtlasSet) { DrawAtlasesList(blockSet); if (blockSet.GetAtlas(selectedAtlas) != null) { DrawAtlasEditor(blockSet.GetAtlas(selectedAtlas)); } } if (mode == Mode.BlockSet) { DrawBlockSet(blockSet); EditorGUILayout.Separator(); if (blockSet.GetBlock(selectedBlock) != null) { BlockEditor.DrawBlockEditor(blockSet.GetBlock(selectedBlock), blockSet); } } if (mode == Mode.XML) { if (oldMode != mode) { xml = blockSet.Data; } xmlScrollPosition = GUILayout.BeginScrollView(xmlScrollPosition); GUIStyle style = new GUIStyle(GUI.skin.box); style.alignment = TextAnchor.UpperLeft; xml = EditorGUILayout.TextArea(xml, GUILayout.ExpandWidth(true)); blockSet.Data = xml; GUILayout.EndScrollView(); if (GUILayout.Button("Import")) { OCBlockSetImport.Import(blockSet, blockSet.Data); GUI.changed = true; } } if (GUI.changed) { string data = BlockSetExport.Export(blockSet); blockSet.Data = data; EditorUtility.SetDirty(blockSet); } }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { LengthBlock block = new LengthBlock(); XmlNode node = element.SelectSingleNode("Holes/Hole/Block"); block.StringHole1.StringBlock = LoadBlock(node as XmlElement, blockEditor) as ObjectBlock; return(block); }
public bool Publish(string part, int index) { Log.Add($"try to publish #{index} on '{part}'"); if (!new MultiPermissionsApp(BlockBuilder, App.AppId, Log).EnsureAll(GrantSets.WritePublished, out var exp)) { throw exp; } return(BlockEditor.Publish(part, index)); }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { var block = new LoopInfinityBlock(); XmlNode childList = element.SelectSingleNode("ChildBlocks"); block.ChildConnectHole.StatementBlock = LoadChildBlocks(childList as XmlElement, blockEditor); return(block); }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { var block = new SetBlock(); XmlNodeList nodeList = element.SelectNodes("Holes/Hole"); block.SettableObjectHole.SettableObjectBlock = LoadBlock(nodeList[0].SelectSingleNode("Block") as XmlElement, blockEditor) as SettableObjectBlock; block.ObjectHole.ObjectBlock = LoadBlock(nodeList[1].SelectSingleNode("Block") as XmlElement, blockEditor) as ObjectBlock; return(block); }
public void OnDrag(PointerEventData eventData) { if (Input.touchCount < 2 && !_draggingBlock) { _camera.transform.position -= _camera.ScreenToWorldPoint(eventData.delta) - _camera.ScreenToWorldPoint(Vector3.zero); } if (eventData.button == PointerEventData.InputButton.Left && Input.touchCount < 2) { BlockEditor.OnBlockDrag(); } }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { StringCatBlock block = new StringCatBlock(); XmlNodeList elementList = element.SelectNodes("Holes/Hole"); block.StringHole1.StringBlock = LoadBlock(elementList[0].SelectSingleNode("Block") as XmlElement, blockEditor) as ObjectBlock; block.StringHole2.StringBlock = LoadBlock(elementList[1].SelectSingleNode("Block") as XmlElement, blockEditor) as ObjectBlock; return(block); }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { double number; var constNumber = element.GetAttribute("Number"); if (!double.TryParse(constNumber, out number)) { number = 0; } return(new NumberConstBlock(number)); }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { var block = new LoopNBlock(); XmlNode node = element.SelectSingleNode("Holes/Hole/Block"); block.NumberHole.NumberBlock = LoadBlock(node as XmlElement, blockEditor) as ObjectBlock; XmlNode childList = element.SelectSingleNode("ChildBlocks"); block.ChildConnectHole.StatementBlock = LoadChildBlocks(childList as XmlElement, blockEditor); return(block); }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { GCommand command = BlockUtils.LoadGCommand(element); ObjectCallBlock block = new ObjectCallBlock(command); XmlNodeList elementList = element.SelectNodes("Holes/Hole"); for (int i = 0; i < block.HoleList.Count; i++) { BlockUtils.ConnectToHole(block.HoleList[i], LoadBlock(elementList[i].SelectSingleNode("Block") as XmlElement, blockEditor)); } return(block); }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { GCommand command = BlockUtils.LoadGCommand(element); VoidCallBlock block = new VoidCallBlock(command); XmlNodeList elementList = element.SelectNodes("Holes/Hole"); var holeList = block.HoleList.Where(e => !(e is NextConnectHole)); for (int i = 0; i < holeList.Count(); i++) { BlockUtils.ConnectToHole(block.HoleList[i], LoadBlock(elementList[i].SelectSingleNode("Block") as XmlElement, blockEditor)); } return(block); }
public void OnBeginDrag(PointerEventData eventData) { if (eventData.button != PointerEventData.InputButton.Left || Input.touchCount > 1) { return; } _dragging = true; Utils.GetInputCoords(out var x, out var y); if (FieldMatrix.Get(x, y, out _draggedBlock)) { _draggingBlock = true; _draggedBlock.logic.BeginDrag(eventData); BlockEditor.OnBlockDragStart(_draggedBlock); } }
public void OnEndDrag(PointerEventData eventData) { if (eventData.button != PointerEventData.InputButton.Left || Input.touchCount > 1) { return; } _dragging = false; _draggingBlock = false; BlockEditor.OnBlockDragEnd(); if (_draggedBlock != null) { _draggedBlock.logic.EndDrag(eventData); } }
public static BaseBlock LoadBlock(XmlElement element, BlockEditor blockEditor) { if (element == null) { return(null); } var blockTypeString = element.GetAttribute("BlockType"); var blockType = Type.GetType(blockTypeString); var baseBlock = blockType.GetMethod("LoadBlockFromXml")?.Invoke(null, new object[] { element, blockEditor }) as BaseBlock; blockEditor.AddBlock(baseBlock); blockEditor.DetachFromCanvas(baseBlock); return(baseBlock); }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { var block = new IfElseBlock(); XmlNode node = element.SelectSingleNode("Holes/Hole/Block"); block.LogicHole.LogicBlock = LoadBlock(node as XmlElement, blockEditor) as ObjectBlock; XmlNode childList = element.SelectSingleNode("IfChildBlocks"); block.IfChildConnectHole.StatementBlock = LoadChildBlocks(childList as XmlElement, blockEditor); childList = element.SelectSingleNode("ElseChildBlocks"); block.ElseChildConnectHole.StatementBlock = LoadChildBlocks(childList as XmlElement, blockEditor); return(block); }
public void DecodeLevel(ABLevel level) { foreach (OBjData gameObj in level.pigs) { Vector2 pos = new Vector2(gameObj.x, gameObj.y); Quaternion rotation = Quaternion.Euler(0, 0, gameObj.rotation); GameObject pig = InstantiateGameObject(ABWorldAssets.PIGS[gameObj.type]); pig.transform.parent = GameObject.Find("Blocks").transform; pig.transform.position = pos; pig.transform.rotation = rotation; } _birdsAdded = 0; foreach (BirdData gameObj in level.birds) { CreateBird(gameObj.type); _birdsAdded++; } foreach (BlockData gameObj in level.blocks) { Vector2 pos = new Vector2(gameObj.x, gameObj.y); Quaternion rotation = Quaternion.Euler(0, 0, gameObj.rotation); GameObject block = InstantiateGameObject(ABWorldAssets.BLOCKS[gameObj.type]); block.transform.parent = GameObject.Find("Blocks").transform; block.transform.position = pos; block.transform.rotation = rotation; MATERIALS material = (MATERIALS)Enum.Parse(typeof(MATERIALS), gameObj.material); BlockEditor.UpdateBlockMaterial(block.GetComponent <ABBlock>(), material); } foreach (OBjData gameObj in level.platforms) { Vector2 pos = new Vector2(gameObj.x, gameObj.y); Quaternion rotation = Quaternion.Euler(0, 0, gameObj.rotation); GameObject platform = InstantiateGameObject(ABWorldAssets.PLATFORM); platform.transform.parent = GameObject.Find("Platforms").transform; platform.transform.position = pos; platform.transform.rotation = rotation; } }
public static CurrentEditState GetCurrentEditState(DocumentModifier docMdf) { var blkTb = docMdf.acTransaction.GetObject(docMdf.acDataBase.BlockTableId, OpenMode.ForRead) as BlockTable; EditState state;; if (docMdf.acDataBase.TileMode) { // Model布局是活动的,且你正工作在ModelSpace(可能是文档模型空间,也可能是块编辑器或块的在位编辑空间) state = EditState.InModel; var btr = docMdf.acTransaction.GetObject(blkTb[BlockTableRecord.ModelSpace], OpenMode.ForRead) as BlockTableRecord; // 判断是否在块编辑器中编辑某一个对象 var be = new BlockEditor(); bool inBlockEditorMode = be.IsInBlockEditor; // 当前界面是否位于块编辑模式 if (inBlockEditorMode) { var btrName = be.BlockName; // 当前正在编辑的块定义的名称 state = EditState.InBlockEditor; } return(new CurrentEditState(blkTb, btr, state)); } else { var nCurVport = (Int16)(Autodesk.AutoCAD.ApplicationServices.Core.Application.GetSystemVariable("CVPORT")); if (nCurVport == 2) { // Model之外的布局是活动的,且你正工作在浮动视口。 state = EditState.InViewport; var btr = docMdf.acTransaction.GetObject(blkTb[BlockTableRecord.ModelSpace], OpenMode.ForRead) as BlockTableRecord; return(new CurrentEditState(blkTb, btr, state)); } else { // Model之外的布局是活动的,且你正工作在图纸空间。 state = EditState.InLayout; var layouts = docMdf.acDataBase.LayoutDictionaryId.GetObject(OpenMode.ForRead) as DBDictionary; var lo = docMdf.acTransaction.GetObject(layouts.GetAt(LayoutManager.Current.CurrentLayout), OpenMode.ForRead) as Layout; var btr = docMdf.acTransaction.GetObject(lo.BlockTableRecordId, OpenMode.ForRead) as BlockTableRecord; return(new CurrentEditState(blkTb, btr, state)); } } }
private void BaseBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { var block = sender as VariableBlock; var copiedBlock = Activator.CreateInstance(block.GetType(), new object[] { block.FriendlyName, block.GVariable }) as BaseBlock; BlockEditor.AddBlock(copiedBlock); var masterPosition = e.GetPosition(BlockEditor.Master); var blockPosition = e.GetPosition(block as BaseBlock); copiedBlock.Position = new Point { X = masterPosition.X - blockPosition.X, Y = masterPosition.Y - blockPosition.Y }; BlockEditor.StartBlockMove(copiedBlock, blockPosition); e.Handled = true; }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { ControlPropertyBlock block = new ControlPropertyBlock(); var controlName = element.GetAttribute("SelectedControlName"); var eventName = element.GetAttribute("SelectedEventName"); if (controlName.Length > 0) { var control = blockEditor.GControlList[controlName]; block.ControlName.SelectedItem = control; if (eventName.Length > 0) { var evt = control.Exports.Where(e => e.FullName == eventName); block.EventName.SelectedItem = evt; } } return(block); }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { GateBlock block; GGate.GateType gateType; var gateTypeString = element.GetAttribute("Gate"); if (Enum.TryParse(gateTypeString, out gateType)) { block = new GateBlock(gateType); } block = new GateBlock(); XmlNodeList elementList = element.SelectNodes("Holes/Hole"); block.LogicHole1.LogicBlock = LoadBlock(elementList[0].SelectSingleNode("Block") as XmlElement, blockEditor) as ObjectBlock; block.LogicHole2.LogicBlock = LoadBlock(elementList[1].SelectSingleNode("Block") as XmlElement, blockEditor) as ObjectBlock; return(block); }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { ComputeBlock block; GCompute.OperatorType operatorType; var gateTypeString = element.GetAttribute("Gate"); if (!Enum.TryParse(gateTypeString, out operatorType)) { operatorType = GCompute.OperatorType.PLUS; } block = new ComputeBlock(operatorType); XmlNodeList elementList = element.SelectNodes("Holes/Hole"); block.NumberHole1.NumberBlock = LoadBlock(elementList[0].SelectSingleNode("Block") as XmlElement, blockEditor) as ObjectBlock; block.NumberHole2.NumberBlock = LoadBlock(elementList[1].SelectSingleNode("Block") as XmlElement, blockEditor) as ObjectBlock; return(block); }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { ControlEventBlock block = new ControlEventBlock(); block.BlockEditor = blockEditor; var controlName = element.GetAttribute("SelectedControlName"); var eventName = element.GetAttribute("SelectedEventName"); if (controlName.Length > 0) { var control = blockEditor.GControlList[controlName]; block.ControlName.SelectedItem = control; var evtList = control.Exports.Where(e => e.ObjectType == typeof(void)); var evt = evtList.Where(e => e.FullName == eventName).First(); if (eventName.Length > 0) { block.EventName.SelectedItem = evt; } } return(block); }
public static BaseBlock LoadBlockFromXml(XmlElement element, BlockEditor blockEditor) { CompareBlock block; GCompare.ConditionType conditionType; var conditionTypeString = element.GetAttribute("Condition"); if (Enum.TryParse(conditionTypeString, out conditionType)) { block = new CompareBlock(conditionType); } else { block = new CompareBlock(); } XmlNodeList elementList = element.SelectNodes("Holes/Hole"); block.ObjectHole1.ObjectBlock = LoadBlock(elementList[0].SelectSingleNode("Block") as XmlElement, blockEditor) as ObjectBlock; block.ObjectHole2.ObjectBlock = LoadBlock(elementList[1].SelectSingleNode("Block") as XmlElement, blockEditor) as ObjectBlock; return(block); }
void OnGUI() { EditorGUILayout.BeginHorizontal(); _birdsOps = (BIRDS)EditorGUILayout.EnumPopup("", _birdsOps); if (GUILayout.Button("Create Bird", GUILayout.Width(80), GUILayout.Height(20))) { CreateBird(_birdsOps.ToString()); } EditorGUILayout.EndVertical(); // Pigs section EditorGUILayout.BeginHorizontal(); _pigsOps = (PIGS)EditorGUILayout.EnumPopup("", _pigsOps); if (GUILayout.Button("Create Pig", GUILayout.Width(80), GUILayout.Height(20))) { GameObject pig = InstantiateGameObject(ABWorldAssets.PIGS[_pigsOps.ToString()]); pig.transform.parent = GameObject.Find("Blocks").transform; } EditorGUILayout.EndVertical(); // Blocks section EditorGUILayout.BeginHorizontal(); _blocksOps = (BLOCKS)EditorGUILayout.EnumPopup("", _blocksOps); _material = (MATERIALS)EditorGUILayout.EnumPopup("", _material); if (GUILayout.Button("Create Block", GUILayout.Width(80), GUILayout.Height(20))) { GameObject block = InstantiateGameObject(ABWorldAssets.BLOCKS[_blocksOps.ToString()]); block.transform.parent = GameObject.Find("Blocks").transform; BlockEditor.UpdateBlockMaterial(block.GetComponent <ABBlock>(), _material); } EditorGUILayout.EndHorizontal(); if (GUILayout.Button("Create Platform")) { GameObject platform = InstantiateGameObject(ABWorldAssets.PLATFORM); platform.transform.parent = GameObject.Find("Platforms").transform; } EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Load Level")) { LoadLevel(); } if (GUILayout.Button("Save Level")) { SaveLevel(); } if (GUILayout.Button("Delete Level")) { if (EditorUtility.DisplayDialog("Delete Level", "Are you sure you want to delete this level?", "Yes", "Cancel")) { CleanLevel(); } } if (GUILayout.Button("New Level")) { if (EditorUtility.DisplayDialog("Create New Level", "Are you sure you want to create a new level? This operation will " + "not save the current level in the scene", "Yes", "Cancel")) { CleanLevel(); Vector3 landscapePos = ABWorldAssets.LANDSCAPE.transform.position; GameObject landscape = InstantiateGameObject(ABWorldAssets.LANDSCAPE); landscape.transform.position = landscapePos; landscape.transform.parent = GameObject.Find("GameWorld").transform; Vector3 backgroundPos = ABWorldAssets.BACKGROUND.transform.position; GameObject background = InstantiateGameObject(ABWorldAssets.BACKGROUND); background.transform.position = backgroundPos; background.transform.parent = GameObject.Find("Camera").transform; GameObject slingshot = InstantiateGameObject(ABWorldAssets.SLINGSHOT); slingshot.transform.position = ABConstants.SLING_STANDARD_POS; slingshot.transform.parent = GameObject.Find("GameWorld").transform; GameObject.Find("Camera").GetComponent <ABGameplayCamera> ()._maxWidth = ABConstants.CAMERA_STANDARD_MAX_WIDTH; GameObject.Find("Camera").GetComponent <ABGameplayCamera> ()._minWidth = ABConstants.CAMERA_STANDARD_MIN_WIDTH; } } EditorGUILayout.EndHorizontal(); }