public TResult Build(AssetManagerLoader loader)
        {
            GameObject go = UnityEngine.Object.Instantiate(_go);
            // existing Decos are not evaluated. Assumed to be configured correctly
            TResult vehicle = go.GetComponent <TResult>();

            if (vehicle == null)
            {
                vehicle = go.AddComponent <TResult>();
                if (!ContainsTag("GUID"))
                {
                    throw new Exception("Guid is never set");
                }
            }

            Apply(new BaseObjectContainer <TResult>(loader, vehicle, go));
            foreach (Renderer componentsInChild in go.GetComponentsInChildren <Renderer>())
            {
                Parkitility.ReplaceWithParkitectMaterial(componentsInChild);
            }

            List <Transform> transforms = new List <Transform>();

            Utility.recursiveFindTransformsStartingWith("WheelsFront", go.transform, transforms);
            vehicle.frontAxisArray = transforms.ToArray();
            transforms.Clear();
            Utility.recursiveFindTransformsStartingWith("WheelsBack", go.transform, transforms);
            vehicle.backAxisArray = transforms.ToArray();


            loader.RegisterObject(vehicle);

            return(vehicle);
        }
        public TResult Build(AssetManagerLoader loader)
        {
            GameObject go = UnityEngine.Object.Instantiate(_go);
            // existing Decos are not evaluated. Assumed to be configured correctly
            TResult deco = go.GetComponent <TResult>();

            if (deco == null)
            {
                deco = go.AddComponent <TResult>();
                if (!ContainsTag("GUID"))
                {
                    throw new Exception("Guid is never set");
                }
            }

            Apply(new BaseObjectContainer <TResult>(loader, deco, go));
            foreach (Renderer componentsInChild in go.GetComponentsInChildren <Renderer>())
            {
                Parkitility.ReplaceWithParkitectMaterial(componentsInChild);
            }

            // register deco
            loader.RegisterObject(deco);
            return(deco);
        }
예제 #3
0
        public TResult Build(AssetManagerLoader loader)
        {
            if (!ContainsTag("GUID"))
            {
                throw new Exception("Guid unset");
            }
            if (!ContainsTag("DISPLAY"))
            {
                throw new Exception("Display unset");
            }
            if (!ContainsTag("MIDDLE_VEHICLE"))
            {
                throw new Exception("Middle Train is unset");
            }

            TResult result = ScriptableObject.CreateInstance <TResult>();

            Apply(new TrainContainer <TResult>(loader, result));
            loader.RegisterObject(result);
            return(result);
        }