Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 public override void Tick(GamePlay.Component.GPlacementComponent placement)
 {
     base.Tick(placement);
     TickEditor();
 }
Ejemplo n.º 6
0
 public void AddMeshInstance(SceneDataManager scene, Graphics.Mesh.CGfxMesh mesh, GamePlay.Component.GPlacementComponent placement)
 {
 }
Ejemplo n.º 7
0
        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);
            }
        }