コード例 #1
0
        public void ConversionIgnoresMissingMonoBehaviour()
        {
            TestTools.LogAssert.Expect(LogType.Warning, new Regex("missing"));
            var scene = EditorSceneManager.OpenScene("Packages/com.unity.entities/Unity.Entities.Hybrid.Tests/MissingMonoBehaviour.unity");
            var world = new World("Temp");

            GameObjectConversionUtility.ConvertScene(scene, world);
            world.Dispose();
        }
コード例 #2
0
 void Start()
 {
     drawRoads        = false;
     Points           = new List <Vector3>();
     carEntity        = GameObjectConversionUtility.ConvertGameObjectHierarchy(car, World.Active);
     entityManager    = World.Active.EntityManager;
     roadCounter      = 0;
     pointRoadCounter = 0;
 }
コード例 #3
0
 // Start is called before the first frame update
 void Start()
 {
     // Create entity prefab from the game object hierarchy once
     _settings      = GameObjectConversionSettings.FromWorld(World.DefaultGameObjectInjectionWorld, null);
     _prefabEntity  = GameObjectConversionUtility.ConvertGameObjectHierarchy(prefab, _settings);
     _entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;
     createLocations();
     createActions();
 }
コード例 #4
0
ファイル: Boot.cs プロジェクト: cjuillard/SineOfMadness
    void Start()
    {
        playerEntityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(playerPrefab, World.Active);
        enemy1EntityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(enemy1Prefab, World.Active);
        playerBulletEntity = GameObjectConversionUtility.ConvertGameObjectHierarchy(bulletPrefab, World.Active);

        InitPlayer();
        InitEnemySpawns();
    }
コード例 #5
0
    // Start is called before the first frame update
    void Start()
    {
        ResourceEnt = GameObjectConversionUtility.ConvertGameObjectHierarchy(ResourcePrefab, World.Active);

        for (int i = 0; i < ResourcesAtStart; ++i)
        {
            SpawnResource();
        }
    }
コード例 #6
0
        void Start()
        {
            sourceEntity  = GameObjectConversionUtility.ConvertGameObjectHierarchy(prefab, World.Active);
            entityManager = World.Active.EntityManager;
            center        = float3.zero;
            center.y     += range.y;

            btn.onClick.AddListener(() => { SpawnSphere(); });
        }
