public async Task <GActor> CreateActor(Editor.PlantableItemCreateActorParam param) { await EngineNS.Thread.AsyncDummyClass.DummyFunc(); var rc = EngineNS.CEngine.Instance.RenderContext; var actor = new EngineNS.GamePlay.Actor.GActor(); actor.ActorId = Guid.NewGuid(); var placement = new EngineNS.GamePlay.Component.GPlacementComponent(); actor.Placement = placement; placement.Location = param.Location; placement.Rotation = EngineNS.Quaternion.GetQuaternion(Vector3.UnitZ, -Vector3.UnitY); actor.SpecialName = "SunActor"; var initializer = new GDirLightComponentInitializer(); initializer.SpecialName = "LightData"; await SetInitializer(rc, actor, actor, initializer); this.View = param.View; var meshComp = new EngineNS.GamePlay.Component.GMeshComponent(); var meshCompInit = new EngineNS.GamePlay.Component.GMeshComponent.GMeshComponentInitializer(); meshCompInit.SpecialName = "VisualMesh"; meshCompInit.MeshName = EngineNS.RName.GetRName("editor/sun.gms", EngineNS.RName.enRNameType.Game); var test = meshComp.SetInitializer(rc, actor, actor, meshCompInit); actor.AddComponent(meshComp); actor.AddComponent(this); return(actor); }
public async Task <GActor> CreateActor(Editor.PlantableItemCreateActorParam param, RName MacrossName) { var rc = EngineNS.CEngine.Instance.RenderContext; await EngineNS.Thread.AsyncDummyClass.DummyFunc(); var actor = new EngineNS.GamePlay.Actor.GActor(); actor.ActorId = Guid.NewGuid(); var placement = new EngineNS.GamePlay.Component.GPlacementComponent(); actor.Placement = placement; placement.Location = param.Location; var init = new GParticleComponentInitializer(); init.SpecialName = "ParticleData"; init.MacrossName = MacrossName; await SetInitializer(rc, actor, actor, init); actor.AddComponent(this); var meshComp = new EngineNS.GamePlay.Component.GMeshComponent(); var meshCompInit = new EngineNS.GamePlay.Component.GMeshComponent.GMeshComponentInitializer(); meshCompInit.SpecialName = "EditorShow"; meshCompInit.MeshName = EngineNS.RName.GetRName("meshes/icon_particle.gms", EngineNS.RName.enRNameType.Editor); await meshComp.SetInitializer(rc, actor, actor, meshCompInit); meshComp.HideInGame = true; actor.AddComponent(meshComp); return(actor); }
public override async Task <GamePlay.Actor.GActor> CreateActor(Editor.PlantableItemCreateActorParam param) { var rc = EngineNS.CEngine.Instance.RenderContext; var actor = new EngineNS.GamePlay.Actor.GActor(); actor.ActorId = Guid.NewGuid(); var placement = new EngineNS.GamePlay.Component.GPlacementComponent(); actor.Placement = placement; placement.Location = param.Location; var init = new OctreeVolumeComponentInitializer(); init.SpecialName = "VolumeData"; await SetInitializer(rc, actor, actor, init); if (mActorOctree == null) { mActorOctree = new Octree(); mActorOctree.LinkedActorId = actor.ActorId; } mLineMeshComponent.Host = actor; var mat = actor.Placement.WorldMatrix; mLineMeshComponent.OnUpdateDrawMatrix(ref mat); //var aabb = new BoundingBox(-0.5f, -0.5f, -0.5f, 0.5f, 0.5f, 0.5f); //BoundingBox.Merge(ref actor.LocalBoundingBox, ref aabb, out actor.LocalBoundingBox); actor.AddComponent(this); return(actor); }
public override async Task <GamePlay.Actor.GActor> CreateActor(Editor.PlantableItemCreateActorParam param) { await EngineNS.Thread.AsyncDummyClass.DummyFunc(); var rc = EngineNS.CEngine.Instance.RenderContext; var actor = new EngineNS.GamePlay.Actor.GActor(); actor.ActorId = Guid.NewGuid(); var placement = new EngineNS.GamePlay.Component.GPlacementComponent(); actor.Placement = placement; placement.Location = param.Location; placement.Rotation = EngineNS.Quaternion.GetQuaternion(Vector3.UnitZ, -Vector3.UnitY); var meshComp = new EngineNS.GamePlay.Component.GMeshComponent(); var meshCompInit = new EngineNS.GamePlay.Component.GMeshComponent.GMeshComponentInitializer(); meshCompInit.SpecialName = "EditorShow"; meshCompInit.MeshName = EngineNS.RName.GetRName("meshes/go_on.gms", EngineNS.RName.enRNameType.Editor); await meshComp.SetInitializer(rc, actor, actor, meshCompInit); meshComp.HideInGame = true; meshComp.Placement.InheritScale = false; meshComp.Placement.InheritRotation = false; actor.AddComponent(meshComp); var init = new BoxComponentInitializer(); init.SpecialName = "NavMeshBoundVolume"; await SetInitializer(rc, actor, actor, init); mLineMeshComponent.Host = actor; var mat = actor.Placement.WorldMatrix; mLineMeshComponent.OnUpdateDrawMatrix(ref mat); actor.AddComponent(this); return(actor); }
GActor NewMeshActor(CGfxMesh mesh) { var rc = CEngine.Instance.RenderContext; var actor = new EngineNS.GamePlay.Actor.GActor(); actor.ActorId = Guid.NewGuid(); var placement = new EngineNS.GamePlay.Component.GPlacementComponent(); actor.Placement = placement; var meshComp = new EngineNS.GamePlay.Component.GMeshComponent(); meshComp.SetSceneMesh(rc.ImmCommandList, mesh); actor.AddComponent(meshComp); return(actor); }
async System.Threading.Tasks.Task <GActor> NewMeshActor(CGfxMeshPrimitives meshPri) { var rc = CEngine.Instance.RenderContext; var actor = new EngineNS.GamePlay.Actor.GActor(); actor.ActorId = Guid.NewGuid(); var placement = new EngineNS.GamePlay.Component.GPlacementComponent(); actor.Placement = placement; var meshComp = new EngineNS.GamePlay.Component.GMeshComponent(); var mesh = CEngine.Instance.MeshManager.CreateMesh(rc, meshPri); var mtl = await EngineNS.CEngine.Instance.MaterialInstanceManager.GetMaterialInstanceAsync(rc, RName.GetRName("Material/defaultmaterial.instmtl")); for (int i = 0; i < mesh.MtlMeshArray.Length; ++i) { await mesh.SetMaterialInstanceAsync(rc, (uint)i, mtl, null); } meshComp.SetSceneMesh(rc.ImmCommandList, mesh); actor.AddComponent(meshComp); return(actor); }
public async Task <GActor> CreateActor(Editor.PlantableItemCreateActorParam param) { var rc = EngineNS.CEngine.Instance.RenderContext; await EngineNS.Thread.AsyncDummyClass.DummyFunc(); var actor = new EngineNS.GamePlay.Actor.GActor(); actor.ActorId = Guid.NewGuid(); var placement = new EngineNS.GamePlay.Component.GPlacementComponent(); actor.Placement = placement; placement.Location = param.Location; var init = new GParticleComponentInitializer(); init.SpecialName = "ParticleData"; await SetInitializer(rc, actor, actor, init); actor.AddComponent(this); return(actor); }
public async System.Threading.Tasks.Task <GActor> ConvertToActor(CRenderContext rc) { var result = new GActor(); var init = Initializer.CloneObject() as GActorInitializer; init.ActorId = Guid.NewGuid(); result.SetInitializer(init); for (int i = 0; i < Components.Count; ++i) { var comp = await Components[i]?.CloneComponent(rc, result, result); result.AddComponent(comp); } foreach (var i in Children) { var actor = await i.Clone(rc); actor.SetParent(result); actor.OnActorLoaded(); } result.OnActorLoaded(); return(result); }