private void DeleteActorEvent(EngineNS.GamePlay.Actor.GActor actor) { RefreshActorControlInfo(); if (RCTileMeshBuilder.InputGeom == null) { return; } var component = actor.GetComponent <EngineNS.Bricks.RecastRuntime.NavMeshBoundVolumeComponent>(); if (component != null) { RCTileMeshBuilder.InputGeom.DeleteConvexVolumesByArea(component.RCAreaType); if (component.RCAreaType == EngineNS.Bricks.RecastRuntime.NavMeshBoundVolumeComponent.AreaType.NoWalk) { actor.PlacementChange -= RefreshNavModifierVolumes; RefreshNavModifierVolumes(); } else if (component.RCAreaType == EngineNS.Bricks.RecastRuntime.NavMeshBoundVolumeComponent.AreaType.Walk) { actor.PlacementChange -= RefreshNavMeshBoundVolumes; RefreshNavMeshBoundVolumes(); } } }
public async Task AddComponent(EngineNS.GamePlay.Actor.GActor actor, EngineNS.GamePlay.Component.GComponent component) { if (actor != null) { Type type = component.GetType(); var atts = type.GetCustomAttributes(typeof(EngineNS.GamePlay.Component.CustomConstructionParamsAttribute), false); EngineNS.GamePlay.Component.GComponent.GComponentInitializer initializer = null; if (atts.Length > 0) { for (int i = 0; i < atts.Length; i++) { var ccAtt = atts[i] as EngineNS.GamePlay.Component.CustomConstructionParamsAttribute; if (ccAtt != null) { initializer = Activator.CreateInstance(ccAtt.ConstructionParamsType) as EngineNS.GamePlay.Component.GComponent.GComponentInitializer; break; } } } if (initializer != null) { await component.SetInitializer(EngineNS.CEngine.Instance.RenderContext, actor, actor, initializer); } actor.AddComponent(component); } }
private void AddActorEvent(EngineNS.GamePlay.Actor.GActor actor) { // return; var component = actor.GetComponent <EngineNS.Bricks.RecastRuntime.NavMeshBoundVolumeComponent>(); if (component != null) { //if (RCTileMeshBuilder.InputGeom == null) //{ // var result = BuildNavtion(); //} AddActorToNavModifierVolume(actor); //var test = BuildNavMesh(); if (component.RCAreaType == EngineNS.Bricks.RecastRuntime.NavMeshBoundVolumeComponent.AreaType.NoWalk) { actor.PlacementChange -= RefreshNavModifierVolumes; actor.PlacementChange += RefreshNavModifierVolumes; NavModifierVolumes.Add(new WeakReference <EngineNS.GamePlay.Actor.GActor>(actor)); } else if (component.RCAreaType == EngineNS.Bricks.RecastRuntime.NavMeshBoundVolumeComponent.AreaType.Walk) { actor.PlacementChange -= RefreshNavMeshBoundVolumes; actor.PlacementChange += RefreshNavMeshBoundVolumes; NavMeshBoundVolumes.Add(new WeakReference <EngineNS.GamePlay.Actor.GActor>(actor)); } } RefreshActorControlInfo(); }
public async System.Threading.Tasks.Task ResetDebugBox(CRenderContext rc, EngineNS.GamePlay.Actor.GActor actor, EngineNS.Bricks.Particle.CGfxParticleSystem sys) { BoundingBox.Merge(ref Host.LocalBoundingBox, ref sys.AABB.Box, out Host.LocalBoundingBox); OnUpdateDrawMatrix(ref Host.Placement.mDrawTransform); await CreateBoundBox(rc, Host, sys); }
private void CreateLegAndFootIK(EngineNS.GamePlay.Actor.GActor actor) { var meshComp = actor.GetComponent <EngineNS.GamePlay.Component.GMeshComponent>(); var animationCom = actor.GetComponent <EngineNS.GamePlay.Component.GAnimationInstance>(); var skinModifier = meshComp.SceneMesh.MdfQueue.FindModifier <EngineNS.Graphics.Mesh.CGfxSkinModifier>(); var FinalPose = skinModifier.AnimationPose; var rightLegCcdIk = new EngineNS.Graphics.Mesh.SkeletonControl.CGfxCCDIK(); rightLegCcdIk.AnimationPose = FinalPose; rightLegCcdIk.Alpha = 1.0f; rightLegCcdIk.TargetBoneName = EngineNS.Support.LanguageManager.JP932_GB2312("右足IK"); //rightLegCcdIk.TargetPosition = targetp; rightLegCcdIk.EndEffecterBoneName = EngineNS.Support.LanguageManager.JP932_GB2312("右足首"); rightLegCcdIk.LimitAngle = 114.5916f; rightLegCcdIk.Iteration = 15; rightLegCcdIk.Depth = 3; var leftLegCcdIk = new EngineNS.Graphics.Mesh.SkeletonControl.CGfxCCDIK(); leftLegCcdIk.AnimationPose = rightLegCcdIk.AnimationPose; leftLegCcdIk.Alpha = 1.0f; leftLegCcdIk.TargetBoneName = EngineNS.Support.LanguageManager.JP932_GB2312("左足IK"); //leftLegCcdIk.TargetPosition = targetp; leftLegCcdIk.EndEffecterBoneName = EngineNS.Support.LanguageManager.JP932_GB2312("左足首"); leftLegCcdIk.LimitAngle = 114.5916f; leftLegCcdIk.Iteration = 15; leftLegCcdIk.Depth = 3; var rightFootCcdIk = new EngineNS.Graphics.Mesh.SkeletonControl.CGfxCCDIK(); rightFootCcdIk.AnimationPose = leftLegCcdIk.AnimationPose; //rightFootCcdIk.AnimationPose = FinalPose; rightFootCcdIk.Alpha = 1.0f; rightFootCcdIk.TargetBoneName = EngineNS.Support.LanguageManager.JP932_GB2312("右つま先IK"); //rightFootCcdIk.TargetPosition = targetp; rightFootCcdIk.EndEffecterBoneName = EngineNS.Support.LanguageManager.JP932_GB2312("右足首D"); rightFootCcdIk.Iteration = 15; rightFootCcdIk.Depth = 1; var leftFootCcdIk = new EngineNS.Graphics.Mesh.SkeletonControl.CGfxCCDIK(); leftFootCcdIk.AnimationPose = rightFootCcdIk.AnimationPose; leftFootCcdIk.Alpha = 1.0f; leftFootCcdIk.TargetBoneName = EngineNS.Support.LanguageManager.JP932_GB2312("左つま先IK"); //leftFootCcdIk.TargetPosition = targetp; leftFootCcdIk.EndEffecterBoneName = EngineNS.Support.LanguageManager.JP932_GB2312("左足首D"); leftFootCcdIk.Iteration = 15; leftFootCcdIk.Depth = 1; //animationCom.skeletonControls.Add(lookAt); animationCom.skeletonControls.Add(rightLegCcdIk); animationCom.skeletonControls.Add(leftLegCcdIk); //animationCom.skeletonControls.Add(rightFootCcdIk); //animationCom.skeletonControls.Add(leftFootCcdIk); CreateLookAt(actor, EngineNS.Support.LanguageManager.JP932_GB2312("左足首"), EngineNS.Support.LanguageManager.JP932_GB2312("左つま先IK"), Vector3.UnitZ); CreateLookAt(actor, EngineNS.Support.LanguageManager.JP932_GB2312("右足首"), EngineNS.Support.LanguageManager.JP932_GB2312("右つま先IK"), Vector3.UnitZ); }
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 async System.Threading.Tasks.Task <EngineNS.GamePlay.Actor.GActor> CreateRenderActor(CRenderContext rc, Graphics.Mesh.CGfxMeshPrimitives pri) { EngineNS.GamePlay.Actor.GActor actor = EngineNS.GamePlay.Actor.GActor.NewMeshActorDirect(EngineNS.CEngine.Instance.MeshManager.CreateMesh(rc, pri)); await actor.GetComponent <EngineNS.GamePlay.Component.GMeshComponent>().SetMaterialInstance(EngineNS.CEngine.Instance.RenderContext, 0, RName.GetRName("editor/icon/icon_3D/material/pathfinding.instmtl"), null); actor.Placement.Location = new EngineNS.Vector3(0.0f, 0.0f, 0.0f); actor.Placement.Rotation = EngineNS.Quaternion.RotationAxis(EngineNS.Vector3.UnitY, 0.0f); actor.Placement.Scale = new EngineNS.Vector3(1.0f, 1.0f, 1.0f); actor.SpecialName = "NavMeshDebugger"; return(actor); }
private async System.Threading.Tasks.Task BuildNavMesh(bool force = false) { if (force == false) { if (VP1.IsMouseDown) { return; } } if (RCTileMeshBuilder.InputGeom == null) { return; } EngineNS.CEngine.Instance.EventPoster.RunOn(async() => { //处理offmeshlink if (VP1.World.DefaultScene.NavAreaActor != null) { foreach (var actor in VP1.World.DefaultScene.NavAreaActor.GetChildrenUnsafe()) { EngineNS.Bricks.RecastRuntime.NavLinkProxyComponent NavLinkProxyComponent = actor.GetComponent <EngineNS.Bricks.RecastRuntime.NavLinkProxyComponent>(); if (NavLinkProxyComponent != null) { RCTileMeshBuilder.InputGeom.AddOffMeshConnections(NavLinkProxyComponent.StartPos, NavLinkProxyComponent.EndPos, NavLinkProxyComponent.Radius, NavLinkProxyComponent.Direction); } } } VP1.World.DefaultScene.NavMesh = RCTileMeshBuilder.BuildNavi(); EngineNS.Graphics.Mesh.CGfxMeshPrimitives pri = VP1.World.DefaultScene.NavMesh.CreateRenderMeshPrimitives(EngineNS.CEngine.Instance.RenderContext); if (pri == null) { return(false); } EngineNS.GamePlay.Actor.GActor debugactor = await VP1.World.DefaultScene.NavMesh.CreateRenderActor(EngineNS.CEngine.Instance.RenderContext, pri); if (VP1.World.NavMeshActorID != null) { VP1.World.RemoveEditorActor(VP1.World.NavMeshActorID); } debugactor.Visible = EngineNS.CEngine.IsRenderNavMesh; VP1.World.AddEditorActor(debugactor); //if (VP1.World.DefaultScene.NavAreaActor == null) //{ // VP1.World.DefaultScene.CreateNavActor(); //} //VP1.World.DefaultScene.NavAreaActor.Children.Add(debugactor); //VP1.DRefreshActors(); VP1.World.NavMeshActorID = debugactor.ActorId; return(true); }, EngineNS.Thread.Async.EAsyncTarget.AsyncEditor); }
//public override async Task<ImageSource> GetSnapshotImage(bool forceCreate) //{ // var snapShotFile = ResourceName.Address + EditorCommon.Program.SnapshotExt; // var imgSource = await EditorCommon.ImageInit.GetImage(snapShotFile); // if (imgSource != null) // return imgSource; // var rc = CEngine.Instance.RenderContext; // var mCurMesh = await CEngine.Instance.MeshManager.CreateMeshAsync(rc, ResourceName/*, EditorCommon.SnapshotProcess.SnapshotCreator.GetShadingEnv()*/); // if (mCurMesh == null) // return null; // var snapShorter = new EditorCommon.SnapshotProcess.SnapshotCreator();//EngineNS.Editor.SnapshotCreator();// // await snapShorter.InitEnviroment(); // var actor = EngineNS.GamePlay.Actor.GActor.NewMeshActor(mCurMesh); // mCurMesh.PreUse(true);//就这个地方用,别的地方别乱用,效率不好 // snapShorter.World.AddActor(actor); // snapShorter.World.Scenes[RName.GetRName("SnapshorCreator")].AddActor(actor); // actor.Placement.Location = new Vector3(0, 0, 0); // var noused = snapShorter.SaveToFile(snapShotFile); // return await EditorCommon.ImageInit.GetImage(snapShotFile); //} #region Viewport public void MapPrefabActor(EngineNS.GamePlay.Actor.GActor actor) { EngineNS.CEngine.Instance.HitProxyManager.MapActor(actor); List <EngineNS.GamePlay.Actor.GActor> Children = actor.GetChildrenUnsafe(); if (Children.Count > 0) { foreach (var i in Children) { MapPrefabActor(i); } } }
private void ShowVPActors(ViewPort.ViewPortControl viewport) { if (viewport.World == null) { return; } foreach (var listactor in viewport.World.Actors) { EngineNS.GamePlay.Actor.GActor actor = listactor.Value as EngineNS.GamePlay.Actor.GActor; if (actor.Parent == null) { AddActorToItem(TreeViewItemsNodes, actor); } } }
public void RemoveActor(EngineNS.GamePlay.Actor.GActor actor) { //for (int i = 0; i < TreeViewItemsNodes.Count; i++) //{ // ActorData itemactor = TreeViewItemsNodes[i] as ActorData; // if (itemactor.Actor == actor) // { // TreeViewItemsNodes.RemoveAt(i); // break; // } //} RefreshActors( ); SelectActors.Clear(); }
private async System.Threading.Tasks.Task AnalysisActor(EngineNS.GamePlay.Actor.GActor actor) { HashSet <object> visitedObjects = new HashSet <object>(); await CollectRNameFromObject(actor, visitedObjects); foreach (var i in actor.Components) { await CollectRNameFromObject(i, visitedObjects); } var children = actor.GetChildrenUnsafe(); foreach (var i in children) { await AnalysisActor(i); } }
public void AddActor(EngineNS.GamePlay.Actor.GActor actor) { if (actor.Parent == null) { AddActorToItem(TreeViewItemsNodes, actor); } else { //TreeListView.ObservableCollectionAdv<TreeListView.ITreeModel> data; //if (ActorDatas.TryGetValue(actor.Parent.ActorId, out data)) //{ // AddActorToItem(data, actor); //} } SelectActors.Clear(); }
public async System.Threading.Tasks.Task CreateBoundBox(CRenderContext rc, EngineNS.GamePlay.Actor.GActor actor, EngineNS.Bricks.Particle.CGfxParticleSystem sys) { this.RemoveComponent("BoxVolumeData"); if (sys.IsShowBox) { var boxcom = new LooseOctree.BoxComponent(); boxcom.Size = new Vector3(sys.AABB.L, sys.AABB.H, sys.AABB.W); boxcom.Center = sys.AABB.Center; var init = new LooseOctree.BoxComponent.BoxComponentInitializer(); init.SpecialName = "BoxVolumeData"; await boxcom.SetInitializer(rc, actor, actor, init); boxcom.LineMeshComponent.Host = actor; this.AddComponent(boxcom); } }
public async Task <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/pointlight.gms", EngineNS.RName.enRNameType.Editor); await meshComp.SetInitializer(rc, actor, actor, meshCompInit); meshComp.HideInGame = true; actor.AddComponent(meshComp); meshComp = new EngineNS.GamePlay.Component.GMeshComponent(); meshCompInit = new EngineNS.GamePlay.Component.GMeshComponent.GMeshComponentInitializer(); meshCompInit.SpecialName = "SphereVolumeShow"; meshCompInit.MeshName = EngineNS.RName.GetRName("meshes/sphere_wireframe.gms", EngineNS.RName.enRNameType.Editor); await meshComp.SetInitializer(rc, actor, actor, meshCompInit); meshComp.HideInGame = true; actor.AddComponent(meshComp); var initializer = new GPointLightComponentInitializer(); initializer.SpecialName = "PointLightComponent"; await SetInitializer(rc, actor, actor, initializer); actor.AddComponent(this); actor.AcceptLights = false; return(actor); }
private void CreateLookAt(EngineNS.GamePlay.Actor.GActor actor, string modifyBone, string targetBone, Vector3 loolAtAxis) { var meshComp = actor.GetComponent <EngineNS.GamePlay.Component.GMeshComponent>(); var animationCom = actor.GetComponent <EngineNS.GamePlay.Component.GAnimationInstance>(); var skinModifier = meshComp.SceneMesh.MdfQueue.FindModifier <EngineNS.Graphics.Mesh.CGfxSkinModifier>(); var FinalPose = skinModifier.AnimationPose; lookAt = new EngineNS.Graphics.Mesh.SkeletonControl.CGfxLookAt(); lookAt.ModifyBoneName = modifyBone; if (targetBone != null) { lookAt.TargetBoneName = targetBone; } lookAt.LookAtAxis = Vector3.UnitX; lookAt.AnimationPose = FinalPose; lookAt.Alpha = 1; animationCom.skeletonControls.Add(lookAt); }
private void Viewport_DAddActor(EngineNS.GamePlay.Actor.GActor actor) { foreach (var comp in actor.Components) { var sgComp = comp as EngineNS.GamePlay.Component.ISceneGraphComponent; if (sgComp != null) { var node = sgComp.GetSceneNode(); SceneGraphNodeViewData parentData = null; if (node.Parent == null) { throw new InvalidOperationException("node.Parent不能为空"); } mViewDataDic.TryGetValue(node.Parent, out parentData); CreateNodeItem(parentData, node); } } }
public void CreateAnimationInstanceMacross(EngineNS.GamePlay.Actor.GActor actor) { EngineNS.Macross.MacrossGetter <EngineNS.GamePlay.Component.GAnimationInstance> macrossGetter = new EngineNS.Macross.MacrossGetter <EngineNS.GamePlay.Component.GAnimationInstance>(); macrossGetter.Name = RName.GetRName("Animation/amc_robot.macross"); var animationCom = macrossGetter.Get(); animationCom.Init(); actor.AddComponent(animationCom); var meshComp = actor.GetComponent <EngineNS.GamePlay.Component.GMutiMeshComponent>(); foreach (var subMesh in meshComp.Meshes) { var skinModifier = subMesh.Value.MdfQueue.FindModifier <EngineNS.Graphics.Mesh.CGfxSkinModifier>(); if (animationCom.AnimationPose != null) { skinModifier.AnimationPose = animationCom.AnimationPose; } } }
public static async System.Threading.Tasks.Task AnalysisActorRefResource(EngineNS.GamePlay.Actor.GActor actor, HashSet <RName> refObjectHashSet, HashSet <object> visitedObjects = null) { if (visitedObjects == null) { visitedObjects = new HashSet <object>(); } await CollectRNameFromObject(actor, refObjectHashSet, visitedObjects); foreach (var i in actor.Components) { await CollectRNameFromObject(i, refObjectHashSet, visitedObjects); } var children = actor.GetChildrenUnsafe(); foreach (var i in children) { await AnalysisActorRefResource(i, refObjectHashSet, visitedObjects); } }
public async System.Threading.Tasks.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, init); //mOctree = new Octree(); //mOctree.LinkedActorId = actor.ActorId; if (mLineMeshComponent == null) { await InitGraphLines(); } mLineMeshComponent.Host = actor; var mat = actor.Placement.WorldMatrix; mLineMeshComponent.OnUpdateDrawMatrix(ref mat); var init = new NavLinkProxyComponentInitializer(); init.SpecialName = " NavLinkProxy"; await SetInitializer(rc, actor, actor, init); //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); actor.IsNavgation = true; return(actor); }
private void Viewport_DRemoveActor(EngineNS.GamePlay.Actor.GActor actor) { foreach (var comp in actor.Components) { var sgComp = comp as EngineNS.GamePlay.Component.ISceneGraphComponent; if (sgComp != null) { var node = sgComp.GetSceneNode(); if (node != null) { SceneGraphNodeViewData nodeData = null; mViewDataDic.TryGetValue(node, out nodeData); if (nodeData != null) { var parentData = nodeData.Parent as SceneGraphNodeViewData; parentData.Children.Remove(nodeData); RemoveNodeFromDic(node); } } } } }
public async Task<EngineNS.GamePlay.Component.GComponent> CreateComponent(EngineNS.GamePlay.Component.IComponentContainer componentContainer) { EngineNS.GamePlay.Actor.GActor hostActor = null; EngineNS.GamePlay.Component.IComponentContainer hostContainer = null; if (componentContainer is EngineNS.GamePlay.Actor.GActor) { hostActor = componentContainer as EngineNS.GamePlay.Actor.GActor; hostContainer = componentContainer; } else if (componentContainer is EngineNS.GamePlay.Component.GComponent) { hostActor = (componentContainer as EngineNS.GamePlay.Component.GComponent).Host; hostContainer = componentContainer; } var rc = CEngine.Instance.RenderContext; var comp = new EngineNS.GamePlay.Component.StateMachine.GStateMachineComponent(); var init = new EngineNS.GamePlay.Component.StateMachine.GStateMachineComponentInitializer(); await comp.SetInitializer(rc, hostActor, hostContainer, init); comp.SpecialName = ResourceName.PureName(); comp.ComponentMacross = ResourceName; return comp; }
private async Task CreateNavRenderMesh() { if (VP1.World.DefaultScene.NavMesh != null) { EngineNS.Graphics.Mesh.CGfxMeshPrimitives pri = VP1.World.DefaultScene.NavMesh.CreateRenderMeshPrimitives(EngineNS.CEngine.Instance.RenderContext); if (pri == null) { return; } EngineNS.GamePlay.Actor.GActor debugactor = await VP1.World.DefaultScene.NavMesh.CreateRenderActor(EngineNS.CEngine.Instance.RenderContext, pri); if (VP1.World.NavMeshActorID != null) { VP1.World.RemoveEditorActor(VP1.World.NavMeshActorID); } debugactor.Visible = EngineNS.CEngine.IsRenderNavMesh; VP1.World.AddEditorActor(debugactor); VP1.World.NavMeshActorID = debugactor.ActorId; } }
public static void GetBuildActors(EngineNS.GamePlay.SceneGraph.GSceneGraph sc, List <EngineNS.GamePlay.Actor.GActor> allActors, List <EngineNS.GamePlay.Actor.GActor> pvsActors, List <EngineNS.GamePlay.Actor.GActor> unPVSActors, List <EngineNS.GamePlay.Component.ISceneGraphComponent> buildItems) { using (var i = sc.Actors.GetEnumerator()) { while (i.MoveNext()) { EngineNS.GamePlay.Actor.GActor actor = i.Current.Value; // 不包含平行光 if (actor.GetComponent(typeof(EngineNS.GamePlay.Component.GDirLightComponent)) != null) { continue; } // 不包含带有SceneGraphComponent的Actor var comp = actor.GetComponent(typeof(EngineNS.GamePlay.Component.ISceneGraphComponent)) as EngineNS.GamePlay.Component.ISceneGraphComponent; if (comp != null) { buildItems.Add(comp); continue; } allActors.Add(actor); if (actor.Initializer.InPVS) { pvsActors.Add(actor); } else { unPVSActors.Add(actor); } sc.DefaultSceneNode.RemoveActor(actor); } } }
public async System.Threading.Tasks.Task CreateActor() { if (HostActor != null) { return; } EngineNS.GamePlay.Component.GPlacementComponent placement = new EngineNS.GamePlay.Component.GPlacementComponent(); var rc = EngineNS.CEngine.Instance.RenderContext; EngineNS.GamePlay.Actor.GActor actor = new EngineNS.GamePlay.Actor.GActor(); actor.ActorId = new Guid(); await placement.SetInitializer(rc, actor, actor, placement.mPlacementData); placement.SpecialName = "Placement"; placement.Location = new EngineNS.Vector3(0, 0, 0); actor.AddComponent(placement); actor.LocalBoundingBox.Minimum = new EngineNS.Vector3(-1, -1, -1); actor.LocalBoundingBox.Maximum = new EngineNS.Vector3(1, 1, 1); //actor.AddComponent(this); //EngineNS.GamePlay.Component.GMeshComponent.GMeshComponentInitializer initializer = new EngineNS.GamePlay.Component.GMeshComponent.GMeshComponentInitializer(); //EngineNS.GamePlay.Component.GMeshComponent meshcomponent = new EngineNS.GamePlay.Component.GMeshComponent(); //initializer.MeshName = EngineNS.RName.GetRName("ParticleResource/models/sphere.gms"); //await meshcomponent.SetInitializer(rc, actor, actor, initializer); //meshcomponent.SpecialName = "mesh"; //actor.AddComponent(meshcomponent); HostActor = actor; HostActor.PlacementChange -= PlacementChange; HostActor.PlacementChange += PlacementChange; HostActor.NeedRefreshNavgation = true; }
public bool CheckFilter(EngineNS.GamePlay.Actor.GActor actor) { if (actor.SpecialName != null && actor.SpecialName.ToLower().IndexOf(mLowerFilterString) > -1) { return(true); } List <EngineNS.GamePlay.Actor.GActor> actors = actor.GetChildrenUnsafe(); if (actors.Count == 0) { return(false); } for (int i = 0; i < actors.Count; i++) { if (CheckFilter(actors[i])) { return(true); } } return(false); }
//[Editor.MacrossPanelPathAttribute("粒子系统/粒子效应器(McParticleEffector)/InitSystem")] //[Editor.MacrossMemberAttribute(Editor.MacrossMemberAttribute.enMacrossType.Callable | Editor.MacrossMemberAttribute.enMacrossType.Overrideable)] public virtual async System.Threading.Tasks.Task <bool> InitSystem(CGfxParticleSystem sys, EngineNS.GamePlay.Actor.GActor actor, GParticleComponent compoent, GParticleComponent.GParticleComponentInitializer initializer) { DoInitSystem(sys, compoent); //await sys.SetHostActorMesh(compoent, initializer, UseMeshRName); //sys.SetHostActorMaterial(compoent, initializer, UseMaterialRName); await sys.InitSubSystem(actor, compoent); sys.HostActorMesh = compoent; return(true); }
private void AddActorToItem(TreeListView.ObservableCollectionAdv <TreeListView.ITreeModel> listads, EngineNS.GamePlay.Actor.GActor actor) { //过滤掉辅助的actor(物理碰撞盒子) if (actor.SpecialName != null && actor.SpecialName.Equals(EngineNS.Bricks.HollowMaker.GeomScene.ActorName)) { return; } bool filter = true; if (!string.IsNullOrEmpty(mFilterString)) { filter = CheckFilter(actor); } if (filter == false) { return; } String typeall = actor.GetType().ToString(); String[] type = typeall.Split('.'); var actorData = new ActorData() { Actor = actor }; BindingOperations.SetBinding(actorData, ActorData.NameProperty, new Binding("SpecialName") { Source = actor }); BindingOperations.SetBinding(actorData, ActorData.HighLightStringProperty, new Binding("FilterString") { Source = this }); BindingOperations.SetBinding(actorData, ActorData.VisibleProperty, new Binding("Visible") { Source = actor }); listads.Add(actorData);//actor.SpecialName if (actor.GetChildrenUnsafe().Count > 0) { addActorsToItems(actorData.Children, actor.GetChildrenUnsafe()); } }
private void selectPrefabActor(EngineNS.GamePlay.Actor.GActor actor) { }
public void BuildGeoScene(EngineNS.GamePlay.SceneGraph.GSceneGraph scene) { if (scene.SceneFilename == null) { return; } EngineNS.Bricks.HollowMaker.GeomScene geomscene = new EngineNS.Bricks.HollowMaker.GeomScene(); HollowMakerAgent.AgentComponenetBox = new List <EngineNS.BoundingBox>(); float osize = HollowMakerAgent.AgentGridSize; //先处理一遍摆放好的AgentGeomBoxComponent.. foreach (var value in scene.Actors) { EngineNS.GamePlay.Actor.GActor actor = value.Value; if (actor != null) { EngineNS.Bricks.HollowMaker.AgentGeomBoxComponent acom = actor.GetComponent <EngineNS.Bricks.HollowMaker.AgentGeomBoxComponent>(); if (acom != null) { HollowMakerAgent.AgentGridSize = acom.AgentGridSize; EngineNS.Vector3 scale; EngineNS.Quaternion rotation; EngineNS.Vector3 translation; if (actor.Placement != null && actor.Placement.WorldMatrix.Decompose(out scale, out rotation, out translation)) { geomscene.AgentData = new List <EngineNS.Bricks.HollowMaker.Agent.GeoBox>(); BuildWalkables(acom.StartPos, translation, scale, rotation); HollowMakerAgent.BuildGeomScene(geomscene); //TODO.. HollowMakerAgent.AgentComponenetBox.Add(acom.Box); EngineNS.Bricks.HollowMaker.GeomScene.AgentBoxs AgentBoxs = new EngineNS.Bricks.HollowMaker.GeomScene.AgentBoxs(); AgentBoxs.AgentData = geomscene.AgentData; AgentBoxs.Mat = EngineNS.Matrix.Transformation(EngineNS.Vector3.UnitXYZ, rotation, translation); AgentBoxs.BVSize = scale; geomscene.AgentDatas.Add(AgentBoxs); } } } } //HollowMakerAgent.AgentGridSize = osize; //foreach (var value in scene.Actors) //{ // EngineNS.GamePlay.Actor.GActor actor; // var compment = value.Value.TryGetTarget(out actor); // if (actor != null) // { // EngineNS.LooseOctree.OctreeVolumeComponent com = actor.GetComponent<EngineNS.LooseOctree.OctreeVolumeComponent>(); // if (com != null) // { // EngineNS.BoundingBox box = new EngineNS.BoundingBox(); // actor.GetAABB(ref box); // BuildWalkables(box); // HollowMakerAgent.BuildGeomScene(geomscene); // } // } //} // var test = geomscene.CreateRenderInfos(VP1.World); geomscene.SaveXND(scene.SceneFilename.Address + "/geoscene.dat"); //EngineNS.Bricks.HollowMaker.GeomScene temp = await EngineNS.Bricks.HollowMaker.GeomScene.CreateGeomScene(scene.SceneFilename.Address + "/geoscene.dat"); //int xx = 0; }