コード例 #7
0
        static T ConvertHierarchyAndUpdateTransformSystems <T>(
            GameObject gameObjectHierarchyRoot, EntityQueryDesc query, bool returnData
            )
            where T : struct, IComponentData
        {
            if (
                returnData && // i.e. value of post-conversion data will be asserted
                !query.All.Contains(ComponentType.ReadWrite <T>()) &&
                !query.Any.Contains(ComponentType.ReadWrite <T>())
                )
            {
                Assert.Fail($"{nameof(query)} must contain {ComponentType.ReadWrite<T>()} in order to trigger update of transform system");
            }

            var queryStr = query.ToReadableString();

            using (var world = new World("Test world"))
            {
                // convert GameObject hierarchy
                GameObjectConversionUtility.ConvertGameObjectHierarchy(gameObjectHierarchyRoot, world);

                // trigger update of transform systems
                using (var group = world.EntityManager.CreateEntityQuery(query))
                {
                    using (var entities = group.ToEntityArray(Allocator.TempJob))
                    {
                        Assert.That(
                            entities.Length, Is.EqualTo(1),
                            $"Conversion systems produced unexpected number of physics entities {queryStr}"
                            );
                    }

                    var localToWorldSystem = world.GetOrCreateSystem <EndFrameTRSToLocalToWorldSystem>();
                    var lastVersion        = localToWorldSystem.GlobalSystemVersion;

                    world.GetOrCreateSystem <EndFrameParentSystem>().Update();
                    world.GetOrCreateSystem <EndFrameCompositeRotationSystem>().Update();
                    world.GetOrCreateSystem <EndFrameCompositeScaleSystem>().Update();
                    world.GetOrCreateSystem <EndFrameParentScaleInverseSystem>().Update();
                    world.GetOrCreateSystem <EndFrameTRSToLocalToWorldSystem>().Update();
                    world.GetOrCreateSystem <EndFrameTRSToLocalToParentSystem>().Update();
                    world.GetOrCreateSystem <EndFrameLocalToParentSystem>().Update();
                    world.GetOrCreateSystem <EndFrameWorldToLocalSystem>().Update();
                    world.EntityManager.CompleteAllJobs();

                    using (var entities = group.ToEntityArray(Allocator.TempJob))
                    {
                        Assume.That(
                            entities.Length, Is.EqualTo(1),
                            $"Updating transform systems resulted in unexpected number of physics entities {queryStr}"
                            );
                    }

                    if (!returnData)
                    {
                        return(default);
コード例 #8
0
 void Start()
 {
     if (useECS)
     {
         manager           = World.Active.EntityManager;
         wallEntityPrefab  = GameObjectConversionUtility.ConvertGameObjectHierarchy(wallPrefab, World.Active);
         floorEntityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(floorPrefab, World.Active);
     }
     InitializeMap();
 }
コード例 #9
0
 void Awake()
 {
     using (BlobAssetStore blobAssetStore = new BlobAssetStore()){
         var                setting            = GameObjectConversionSettings.FromWorld(World.DefaultGameObjectInjectionWorld, blobAssetStore);
         Entity             entityPrefab       = GameObjectConversionUtility.ConvertGameObjectHierarchy(AgentPrefab, setting);
         AgentManagerSystem agentManagerSystem = World.DefaultGameObjectInjectionWorld.GetOrCreateSystem <AgentManagerSystem>();
         agentManagerSystem.CreateAgents(entityPrefab, CountAgents);
         //agentManagerSystem.Materials = Materials;
     }
 }
コード例 #10
0
    void Start()
    {
        // PrefabEntityをPrefabObjectから作成
        this.prefabEntity = GameObjectConversionUtility.ConvertGameObjectHierarchy(prefab, World.Active);
        // 最初の一個を原点に作成(ディフォルト値がゼロなので)
        this.entities = new NativeArray <Entity>(1, Allocator.Persistent, NativeArrayOptions.UninitializedMemory);
        World.Active.EntityManager.Instantiate(this.prefabEntity, this.entities);

        this.textGUI.text = $"{this.entities.Length.ToString("0")} [Tapioka]";
    }
コード例 #11
0
    private void Start()
    {
        _entity        = GameObjectConversionUtility.ConvertGameObjectHierarchy(Prefab, World.Active);
        _entityManager = World.Active.EntityManager;

        for (var i = 0; i < Count; i++)
        {
            Invoke(nameof(Spawn), i * Interval);
        }
    }
コード例 #12
0
        //   private static GameObject chooseEffectPrefab;

        public static void Init()
        {
            entityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(
                Resources.Load("Character/CharacterEntity") as GameObject,
                GameObjectConversionSettings.FromWorld(World.DefaultGameObjectInjectionWorld,
                                                       World.DefaultGameObjectInjectionWorld.GetOrCreateSystem <ConvertToEntitySystem>().BlobAssetStore));

            presentationPrefab = Resources.Load("Character/Character1") as GameObject;
            //     chooseEffectPrefab = Resources.Load("Effect/ChooseEffect") as GameObject;
        }
コード例 #13
0
    public void TestAudioSourceConversion()
    {
        var gameObject = new GameObject("TestObject");

        gameObject.AddComponent <AudioSource>();
        var entity = GameObjectConversionUtility.ConvertGameObjectHierarchy(gameObject, settings);

        Assert.IsTrue(m_Manager.HasComponent <Unity.Tiny.Audio.AudioSource>(entity));
        Assert.IsTrue(m_Manager.HasComponent <Unity.Tiny.Audio.Audio2dPanning>(entity));
    }
コード例 #14
0
    private void Start()
    {
        var world = World.DefaultGameObjectInjectionWorld;

        m_EntityManager = world.EntityManager;

        m_ProjectileEntityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(m_ProjectilePrefab, new GameObjectConversionSettings {
            DestinationWorld = World.DefaultGameObjectInjectionWorld
        });
    }
コード例 #15
0
    // Start is called before the first frame update
    void Start()
    {
        m_world   = World.DefaultGameObjectInjectionWorld;
        m_manager = m_world.EntityManager;

        //Permet de convertir une prefab Mono en entité
        GameObjectConversionSettings settings = GameObjectConversionSettings.FromWorld(m_world, null);

        m_entityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(m_prefab, settings);
    }
コード例 #16
0
    private void Start()
    {
        var settings = GameObjectConversionSettings.FromWorld(World.DefaultGameObjectInjectionWorld, null);

        entityFromPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(enemy, settings);

        entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;

        InvokeRepeating("Spawn", 0, spawnTime);
    }
コード例 #17
0
ファイル: EnemySpawner.cs プロジェクト: justq751/ECStest
    private void Start()
    {
        entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;

        var settings = GameObjectConversionSettings.FromWorld(World.DefaultGameObjectInjectionWorld, null);

        enemyEntityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(enemyPrefab, settings);
        //entityManager.Instantiate(enemyEntityPrefab);
        SpawnWave();
    }
コード例 #18
0
    protected virtual void Start()
    {
        // get reference to current EntityManager
        entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;

        // create entity prefab from the game object prefab, using default conversion settings
        var settings = GameObjectConversionSettings.FromWorld(World.DefaultGameObjectInjectionWorld, null);

        bulletEntityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(bulletPrefab, settings);
    }
コード例 #19
0
    void Start()
    {
        entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;

        entityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(
            gameObjectPrefab,
            GameObjectConversionSettings.FromWorld(World.DefaultGameObjectInjectionWorld, null));

        InstatiateGrid(xSize, ySize, spacing);
    }
コード例 #20
0
 void Start()
 {
     // initialize manager and bullet prefab for instantiate
     manager            = World.Active.EntityManager;
     bulletEntityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(shot, World.Active);
     nextFire1          = Time.time + Done_GameController_stage1.startWait;
     nextFire2          = Time.time + Done_GameController_stage1.startWait + 10;
     nextFire3          = Time.time + Done_GameController_stage1.startWait + 20;
     haveAccelerate     = false;
 }
コード例 #21
0
ファイル: Spawner.cs プロジェクト: kangtachan/DOTSCompare
 private void SetupECSConversion()
 {
     if (mode == DemoMode.ECSConversion)
     {
         defaultWorld  = World.DefaultGameObjectInjectionWorld;
         entityManager = defaultWorld.EntityManager;
         GameObjectConversionSettings settings = GameObjectConversionSettings.FromWorld(defaultWorld, null);
         unitEntityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(ECSPrefab, settings);
     }
 }
コード例 #22
0
 void Start()
 {
     prefabReference = prefabGameObject;
     using (BlobAssetStore blobAssetStore = new BlobAssetStore())
     {
         var    settings     = GameObjectConversionSettings.FromWorld(World.DefaultGameObjectInjectionWorld, null);
         Entity prefabEntity = GameObjectConversionUtility.ConvertGameObjectHierarchy(prefabGameObject, settings);
         PrefabEntities.prefabEntity = prefabEntity;
     }
 }
コード例 #23
0
ファイル: PrefabEntities.cs プロジェクト: ho-dragon/dots
 public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
 {
     using (BlobAssetStore blobAssetStore = new BlobAssetStore())
     {
         Entity prefabEntity = GameObjectConversionUtility.ConvertGameObjectHierarchy(prefabGameObject
             , GameObjectConversionSettings.FromWorld(dstManager.World, blobAssetStore));
         
         PrefabEntities.prefabEntity = prefabEntity;
     }
 }
コード例 #24
0
        protected override void OnStartRunning()
        {
            base.OnStartRunning();

            setup = EnemySpawner.Instance.GetComponent <SnakeSetup>();
            var settings = GameObjectConversionSettings.FromWorld(World, new BlobAssetStore());

            headPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(setup.headPrefab, settings);
            tailPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(setup.tailPrefab, settings);
        }
コード例 #25
0
        //------------------------------------------
        // 初期化
        //------------------------------------------
        #region ===== INITIALIZE =====

        /// <summary>
        /// World 座標系で座標を扱うので注意!!
        /// </summary>
        /// <param name="_sys"></param>
        public void Initialize(Camera _mainCam, GameObject _mainPrefab, GameObject _stickPrefab)
        {
            m_mainCamera = _mainCam;
            E_Manager    = World.Active.EntityManager;
            // UI生成
            var parentEntity = E_Manager.Instantiate(GameObjectConversionUtility.ConvertGameObjectHierarchy(_mainPrefab, World.Active));

            E_Manager.SetComponentData(parentEntity, new Translation {
                Value = new float3(0f, 0f, 0f)
            });
            #if UNITY_EDITOR
            E_Manager.SetName(parentEntity, "Base");
            #endif

            var childEntity = E_Manager.Instantiate(GameObjectConversionUtility.ConvertGameObjectHierarchy(_stickPrefab, World.Active));
            E_Manager.SetComponentData(childEntity, new Translation {
                Value = new float3(0f, 0f, 0f)
            });
            #if UNITY_EDITOR
            E_Manager.SetName(childEntity, "Stick");
            #endif

            var relationEntity = E_Manager.CreateEntity();
            #if UNITY_EDITOR
            E_Manager.SetName(relationEntity, "UI_Relation");
            #endif

            m_uiTransData = new EcsUIData()
            {
                Parent = parentEntity,
                Child  = childEntity,
            };
            E_Manager.AddComponentData(relationEntity, m_uiTransData);


            // Size 設定
            m_baseSpriteParam.PixelPerUnit    = _mainCam.orthographicSize;
            m_baseSpriteParam.Radius          = 10;
            m_stickerSpriteParam.PixelPerUnit = _mainCam.orthographicSize;
            m_stickerSpriteParam.Radius       = 3;
            // Base の可動域の設定
            Vector3 leftBottom = MainCam.ScreenToWorldPoint(new Vector3(0f, 0f, 0f));
            Vector3 rightTop   = MainCam.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, 0f));
            m_baseMoveRange_X = new Vector2(leftBottom.x, rightTop.x);
            m_baseMoveRange_Z = new Vector2(leftBottom.z, rightTop.z);

            // Stick の可動域
            m_stickMoveRange = (BaseSpriteRadius - m_stickerSpriteParam.Radius);// Radius


            m_posY = leftBottom.y - 100;
            HideUI();

            m_isInitialized = true;
        }
コード例 #26
0
    // Start is called before the first frame update
    void Start()
    {
        assetStore    = new BlobAssetStore();
        world         = World.DefaultGameObjectInjectionWorld;
        entityManager = world.EntityManager;
        GameObjectConversionSettings settings = GameObjectConversionSettings.FromWorld(world, assetStore);

        Entity enemyEntity   = GameObjectConversionUtility.ConvertGameObjectHierarchy(enemyPrefab, settings);
        Entity neutralEntity = GameObjectConversionUtility.ConvertGameObjectHierarchy(neutralPrefab, settings);

        projectileEntity             = GameObjectConversionUtility.ConvertGameObjectHierarchy(projectilePrefab, settings);
        spawnedAfterEnemyDeathEntity = GameObjectConversionUtility.ConvertGameObjectHierarchy(spawnedAfterEnemyDeathPrefab, settings);

        for (int i = 0; i < numberOfEnemyPrefabs; i++)
        {
            var instance = entityManager.Instantiate(enemyEntity);

            float x = UnityEngine.Random.Range(-500, 500);
            float y = UnityEngine.Random.Range(-500, 500);
            float z = UnityEngine.Random.Range(-500, 500);

            float3 position = new float3(x, y, z);
            entityManager.SetComponentData(instance, new Translation
            {
                Value = position
            });

            float randomSpeed = UnityEngine.Random.Range(1, 10) / 10f;
            entityManager.SetComponentData(instance, new MotionData
            {
                motionSpeed = randomSpeed
            });
        }

        for (int i = 0; i < numberOfNeutralPrefabs; i++)
        {
            var instance = entityManager.Instantiate(neutralEntity);

            float x = UnityEngine.Random.Range(-500, 500);
            float y = UnityEngine.Random.Range(-500, 500);
            float z = UnityEngine.Random.Range(-500, 500);

            float3 position = new float3(x, y, z);
            entityManager.SetComponentData(instance, new Translation
            {
                Value = position
            });

            float randomSpeed = UnityEngine.Random.Range(1, 10) / 10f;
            entityManager.SetComponentData(instance, new MotionData
            {
                motionSpeed = randomSpeed
            });
        }
    }
コード例 #27
0
        private void Start()
        {
            var settings = GameObjectConversionSettings.FromWorld(World.DefaultGameObjectInjectionWorld, null);

            settings.ConversionFlags = GameObjectConversionUtility.ConversionFlags.AssignName;
            var entityManager   = World.DefaultGameObjectInjectionWorld.EntityManager;
            var entityInfos     = _map.EntityInfos;
            var entityPrefabs   = new Dictionary <GameObject, Entity>();
            var entityInstances = new Entity[entityInfos.Length];

            for (int i = 0; i < entityInfos.Length; i++)
            {
                var currentInfo = entityInfos[i];
                if (!entityPrefabs.ContainsKey(currentInfo.Entity))
                {
                    var entityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(currentInfo.Entity, settings);
                    entityPrefabs.Add(currentInfo.Entity, entityPrefab);
                }
                var instance = entityManager.Instantiate(entityPrefabs[currentInfo.Entity]);

                entityManager.SetComponentData(instance, new Translation {
                    Value = new float3(currentInfo.Position.x, 0, currentInfo.Position.y)
                });
                entityManager.SetComponentData(instance, new Rotation {
                    Value = new quaternion(currentInfo.Rotation.x, currentInfo.Rotation.y, currentInfo.Rotation.z, currentInfo.Rotation.w)
                });

                entityInstances[i] = instance;
            }

            for (int i = 0; i < entityInstances.Length; i++)
            {
                var infos  = entityInfos[i].Components;
                var entity = entityInstances[i];

                for (int j = 0; j < infos.Length; j++)
                {
                    /*
                     * Итак, у нас есть имя типа конвертера, энтитя, список энтитей, ворлд... что еще нужно? Да вроде бы все...
                     * Нам тут при инстанцировании важно не знать что мы инстанцируем, поэтому всю олологику придется пхать в один класс
                     */
                    var info = infos[j];
                    //var converterType = ComponentsTable.GetComponentData(info.ConverterTypeId);
                    //var componentObject =
                    //    (JsonUtility.FromJson(info.SerializedData, converterType) as ComponentConvertion)
                    //    .Convert(entityInstances);
                    //var type = componentObject.GetType();
                    //var mine = new MineCommand(){ TargetDruse = entity };
                    //entityManager.AddComponentData<MineCommand>(entity, mine);
                    World.DefaultGameObjectInjectionWorld.AddComponentData(info.ConverterTypeId, entity, entityInstances, info.SerializedData);
                    //entityManager.AddComponentObject(entity, componentObject);
                    //entityManager.AddComponent()
                }
            }
        }
コード例 #28
0
    // Start is called before the first frame update
    void Start()
    {
        var prefab        = GameObjectConversionUtility.ConvertGameObjectHierarchy(cellPrefab, World.Active);
        var entityManager = World.Active.EntityManager;

        for (int x = 0; x < gridWidth; x++)
        {
            for (int y = 0; y < gridHeight; y++)
            {
                for (int z = 0; z < gridDepth; z++)
                {
                    // Instantiate our cell prefab as a entity
                    var cellInstance = entityManager.Instantiate(prefab);

                    var position = transform.TransformPoint(x * 1.2f - 4.5f, y * 1.2f, z * 1.2f);

                    CellTransition cTran = new CellTransition {
                        value = 0.0f
                    };

                    CellIndex cIndex;

                    if (x == 0 || x == gridWidth - 1 || y == 0 || y == gridHeight - 1 || z == 0 || z == gridDepth - 1)
                    {
                        cIndex = new CellIndex {
                            deadCell = true, index = cellCounter
                        };
                    }
                    else
                    {
                        cIndex = new CellIndex {
                            deadCell = false, index = cellCounter
                        };
                    }

                    cellCounter++;

                    entityManager.AddComponent <CellIndex>(cellInstance);
                    entityManager.AddComponent <CellTransition>(cellInstance);
                    entityManager.AddComponent <CellStatus>(cellInstance);
                    entityManager.AddComponent <Scale>(cellInstance);
                    //entityManager.AddComponent<CellNeighbors>(cellInstance);

                    entityManager.SetComponentData(cellInstance, cTran);
                    entityManager.SetComponentData(cellInstance, cIndex);
                    entityManager.SetComponentData(cellInstance, new Translation {
                        Value = position
                    });
                    entityManager.SetComponentData(cellInstance, new Scale {
                        Value = cIndex.deadCell ? 0.0f:1.0f
                    });
                }
            }
        }
    }
コード例 #29
0
    // Start is called before the first frame update
    void Awake()
    {
        manager        = World.Active.EntityManager;
        random         = new Random();
        asteroidPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(AsteroidPrefab, World.Active);
        entities       = new List <Entity>();

        SpawnAsteroidECS();
        SpawnAsteroidECS();
        SpawnAsteroidECS();
    }
コード例 #30
0
    void Start()
    {
        _defaultWorld  = World.DefaultGameObjectInjectionWorld;
        _entityManager = _defaultWorld.EntityManager;

        GameObjectConversionSettings settings = GameObjectConversionSettings.FromWorld(_defaultWorld, null);

        _entityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(_prefab, settings);

        InstantiateEntityGrid(_xSize, _ySize, _spacing);
    }