protected void PlaceSelectedSchema(Vector2Int aPos, Schema.EntitySchema aEntitySchema) { if (GM.boardManager.IsRectEmpty(aPos, aEntitySchema.size, null, aEntitySchema.isFront)) { GM.boardManager.AddEntityFromSchema(aEntitySchema, aPos, Constants.DEFAULTFACING, Constants.DEFAULTCOLOR); } }
protected void AddSchema(Vector2Int aPos, Schema.EntitySchema aEntitySchema) { if (GM.boardManager.IsPosInBoard(aPos) && GM.boardManager.CanEditorPlaceSchema(aPos, aEntitySchema)) { GM.boardManager.AddEntityFromSchema(aEntitySchema, aPos, Constants.DEFAULTFACING, Constants.DEFAULTCOLOR); } }
public void Update() { if (GM.editManager.currentState.selectedSchema != null) { Schema.EntitySchema selectedSchema = GM.editManager.currentState.selectedSchema; if (GM.inputManager.mouseState == MouseStateEnum.CLICKED) { GM.editManager.AddSchema(GM.inputManager.mousePosV2, selectedSchema); } if (GM.inputManager.rightMouseState == MouseStateEnum.CLICKED) { GM.editManager.ClearSelectedSchema(); } } else { switch (GM.inputManager.mouseState) { case MouseStateEnum.DEFAULT: break; case MouseStateEnum.CLICKED: EntityState?clickedEntity = GM.boardManager.GetEntityAtMousePos(GM.editManager.currentState.isFront); // if clickedEntityExists and is not a boundary if (clickedEntity?.isBoundary == false) { // select this entity in state and store the entityBase locally EntityState selectedEntity = clickedEntity.Value; GM.editManager.SetSelectedEntity(selectedEntity.id); this.selectedEntityBase = selectedEntity.entityBase; } else { if (GM.editManager.currentState.hasSelectedEntity) { GM.editManager.ClearSelectedEntity(); } } break; case MouseStateEnum.HELD: if (GM.editManager.currentState.hasSelectedEntity) { Vector2Int newPos = GM.editManager.GetSelectedEntity().pos + GM.inputManager.dragOffsetV2; this.selectedEntityBase.SetTempViewPosition(newPos); } break; case MouseStateEnum.RELEASED: if (GM.editManager.currentState.hasSelectedEntity) { EntityState selectedEntity = GM.editManager.GetSelectedEntity(); Vector2Int newPos = selectedEntity.pos + GM.inputManager.dragOffsetV2; // if entity can move if (GM.editManager.CanMoveTo(newPos, selectedEntity)) { // move this entity GM.boardManager.MoveEntity(selectedEntity.id, newPos, true); } else { selectedEntity.entityBase.ResetView(); } } if (GM.editManager.currentState.hasSelectedEntity) { GM.editManager.ClearSelectedEntity(); } this.selectedEntityBase = null; break; default: throw new ArgumentOutOfRangeException(); } } }
public void SetSelectedSchema(Schema.EntitySchema aEntitySchema) { EditorState newEditorState = EditorState.SetSelectedSchema(this.currentState, aEntitySchema); UpdateEditorState(newEditorState); }