예제 #1
0
 public void Launch(FXAsset impactFX, ObjectPoolAsset pool, Faction faction)
 {
     m_pool       = pool;
     m_impactFX   = impactFX;
     m_faction    = faction;
     m_isLaunched = true;
 }
예제 #2
0
        public void Play(Vector3 worldPos, ObjectPoolAsset pool)
        {
            GameObject go = GenerateFXGO(worldPos, pool);

            if (!go)
            {
                Debug.Log("no go created "); return;
            }
            PlayOnStartSFX(go);
        }
예제 #3
0
        public void AssembleAnimation(UnitStateType state, UnitAsset asset)
        {
            m_asset         = asset;
            m_state         = state;
            m_pool          = m_asset.ObjectPoolAsset();
            m_deathFX       = m_asset.DeathFX();
            m_collisionFX   = m_asset.CollisionFX();
            m_camShakeEvent = m_asset.CamShakeEvent();
            m_motorSFX      = m_asset.MotorSFX();

            m_mesh = m_asset.AddMeshToUnit(transform);
        }
예제 #4
0
        public void Play(Transform p, Vector3 localPos, ObjectPoolAsset pool)
        {
            GameObject go = GenerateFXGO(p.position + localPos, pool);

            if (!go)
            {
                Debug.Log("no go created "); return;
            }
            go.transform.parent        = p;
            go.transform.localPosition = localPos;
            go.transform.localRotation = Quaternion.Euler(p.forward);
            PlayOnStartSFX(go);
        }
예제 #5
0
 public void PoolAmmoAndFX(ObjectPoolAsset pool)
 {
     m_pool = pool;
     m_pool.TryCreateNewPool(m_ammoAsset);
     if (m_launchFX)
     {
         m_pool.TryCreateNewPool(m_launchFX);
     }
     if (m_impactFX)
     {
         m_pool.TryCreateNewPool(m_impactFX);
     }
 }
예제 #6
0
        public void AssembleHealth(UnitStateType state, UnitAsset asset, UnitBuilder builder, UnitAnimation animation)
        {
            m_asset     = asset;
            m_state     = state;
            m_builder   = builder;
            m_animation = animation;

            m_isPlayer = m_asset.IsPlayer();
            m_pool     = m_asset.ObjectPoolAsset();
            m_faction  = m_asset.Faction();

            m_playerHealthChangeEvent = m_asset.UnitHealthChangeEvent();
            m_playerDeathEvent        = m_asset.UnitDeathEvent();
        }
예제 #7
0
        //private bool m_isPaused = true;

        #region assembly
        public void SetupUnitWeapons(UnitStateType state, UnitAsset asset)
        {
            m_asset = asset;
            m_state = state;

            m_faction = m_asset.Faction();
            m_pool    = m_asset.ObjectPoolAsset();

            m_weaponSlots = m_asset.SetWeaponSlotsOnUnit(transform);

            m_autoFire = m_asset.AutoFire();

            InitialiseAllWeaponSlots();
            //m_activateOnEnable = activateOnEnable;
            //ConfigForStart();
        }
예제 #8
0
        private GameObject GenerateFXGO(Vector3 worldPos, ObjectPoolAsset pool)
        {
            GameObject go;

            if (!pool)
            {
                go = Instantiate(m_prefab);
                go.transform.position = worldPos;

                if (m_autoRepoolLife > 0f)
                {
                    go.AddComponent <AutoDestroy>().SetLifespan(m_autoRepoolLife);
                }
            }
            else
            {
                go = pool.GetObjectFromPool(this, worldPos, Quaternion.identity);
            }

            return(go);
        }
예제 #9
0
 public void SetPoolAsset(ObjectPoolAsset poolAsset)
 {
     objectPool = poolAsset;
 }
예제 #10
0
 public void Initialise(ObjectPoolAsset pool, Faction faction)
 {
     m_pool    = pool;
     m_faction = faction;
 }