public override async Task <bool> SetInitializer(CRenderContext rc, GamePlay.IEntity host, GamePlay.Component.IComponentContainer hostContainer, GComponentInitializer v) { if (await base.SetInitializer(rc, host, hostContainer, v) == false) { return(false); } mMeshComponent = new GamePlay.Component.GMeshComponent(); var meshCompInit = new GamePlay.Component.GMeshComponent.GMeshComponentInitializer(); meshCompInit.SpecialName = "VisualMesh"; meshCompInit.MeshName = CEngineDesc.PlayerStartMesh; await mMeshComponent.SetInitializer(rc, Host, Host, meshCompInit); //var mat = host.Placement.WorldMatrix; //mMeshComponent.OnUpdateDrawMatrix(ref mat); AgentGeomBoxInitializer = v as AgentGeomBoxComponentInitializer; if (AgentGeomBoxInitializer != null) { AgentGridSize = AgentGeomBoxInitializer.AgentGridSize; StartPos = AgentGeomBoxInitializer.StartPos; } else { AgentGeomBoxInitializer = new AgentGeomBoxComponentInitializer(); } return(true); }
public override async Task <bool> SetInitializer(CRenderContext rc, GamePlay.IEntity host, GamePlay.Component.IComponentContainer hostContainer, GComponentInitializer v) { if (!await base.SetInitializer(rc, host, hostContainer, v)) { return(false); } Host.IsNavgation = true; return(true); }
public override async Task <bool> SetInitializer(CRenderContext rc, GamePlay.IEntity host, IComponentContainer hostContainer, GComponentInitializer v) { await base.SetInitializer(rc, host, hostContainer, v); var actor = CreateCPhyActor(Host, hostContainer, v); var init = v as GPhysicsSphereCollisionInitialize; mRadius = init.Radius; RefreshShape(); return(true); }
//public override void Tick(GPlacementComponent placement) //{ // base.Tick(placement); //} public override async Task <bool> SetInitializer(CRenderContext rc, GamePlay.IEntity host, IComponentContainer hostContainer, GComponentInitializer v) { var init = v as GMeshComponentInitializer; if (init == null) { return(false); } if (ParticleModifier != null) { if (ParticleModifier.ParticleSys.IsBillBoard && ParticleModifier.ParticleSys.BillBoardType != CGfxParticleSystem.BILLBOARDTYPE.BILLBOARD_DISABLE) { init.MeshName = RName.GetRName("@createplane"); } else { init.MeshName = ParticleModifier.ParticleSys.UseMeshRName; } } //设置默认值 if (init.MeshName == null) { init.MeshName = RName.GetRName("ParticleResource/models/sphere.gms"); } if (false == await base.SetInitializer(rc, host, hostContainer, v)) { return(false); } Host = host as GActor; if (ParticleModifier != null && ParticleModifier.ParticleSys.UseMaterialRName != null) { if (mSceneMesh != null && mSceneMesh.MtlMeshArray != null) { //await SetMaterialInstance(rc, 0, ParticleModifier.ParticleSys.UseMaterialRName, null); var mtl = await CEngine.Instance.MaterialInstanceManager.GetMaterialInstanceAsync(rc, ParticleModifier.ParticleSys.UseMaterialRName); base.SetMaterialInstance(rc, 0, mtl, null); } } if (ParticleModifier != null && this.SceneMesh != null) { this.SceneMesh.MdfQueue.AddModifier(ParticleModifier); this.AddDefaultColorBuff(rc, this.SceneMesh.MeshPrimitives); } return(true); }
public override async Task <bool> SetInitializer(CRenderContext rc, GamePlay.IEntity host, IComponentContainer hostContainer, GComponentInitializer v) { var init = v as GParticleComponentInitializer; if (init == null) { return(false); } mParticleModifier = new Particle.CGfxParticleModifier(); var sys = mParticleModifier.ParticleSys; sys.Effector = CEngine.Instance.MacrossDataManager.NewObjectGetter <McParticleEffector>(init.MacrossName); if (sys.Effector != null) { await sys.Effector.Get(false).InitSystem(sys, host as GamePlay.Actor.GActor, this, init); } //default.. if (init.MeshName == null) { init.MeshName = RName.GetRName("ParticleResource/models/sphere.gms"); } if (false == await base.SetInitializer(rc, host, hostContainer, v)) { return(false); } sys.HostActor = Host; if (sys.UseMaterialRName != null) { await SetMaterialInstance(rc, 0, sys.UseMaterialRName, null); } if (this.SceneMesh != null && this.SceneMesh.MdfQueue != null) { this.SceneMesh.MdfQueue.AddModifier(mParticleModifier); } //Box { BoundingBox.Merge(ref Host.LocalBoundingBox, ref sys.AABB.Box, out Host.LocalBoundingBox); OnUpdateDrawMatrix(ref Host.Placement.mDrawTransform); } return(true); }
public override async Task <bool> SetInitializer(CRenderContext rc, GamePlay.IEntity host, GamePlay.Component.IComponentContainer hostContainer, GComponentInitializer v) { if (!await base.SetInitializer(rc, host, hostContainer, v)) { return(false); } if (mLineMeshComponent == null) { await base.InitDrawMesh(); mLineMeshComponent.Entity = host; var mat = Host.Placement.WorldMatrix; mLineMeshComponent.OnUpdateDrawMatrix(ref mat); } return(true); }
public override async Task <bool> SetInitializer(CRenderContext rc, GamePlay.IEntity host, IComponentContainer hostContainer, GComponentInitializer v) { await base.SetInitializer(rc, host, hostContainer, v); var nvInit = v as CNavMeshComponentInitializer; if (nvInit.NavName != null) { await CEngine.Instance.EventPoster.Post(() => { using (var xnd = IO.XndHolder.SyncLoadXND(nvInit.NavName.Address)) { NavMesh = new CNavMesh(); NavMesh.LoadXnd(xnd.Node); } return(true); }, Thread.Async.EAsyncTarget.AsyncIO); } if (NavMesh != null) { var meshComp = Host.FindComponentBySpecialName("NavMeshDebugger") as GamePlay.Component.GMeshComponent; if (meshComp == null) { //meshComp = new GamePlay.Component.GMeshComponent(); //var renderMesh = CEngine.Instance.MeshManager.CreateMesh(rc, NavMesh.CreateRenderMesh(rc)); //var mtl = await CEngine.Instance.MaterialInstanceManager.GetMaterialInstanceAsync(rc, RName.GetRName("Material/RecastDebugger.instmtl")); //await renderMesh.SetMaterial(rc, 0, mtl, null); //meshComp.SetSceneMesh(rc, renderMesh); //host.AddComponent(meshComp); //meshComp.SpecialName = "NavMeshDebugger"; } } return(true); }
//private NavLinkProxyComponentInitializer Initializer; public override async System.Threading.Tasks.Task <bool> SetInitializer(CRenderContext rc, GamePlay.IEntity host, GamePlay.Component.IComponentContainer hostContainer, GComponentInitializer v) { if (!await base.SetInitializer(rc, host, hostContainer, v)) { return(false); } if (mLineMeshComponent == null) { await InitGraphLines(); } if (mLineMeshComponent != null) { mLineMeshComponent.Entity = host; Host.PlacementChange -= PlacementChange; Host.PlacementChange += PlacementChange; var mat = this.Host.Placement.WorldMatrix; mLineMeshComponent.OnUpdateDrawMatrix(ref mat); } var initializer = v as NavLinkProxyComponentInitializer; Radius = initializer.Radius; Direction = initializer.Direction; Initializer = initializer; return(true); }
public override async Task <bool> SetInitializer(CRenderContext rc, GamePlay.IEntity host, IComponentContainer hostContainer, GComponentInitializer v) { await base.SetInitializer(rc, host, hostContainer, v); return(true); }