コード例 #1
0
ファイル: LevelView.cs プロジェクト: AndreyMalykhin/Catzilla
        public LevelObjectView NewObject(
            LevelObjectView objectProto, Vector3 spawnPoint, int areaIndex)
        {
            // DebugUtils.Log("LevelView.NewObject()");
            var             poolable = objectProto.GetComponent <PoolableView>();
            LevelObjectView obj      = null;

            if (poolable == null)
            {
                obj =
                    instantiator.InstantiatePrefabForComponent <LevelObjectView>(
                        objectProto.gameObject);
            }
            else
            {
                obj = poolStorage.Take(poolable.PoolId)
                      .GetComponent <LevelObjectView>();
            }

            var position = new Vector3(
                spawnPoint.x,
                spawnPoint.y,
                spawnPoint.z + areaIndex * areaDepth);

            obj.transform.position = position;
            obj.transform.parent   = transform;
            return(obj);
        }
コード例 #2
0
        private PlanetController GeneratePlanet([NotNull] PlanetController planetPrefab, Vector3 position, [NotNull] Transform parent)
        {
            // todo: use Extenject Factory
            var planet = _instantiator.InstantiatePrefabForComponent <PlanetController>(planetPrefab, position, Quaternion.identity, parent);

            return(planet);
        }
コード例 #3
0
 public static T InstantiatePrefabForComponent <T>(
     this IInstantiator instantiator,
     T prefab
     ) where T : Component
 {
     return(instantiator.InstantiatePrefabForComponent <T>(
                prefab.gameObject
                ));
 }
コード例 #4
0
        public void Spawn(Vector3 position)
        {
            var geometryObjectName = _geometryObjectsJson.RandomName;

            var clickColorData = _geometryObjectData.FindClickColorData(geometryObjectName);

            var geometryObjectView       = _instantiator.InstantiatePrefabForComponent <IGeometryObjectView>(_geometryObjectPrefabs[geometryObjectName]);
            var geometryObjectModel      = new GeometryObjectModel(clickColorData);
            var geometryObjectController = new GeometryObjectController(geometryObjectModel, geometryObjectView);

            geometryObjectModel.Position = position;
        }
コード例 #5
0
        private T Instantiate <T>(IInstantiator instantiator, GameObject prefab, Vector3 position, Quaternion rotation,
                                  Transform parent = null)
        {
            T component = default;

            if (prefab != null && instantiator != null)
            {
                component = instantiator.InstantiatePrefabForComponent <T>(prefab, position, rotation, parent);
            }

            return(component);
        }
コード例 #6
0
        private TPrefab InstantiatePrefab <TPrefab>(GameObject prefab, Transform location, bool asAnchor)
            where TPrefab : Component
        {
            var prefabActive = prefab.activeSelf;

            prefab.SetActive(false);

            var instance = asAnchor
                ? _instantiator.InstantiatePrefabForComponent <TPrefab>(prefab, location.position, location.rotation,
                                                                        location.parent)
                : _instantiator.InstantiatePrefabForComponent <TPrefab>(prefab, location);

            prefab.SetActive(prefabActive);

            if (instance == null)
            {
                throw new InvalidOperationException($"No {typeof(TPrefab).Name} component on prefab root GameObject");
            }

            PrepareInstance(instance);

            return(instance);
        }
コード例 #7
0
        public PoolableView Get()
        {
            var instance =
                instantiator.InstantiatePrefabForComponent <PoolableView>(
                    proto.gameObject);

            if (instance.DeactivateOnReturn)
            {
                GameObject instanceObject = instance.gameObject;
                instance.ActivateOnTake = instanceObject.activeSelf;
                instanceObject.SetActive(false);
            }

            if (parent != null)
            {
                instance.transform.SetParent(parent, !instance.IsUI);
            }

            return(instance);
        }
コード例 #8
0
        public void OnConstruct()
        {
            // DebugUtils.Log("PlayerView.OnConstruct()");
            float halfWidth = Collider.bounds.extents.x;

            minX   = levelMinX + halfWidth;
            maxX   = levelMaxX - halfWidth;
            health = MaxHealth;
            cameraStartPosition    = Camera.transform.localPosition;
            creationTime           = Time.time;
            speedChangeDelayWaiter = new WaitForSeconds(speedChangeDelay);
            speedCheckRateWaiter   = new WaitForSeconds(speedCheckRate);
            FrontSpeed             = BaseFrontSpeed;
            SideSpeed           = BaseSideSpeed;
            RefuseChance        = BaseRefuseChance;
            RefuseDuration      = BaseRefuseDuration;
            CriticalScoreChance = BaseCriticalScoreChance;
            CriticalScoreFactor = BaseCriticalScoreFactor;
            DamageAbsorbChance  = BaseDamageAbsorbChance;
            DamageAbsorbFactor  = BaseDamageAbsorbFactor;
            HUD = instantiator.InstantiatePrefabForComponent <HUDView>(
                hudProto.gameObject);
            eventBus.Fire((int)Events.PlayerConstruct, new Evt(this));
        }