public override void Draw(BillBoard component) { var device = GraphicDeviceFactory.Device; device.SetVertexBuffer(0, _vb, 0); device.RasterizerStack.Push(_rastState); _map.Color = component.Color; Bind(component); device.PS.SetResource(0, component.Texture); _map.World = component.GetBillboardMatrix(Engine.Scene.ActiveCamera, Current.Node.GlobalPosition, Current.Node.LocalScale); _map.WorldViewProj = _map.World * Engine.Scene.ActiveCamera.ViewProj; _map.ViewProj = Engine.Scene.ActiveCamera.ViewProj; device.PrimitiveTopology = IAPrimitive.TriangleStrip; var effect = Effect; foreach (var pass in effect.Passes()) { effect.Apply(pass); device.Draw(0, 2); } effect.EndPasses(); device.RasterizerStack.Pop(); UnBind(component); }
public static SelectedTargetTips CreateInstance() { //暂时只能创建一个 if (m_SingleInstance != null) { return(m_SingleInstance); } SelectedTargetTips TempInstance = null; if (!m_TipsTexture) { m_TipsTexture = Resources.Load(m_TexturePatch) as Texture; } if (!m_TipsTexture) { return(TempInstance); } if (null == m_TipsMaterial) { m_TipsMaterial = new Material(Shader.Find("Effect/BillBorad")); m_TipsMaterial.SetTexture("_MainTex", m_TipsTexture); } BillBoard temp = BillBoard.CreateBillBorad(32, 64, m_TipsMaterial); TempInstance = temp.gameObject.AddComponent <SelectedTargetTips>(); UnityEngine.Object.DontDestroyOnLoad(TempInstance); temp.gameObject.hideFlags = HideFlags.HideAndDontSave; m_SingleInstance = TempInstance; return(TempInstance); }
// Use this for initialization void OnValidate() { if (SpriteBoard == null) { return; } // Get the scene's directional light mainLight = GameObject.FindGameObjectWithTag("MainLight"); // Get billboard properties BillBoard bb = SpriteBoard.GetComponent <BillBoard>(); // Use billboard properties for shadow if (!bb.Flip) { targetPos = transform.position + mainLight.transform.rotation * Vector3.back; } else { targetPos = transform.position + mainLight.transform.rotation * Vector3.forward; } // Ignore camera Y position to stay upright if (bb.LockY) { targetPos.y = transform.position.y; } transform.LookAt(targetPos); // Inefficient, slowdowns with massive billboards if (bb.Rotate90) { transform.Rotate(Vector3.left, 90F); } }
public void OnMsg(EMsg msg, params object[] args) { switch (msg) { case EMsg.View_Prefab_Build: BiologyViewRoot viewRoot = (BiologyViewRoot)args[1]; m_Barrel = viewRoot.barrelController; m_BillBoard = viewRoot.billBoard; if (m_Target != null) { m_Barrel.AimTarget = m_Target; } break; case EMsg.View_Model_Destroy: if (m_TowerEffect != null && m_TowerEffect.Count > 0) { for (int i = 0; i < m_TowerEffect.Count; i++) { m_TowerEffect[i].Destroy(); } } break; default: break; } }
/// <summary> /// & LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); skyBox = new SkyBox(Content, Content.Load <TextureCube>(@"clouds"), GraphicsDevice); Components.ForEach(x => x.LoadContent(Content, GraphicsDevice)); menuManager.LoadContent(Content, GraphicsDevice); scoreFont = Content.Load <SpriteFont>(@"Instruction"); trail = new ParticleSystem(GraphicsDevice, Content.Load <Effect>("ParticleEffect"), Content.Load <Texture2D>("particle"), 100000, new Vector2(100, 100), 1f, new Vector3(rand.Next(100, 300), rand.Next(100, 300), rand.Next(100, 300)), 3f); bBase = new BillBoard(GraphicsDevice, Content.Load <Effect>(@"BillboardEffect"), Content.Load <Texture2D>(@"playerText"), new Vector2(1000, 1000), vectorArray); Models.Add(new CustomModel( Content.Load <Model>(@"PlayArea"), new Vector3(0, 0, 0), new Vector3(0, -4000, -12000), new Vector3(10000f), GraphicsDevice )); // Initilizes the Free cames cam = new FreeCamera( position: new Vector3(0, 0, 0), yaw: MathHelper.ToRadians(0), pitch: MathHelper.ToRadians(-15f), graphicsDevice: GraphicsDevice); }
void Start() { TargetFrame.OnSelectedTarget += OnSelectedTarget; TargetFrame.OnDisSelectedTarget += OnDisSelectedTarget; m_BillBoard = GetComponent <BillBoard>(); transform.gameObject.SetActive(false); }
public void Decorate(GameObject go, Asset asset, AssetBundle assetBundle) { BillBoard deco = go.GetComponent <BillBoard>() ?? go.AddComponent <BillBoard>(); deco.buildOnLayerMask = 4096; deco.buildOnGrid = asset.BuildOnGrid; deco.heightChangeDelta = asset.HeightDelta; deco.defaultGridSubdivision = asset.GridSubdivision; deco.defaultSnapToGridCenter = asset.SnapCenter; if (string.IsNullOrEmpty(asset.SubCategory)) { deco.categoryTag = asset.Category; } else { deco.categoryTag = asset.Category + "/" + asset.SubCategory; } deco.canSeeThrough = asset.SeeThrough; deco.canBlockRain = asset.BlocksRain; if (asset.IsResizable) { CustomSize customSize = go.AddComponent <CustomSize>(); customSize.minSize = asset.MinSize; customSize.maxSize = asset.MaxSize; } }
public NodeViewState(bool isLoading, BillBoard billBoard, ConcurrentDictionary <string, GetSyncStateAPIResult> NodeStatus, string ipdb) { IsLoading = isLoading; bb = billBoard; nodeStatus = NodeStatus; ipDbFn = ipdb; }
public void Init(bool isMyCharacter, int idx) { m_isMyCharacter = isMyCharacter; m_Model = transform.Find("people_face_01").gameObject; m_Model.transform.localPosition = Vector3.zero; m_Model.transform.localRotation = Quaternion.identity; m_Animator = GetComponentInChildren <Animator>(); m_Animator.enabled = false; m_animatorController = m_Animator.runtimeAnimatorController; m_CostumeComponent = Common.GetOrAddComponent <CostumeComponent>(gameObject); m_CostumeComponent.Init(); m_StackComponent = Common.GetOrAddComponent <StackComponent>(gameObject); m_StackComponent.Init(this); m_FSMCompnent = Common.GetOrAddComponent <FSMComponent>(gameObject); m_FSMCompnent.Init(this); m_InputComponent = Common.GetOrAddComponent <InputComponent>(gameObject); m_InputComponent.Init(this); OnVictory = m_StackComponent.OnVictory; if (m_BillBoard == null) { m_BillBoard = gameObject.GetComponentInChildren <BillBoard>(); } m_BillBoard.gameObject.SetActive(true); if (m_isMyCharacter) { m_MyPlayerColor = Color.green; if (PlayerPrefs.HasKey("myName")) { NickName = PlayerPrefs.GetString("myName"); } else { NickName = "Runner"; } m_BillBoard.InitProfileSprite(null); } else { m_MyPlayerColor = color[idx]; m_BillBoard.SetName(Common.strName[Random.Range(0, Common.strName.Length)]); m_BillBoard.InitProfileSprite(Common.regionName[Random.Range(0, Common.regionName.Length)]); } m_BillBoard.SetColor(m_MyPlayerColor); }
public override void Clear() { base.Clear(); if (m_BillBorad) { m_BillBorad.Clear(); m_BillBorad = null; } }
static void OnLoadHeadInfo(GameObject resObj, object parent, object fun) { if (null != resObj) { if (null != GameManager.gameManager.ActiveScene.NameBoardRoot) { resObj.transform.parent = GameManager.gameManager.ActiveScene.NameBoardRoot.transform; } resObj.transform.localPosition = Vector3.zero; resObj.transform.localRotation = Quaternion.LookRotation(Vector3.forward); BillBoard billboard = resObj.GetComponent <BillBoard>(); if (null == billboard) { billboard = resObj.AddComponent <BillBoard>(); if (null != billboard) { billboard.BindObj = parent as GameObject; } } else { billboard.BindObj = parent as GameObject; billboard.enabled = true; } //由于会复用,所以需要重新设置名字版的高度修正 if (null != billboard && null != billboard.BindObj) { Obj_OtherPlayer objOtherPlayer = billboard.BindObj.GetComponent <Obj_OtherPlayer>(); if (null != objOtherPlayer) { billboard.fDeltaHeight = objOtherPlayer.DeltaHeight + objOtherPlayer.GetMountNameBoardHeight(); } else { Obj_Character objCharacter = billboard.BindObj.GetComponent <Obj_Character>(); if (null != objCharacter) { billboard.fDeltaHeight = objCharacter.DeltaHeight; } } } LoadHeadInfoDelegate delFun = fun as LoadHeadInfoDelegate; if (null != delFun) { delFun(resObj); } } else { LogModule.ErrorLog("load headinfo fail"); } }
private string GetBalance(BillBoard bb, string accountId) { if (bb.PrimaryAuthorizers.Take(3).Contains(accountId)) { return("seed"); } var balance = bb.AllNodes[accountId].Balance; return($"{balance} Lyra"); }
/// <summary> /// 创建一个公告板 /// </summary> /// <param name="pixelWidth">像素宽</param> /// <param name="pixelHeight">像素高</param> /// <param name="mat">材质(包含纹理),同种类型的BillBoard(如血条),尽量使用同一个材质</param> /// <param name="BillBoardName">名字</param> /// <returns></returns> public static BillBoard CreateBillBorad(int pixelWidth, int pixelHeight, Material mat, string BillBoardName = "billBoard") { GameObject go = new GameObject(); go.name = BillBoardName; BillBoard bb = go.AddComponent <BillBoard>(); bb.BuildBillBoard(pixelWidth, pixelHeight, mat); return(bb); }
protected override void SyncToDb(BillBoard item) { if (!dao.Exists( string.Format("select top 1 1 from {0} where Category = @Category and CompanyName=@CompanyName and CalDate = @CalDate and ZZID = @ZZID", tableName), new { item.Category, item.RowNum, item.CompanyName, item.CalDate, item.ZZID })) { dao.Insert(tableName, item); } else { dao.Update(tableName, item, "Category", "CompanyName", "CalDate","ZZID"); } }
void init() { m_MissionBoadTime = 0; this.gameObject.GetComponent <UISprite>().spriteName = ""; m_curBillBoard = this.gameObject.transform.parent.gameObject.GetComponent <BillBoard>(); if (m_curBillBoard && m_curBillBoard.BindObj != null) { m_MissionNpc = m_curBillBoard.BindObj.GetComponent <Obj_NPC>(); } }
public override void onCreate(EntityInfo data) { base.onCreate(data); //创建姓名版 血条等.. BillBoard = this.CacheObj.AddComponent <DynamicBillBoard>(); BillBoard.onCreate(this.info); //创建技能管理器 MySkill = new SkillWidget(this, this.Skills); //partWidget this.partWidget = EntityPartMgr.create <EntityPartWidget>(this); // }
private async Task GenerateMoviesForBillBoard(BillBoard billboard, IEnumerable <GenreDTO> genresDB, IEnumerable <Core.Domain.Genre> genresForBigRooms, IEnumerable <Core.Domain.Genre> genresForSmallRooms) { var taskList = new List <Task <List <string> > >(); taskList.Add(GenerateMovies(billboard.NumberOfMoviesForBigRooms, genresDB, genresForBigRooms, RoomSize.Big)); taskList.Add(GenerateMovies(billboard.NumberOfMoviesForSmallRooms, genresDB, genresForSmallRooms, RoomSize.Small)); var resultMovies = await Task.WhenAll(taskList.ToList()).ConfigureAwait(false); billboard.MoviesForBigRooms = resultMovies[0]; billboard.MoviesForSmallRooms = resultMovies[1]; }
void OnValidate() { Vector3 targetPos; BillBoard bb = GetComponent <BillBoard>(); mainLight = GameObject.FindGameObjectWithTag("MainLight"); if (transform.parent.FindChild("shadowboard") == null) { shadowBoard = new GameObject("shadowboard"); shadowBoard.transform.position = this.transform.position; shadowBoard.transform.rotation = this.transform.rotation; shadowBoard.transform.parent = this.transform.parent; shadowBoard.isStatic = true; shadowBoard.AddComponent <MeshRenderer>(); shadowBoard.AddComponent <MeshFilter>(); } else { shadowBoard = transform.parent.FindChild("shadowboard").gameObject; } shadowBoard.GetComponent <MeshFilter>().sharedMesh = GetComponent <MeshFilter>().sharedMesh; Material mat = new Material(ShadowMaterial); mat.mainTexture = GetComponent <MeshRenderer>().sharedMaterial.mainTexture; shadowBoard.GetComponent <MeshRenderer>().sharedMaterial = mat; if (!bb.Flip) { targetPos = shadowBoard.transform.position + mainLight.transform.rotation * Vector3.back; } else { targetPos = shadowBoard.transform.position + mainLight.transform.rotation * Vector3.forward; } // Ignore camera Y position to stay upright if (bb.LockY) { targetPos.y = shadowBoard.transform.position.y; } shadowBoard.transform.LookAt(targetPos); // Inefficient, slowdowns with massive billboards if (bb.Rotate90) { shadowBoard.transform.Rotate(Vector3.left, 90F); } }
// 下马 static public void UnMount(Obj_OtherPlayer PlayerObj) { if (PlayerObj == null || PlayerObj.MountObj == null) { return; } Transform gMountPlayerTrans = PlayerObj.MountObj.gameObject.transform.FindChild("Model"); if (gMountPlayerTrans == null || gMountPlayerTrans.gameObject == null) { DestroyMount(PlayerObj.MountObj); PlayerObj.MountObj = null; return; } GameObject Obj = PlayerObj.gameObject; if (Obj != null) { gMountPlayerTrans.parent = Obj.transform; if (false == Singleton <ObjManager> .GetInstance().ReloadModel(Obj, gMountPlayerTrans.gameObject, PlayerObj.AnimationFilePath)) { return; } int mountId = PlayerObj.MountID; PlayerObj.MountObj = null; PlayerObj.MountID = -1; PlayerObj.IsNeedUnMount = false; PlayerObj.OnSwithObjAnimState(PlayerObj.CurObjAnimState); if (PlayerObj.ObjEffectController != null) { PlayerObj.ObjEffectController.OnMountOff(mountId); } // 下坐骑时名字板高度恢复 if (PlayerObj.HeadInfoBoard != null) { BillBoard billboard = PlayerObj.HeadInfoBoard.GetComponent <BillBoard>(); if (billboard != null) { billboard.RecoverHeight(); } } PlayerObj.UnMountWeapon(); } }
public void CreateBillBorad() { if (null == BloodMaterial) { BloodMaterial = new Material(Shader.Find("Effect/BillBorad")); BloodMaterial.SetTexture("_MainTex", GfxBloodMovie.BloodRenderTexture); BloodMaterial.name = "BloodMaterial"; BloodMaterial.hideFlags = HideFlags.HideAndDontSave; } if (m_BillBorad == null) { m_BillBorad = BillBoard.CreateBillBorad((int)m_MovieNode.vSize.x, (int)m_MovieNode.vSize.y, BloodMaterial, "Blood -- temp"); } }
/// <summary> /// 变换公告板 /// </summary> /// <param name="b"></param> public static void TransformBillBorad(BillBoard b) { if (null == b) { return; } Vector3 scal = Vector3.one; scal.y *= -1; scal.x = scal.x * RenderTexureScale.x; scal.y = scal.y * RenderTexureScale.y; b.StandradScale = scal; b.transform.localScale = scal; }
public void CreateBillBorad() { if (null == TopNameMaterial) { TopNameMaterial = new Material(Shader.Find("Effect/BillBorad")); TopNameMaterial.SetTexture("_MainTex", TopNameMovie.TopNameRenderTexture); TopNameMaterial.name = "TopNameMaterial"; TopNameMaterial.hideFlags = HideFlags.HideAndDontSave; } if (m_BillBorad == null) { m_BillBorad = BillBoard.CreateBillBorad((int)m_MovieNode.vSize.x, (int)m_MovieNode.vSize.y, TopNameMaterial, "TopName -- temp"); } }
public SpecialLevel(int roomNumber, string name, bool saved = false) { drawSaveText = saved; firstTime = true; //Adding the player and grid player = new Player(Vector3.Zero); player.Parent = this; tileGrid = LoadLevel(name); tileGrid.Parent = this; gameObjects.Add(tileGrid); player.LoadContent(); gameObjects.Add(player); //Setting the roomcounter roomCounter = new TextGameObject("text"); roomCounter.text = roomNumber.ToString(); //Adding the hanging man if (roomCounter.text == "100") { BillBoard man = new BillBoard(new Vector3(700, 210, 200)); man.Parent = this; gameObjects.Add(man); } if (drawSaveText) { saveText = new TextGameObject("text"); saveText.text = "Progress Saved"; saveText.Position = new Vector2((GameEnvironment.Screen.X - saveText.Size.X) / 2, 0); } if (name == "Content\\Special Levels\\Final.txt") { exitText.text = "Press E to kill yourself"; } else { exitText.text = "Press E to proceed"; } //Adding the roomcounter gameObjects.Add(roomCounter); //Adding stamina stamina = new Stamina(); stamina.Parent = this; gameObjects.Add(stamina); }
private void BillBoardCommandExecute(BillBoard obj) { if (obj == null) { return; } if (obj.Id != 0) { var parmater = new NavigationParameters(); parmater.Add(IndirectView.IndirectViewModelBase.NavigationIdParmmeterName, obj.Id); this._navigationService.RequestNavigate(Settings.Default.RegionName, nameof(PlayListDetailView), parmater); } else { this._navigationService.RequestNavigate(Settings.Default.RegionName, nameof(TopArtistsBillBoardView)); } }
private BaseActionResult GetBillBoardDictionaryData() { DataSetActionResult result = new DataSetActionResult(); BillBoard billBoard = new BillBoard(); DataSet myDataSet = billBoard.GetBillBoardDictionaryData(); if (myDataSet != null && myDataSet.Tables != null && myDataSet.Tables.Count != 0) { result.DataSetData = myDataSet; result.Result = true; } else { result.Result = false; } return(result); }
private BaseActionResult GetAllNotesInDB(string userguid, string roleName) { DataSetActionResult result = new DataSetActionResult(); BillBoard billBoard = new BillBoard(); DataSet myDataSet = billBoard.GetAllNotesInDB(userguid, roleName); if (myDataSet != null && myDataSet.Tables != null && myDataSet.Tables.Count == 2) { result.DataSetData = myDataSet; result.Result = true; } else { result.Result = false; } return(result); }
public SpecialLevel(int roomNumber, string name, bool saved = false) { drawSaveText = saved; firstTime = true; //Adding the player and grid player = new Player(Vector3.Zero); player.Parent = this; tileGrid = LoadLevel(name); tileGrid.Parent = this; gameObjects.Add(tileGrid); player.LoadContent(); gameObjects.Add(player); //Setting the roomcounter roomCounter = new TextGameObject("text"); roomCounter.text = roomNumber.ToString(); //Adding the hanging man if (roomCounter.text == "100") { BillBoard man = new BillBoard(new Vector3(700, 210, 200)); man.Parent = this; gameObjects.Add(man); } if (drawSaveText) { saveText = new TextGameObject("text"); saveText.text = "Progress Saved"; saveText.Position = new Vector2((GameEnvironment.Screen.X - saveText.Size.X) / 2, 0); } if (name == "Content\\Special Levels\\Final.txt") exitText.text = "Press E to kill yourself"; else exitText.text = "Press E to proceed"; //Adding the roomcounter gameObjects.Add(roomCounter); //Adding stamina stamina = new Stamina(); stamina.Parent = this; gameObjects.Add(stamina); }
void OnLoadNameBoard(GameObject objNameBoard) { m_HeadInfoBoard = objNameBoard; //传送点名字版固定太高一个高度 if (null != m_HeadInfoBoard) { Transform nameBoardOffset = m_HeadInfoBoard.transform.FindChild("NameBoardOffset"); if (null != nameBoardOffset) { Transform nameBoard = nameBoardOffset.FindChild("NameBoard"); if (null != nameBoard) { m_NameBoard = nameBoard.gameObject; } } BillBoard billboardScript = m_HeadInfoBoard.GetComponent <BillBoard>(); if (null != billboardScript) { billboardScript.fDeltaHeight = 1.5f; } } //传送点名字 if (null != m_NameBoard) { UILabel nameBoardLabel = m_NameBoard.GetComponent <UILabel>(); if (null != nameBoardLabel) { Tab_Teleport teleport = TableManager.GetTeleportByID(TeleportID, 0); if (null != teleport) { nameBoardLabel.text = teleport.TeleportName; nameBoardLabel.color = CharacterDefine.NPC_COLOR_NEUTRAL; } else { nameBoardLabel.text = ""; } } } }
void CreateObject() { // Are we a weapon? if (itemType.GetType() == typeof(Weapon)) { Weapon weapon = (Weapon)itemType; // Do we have a mesh collider? if (GetComponent <MeshCollider>()) { GetComponent <MeshCollider>().sharedMesh = weapon.meshCollider; } else { gameObject.AddComponent <MeshCollider>(); GetComponent <MeshCollider>().sharedMesh = weapon.meshCollider; } } else { GetComponent <MeshCollider>().sharedMesh = Resources.GetBuiltinResource(typeof(Mesh), "Cube.fbx") as Mesh; } // Get the Renderer SpriteRenderer r = GetComponentInChildren <SpriteRenderer>(); if (itemType == null || r == null) { return; } r.sprite = itemType.Graphic; // Set specular or diffuse r.sharedMaterial = itemType.SpriteMaterial; // Scale the sprite r.gameObject.transform.localScale = itemType.Scale; // Handle billboarding BillBoard bb = r.gameObject.GetComponent <BillBoard>(); bb.enabled = itemType.billboard; }
public void Reset() { modelController = PEUtil.GetCmpt <PEModelController>(transform); ragdollController = PEUtil.GetCmpt <PERagdollController>(transform); ikArray = PEUtil.GetCmpts <IK>(transform); ikFlashLight = PEUtil.GetCmpt <IKFlashLight>(transform); fbbik = PEUtil.GetCmpt <FullBodyBipedIK>(transform); grounderFBBIK = PEUtil.GetCmpt <GrounderFBBIK>(transform); humanPhyCtrl = PEUtil.GetCmpt <HumanPhyCtrl>(transform); ikAimCtrl = PEUtil.GetCmpt <IKAimCtrl>(transform); ikAnimEffectCtrl = PEUtil.GetCmpt <IKAnimEffectCtrl>(transform); ikDrive = PEUtil.GetCmpt <IKDrive>(transform); defenceTrigger = PEUtil.GetCmpt <PEDefenceTrigger>(transform); pathFinder = PEUtil.GetCmpt <PEPathfinder>(transform); motor = PEUtil.GetCmpt <PEMotor>(transform); steerAgent = PEUtil.GetCmpt <Steer3D.SteerAgent>(transform); animFollow_AF = PEUtil.GetCmpt <AnimFollow_AF>(transform); beatParam = PEUtil.GetCmpt <BeatParam>(transform); moveParam = PEUtil.GetCmpt <MoveParam>(transform); barrelController = PEUtil.GetCmpt <PEBarrelController>(transform); billBoard = PEUtil.GetCmpt <BillBoard>(transform); armorBones = PEUtil.GetCmpt <ArmorBones>(transform); visions = PEUtil.GetCmpts <PEVision>(transform); hears = PEUtil.GetCmpts <PEHearing>(transform); native = PEUtil.GetCmpt <PENative>(transform); monster = PEUtil.GetCmpt <PEMonster>(transform); if (null != modelController) { modelController.ResetModelInfo(); } if (null != animFollow_AF) { animFollow_AF.ResetModelInfo(); } if (null != ragdollController) { ragdollController.ResetRagdoll(); } }
public static void UnLoadHeadInfoPrefab(GameObject headInfo) { if (null == headInfo) { return; } BillBoard billboard = headInfo.GetComponent <BillBoard>(); if (null != billboard) { billboard.BindObj = null; billboard.enabled = false; } //在池子中置为未使用 if (null != GameManager.gameManager.ActiveScene && null != GameManager.gameManager.ActiveScene.NameBoardPool) { GameManager.gameManager.ActiveScene.NameBoardPool.Remove(headInfo); } }
public void BillDelegation(BillBoard bb) { bb(); }
public virtual void onCreateEnd() { //创建姓名版 血条等.. BillBoard = this.CacheObj.AddComponent <CrystalBillBoard>(); BillBoard.onCreate(this.info); }
//Action<> blah(); public void RunDelegate(MessageBoard mb, BillBoard bb) { Console.WriteLine(mb()); bb(); }