public static async System.Threading.Tasks.Task <GPrefab> CreatePrefab(List <GActor> actors, bool firstCoord = false) { GPrefab result = null; if (actors.Count == 1) { result = await actors[0].ConvertToPrefab(CEngine.Instance.RenderContext); } else { result = new GPrefab(); result.ActorId = Guid.NewGuid(); var placement = new GamePlay.Component.GPlacementComponent(); result.Placement = placement; for (int i = 0; i < actors.Count; ++i) { if (actors[i] is GPrefab) { var prefab = actors[i] as GPrefab; var actor = await prefab.ConvertToActor(CEngine.Instance.RenderContext); actor.SetParent(result, false); } else { actors[i].SetParent(result, false); } } } return(result); }
public static async System.Threading.Tasks.Task <GamePlay.Actor.GActor> CreateParticleActor2( [Editor.Editor_RNameType(Editor.Editor_RNameTypeAttribute.Mesh)] RName gmsName, [Editor.Editor_RNameMacrossType(typeof(EngineNS.Bricks.Particle.McParticleEffector))] RName macross, bool IdentityDrawTransform) { var rc = CEngine.Instance.RenderContext; // ParticleActor var actor = new GamePlay.Actor.GActor(); actor.ActorId = Guid.NewGuid(); var placement = new GamePlay.Component.GPlacementComponent(); actor.Placement = placement; var particleComp = new Bricks.Particle.GParticleComponent(); var particleInit = new Bricks.Particle.GParticleComponent.GParticleComponentInitializer(); particleInit.MeshName = gmsName; particleInit.MacrossName = macross; await particleComp.SetInitializer(rc, actor, actor, particleInit); particleComp.IsIdentityDrawTransform = true; actor.AddComponent(particleComp); return(actor); }
public EngineNS.GamePlay.Actor.GActor CreateNavActor() { NavAreaActor = new EngineNS.GamePlay.Actor.GActor(); NavAreaActor.ActorId = Guid.NewGuid(); EngineNS.GamePlay.Component.GPlacementComponent component = new EngineNS.GamePlay.Component.GPlacementComponent(); var placement = new GamePlay.Component.GPlacementComponent(); NavAreaActor.Placement = placement; return(NavAreaActor); }
public static async System.Threading.Tasks.Task <GActor> NewNavMeshActorAsync(Bricks.RecastRuntime.CNavMesh navMesh) { var rc = CEngine.Instance.RenderContext; var actor = new GamePlay.Actor.GActor(); actor.ActorId = Guid.NewGuid(); var placement = new GamePlay.Component.GPlacementComponent(); actor.Placement = placement; var navComp = new Bricks.RecastRuntime.CNavMeshComponent(); var init = new Bricks.RecastRuntime.CNavMeshComponent.CNavMeshComponentInitializer(); navComp.NavMesh = navMesh; await navComp.SetInitializer(rc, actor, actor, init); actor.AddComponent(navComp); return(actor); }
public override void Tick(GamePlay.Component.GPlacementComponent placement) { base.Tick(placement); TickEditor(); }
public void AddMeshInstance(SceneDataManager scene, Graphics.Mesh.CGfxMesh mesh, GamePlay.Component.GPlacementComponent placement) { }
public void AddMeshInstance(CRenderContext rc, Graphics.Mesh.CGfxMesh mesh, RName clusterName, GamePlay.Component.GPlacementComponent placement) { var worldMatrix = placement.WorldMatrix; uint instStart = (uint)mGpuInstanceDatas.Count; for (int i = 0; i < mesh.MtlMeshArray.Length; i++) { var data = new GpuMeshInstanceData(); data.VTMaterialId.x = 1;//(uint)GetOrAddMaterialId(mesh.MtlMeshArray[i].MtlInst); data.Matrix = worldMatrix; Matrix.Invert(ref data.Matrix, out data.InvMatrix); data.Matrix.Transpose(); data.InvMatrix.Transpose(); mGpuInstanceDatas.Add(data); //var module = CEngine.Instance.GetCurrentModule(); //module.World.AddActor(); } uint indexOffset; Cluster.ClusteredMesh cluster = GetClusteredMesh(rc, clusterName, out indexOffset); for (int i = 0; i < cluster.ClusterDatas.Count; i++) { Cluster.GpuCluster gpuCluster = cluster.ClusterDatas[i]; gpuCluster.InstanceId += instStart; gpuCluster.StartFaceIndex += indexOffset / 3; BoundingBox tmpBox = new BoundingBox(gpuCluster.BoundCenter - gpuCluster.BoundExtent, gpuCluster.BoundCenter + gpuCluster.BoundExtent); tmpBox = BoundingBox.Transform(ref tmpBox, ref worldMatrix); gpuCluster.BoundCenter = tmpBox.GetCenter(); gpuCluster.BoundExtent = tmpBox.GetSize() * 0.5f; mGpuClusters.Add(gpuCluster); } }