Exemple #1
0
        private void ImportRenderObjects(IRenderable item, RenderObjectGroup rog, GameObject parent)
        {
            var obj = new GameObject(rog.Name);

            obj.transform.parent = parent.transform;

            if (rog.HasOnlyChild)
            {
                ImportRenderObject(item, rog.RenderObjects[0], obj);
            }
            else if (rog.HasChildren)
            {
                foreach (var ro in rog.RenderObjects)
                {
                    var subObj = new GameObject(ro.Name);
                    subObj.transform.parent = obj.transform;
                    ImportRenderObject(item, ro, subObj);
                }
            }

            // apply transformation
            if (rog.HasChildren)
            {
                SetTransform(obj.transform, rog.TransformationMatrix.ToUnityMatrix());
            }

            // add unity component
            switch (item)
            {
            case Bumper bumper: obj.AddComponent <VisualPinballBumper>().SetData(bumper.Data); break;

            case Flipper flipper: obj.AddComponent <VisualPinballFlipper>().SetData(flipper.Data); break;

            case Gate gate: obj.AddComponent <VisualPinballGate>().SetData(gate.Data); break;

            case HitTarget hitTarget: obj.AddComponent <VisualPinballHitTarget>().SetData(hitTarget.Data); break;

            case Kicker kicker: obj.AddComponent <VisualPinballKicker>().SetData(kicker.Data); break;

            case Primitive primitive: obj.AddComponent <VisualPinballPrimitive>().SetData(primitive.Data); break;

            case Ramp ramp: obj.AddComponent <VisualPinballRamp>().SetData(ramp.Data); break;

            case Rubber rubber: obj.AddComponent <VisualPinballRubber>().SetData(rubber.Data); break;

            case Spinner spinner: obj.AddComponent <VisualPinballSpinner>().SetData(spinner.Data); break;

            case Surface surface: obj.AddComponent <VisualPinballSurface>().SetData(surface.Data); break;

            case Trigger trigger: obj.AddComponent <VisualPinballTrigger>().SetData(trigger.Data); break;
            }
        }
        private void UpdateMesh(string childName, GameObject go, RenderObjectGroup rog)
        {
            var ro = rog.RenderObjects.FirstOrDefault(r => r.Name == childName);

            if (ro == null)
            {
                _logger.Warn("Cannot find mesh {0} in {1} {2}.", childName, typeof(TItem).Name, data.GetName());
                return;
            }
            var unityMesh = go.GetComponent <MeshFilter>().sharedMesh;

            ro.Mesh.ApplyToUnityMesh(unityMesh);
        }
        private static GameObject GetOrCreateParent(Component tb, RenderObjectGroup rog)
        {
            var parent = tb.gameObject.transform.Find(rog.Parent)?.gameObject;

            if (parent == null)
            {
                parent = new GameObject(rog.Parent);
                parent.transform.parent        = tb.gameObject.transform;
                parent.transform.localPosition = Vector3.zero;
                parent.transform.localRotation = Quaternion.identity;
                parent.transform.localScale    = Vector3.one;
            }

            return(parent);
        }
Exemple #4
0
        public static MonoBehaviour SetupGameObject(this Engine.VPT.Table.Table table, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <PlayfieldAuthoring>();

            obj.AddComponent <ConvertToEntity>();
            return(ic);
        }
        public static GateAuthoring SetupGameObject(this Engine.VPT.Gate.Gate gate, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <GateAuthoring>().SetItem(gate);

            obj.AddComponent <ConvertToEntity>();

            var wire = obj.transform.Find("Wire").gameObject;

            wire.AddComponent <GateWireAuthoring>().SetItem(gate, "Wire");

            return(ic as GateAuthoring);
        }
Exemple #6
0
        public static LightAuthoring SetupGameObject(this Engine.VPT.Light.Light light, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <LightAuthoring>().SetItem(light);

            return(ic as LightAuthoring);
        }
        public static LightBehavior SetupGameObject(this Engine.VPT.Light.Light light, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <LightBehavior>().SetData(light.Data);

            return(ic as LightBehavior);
        }
Exemple #8
0
        public static TriggerBehavior SetupGameObject(this Engine.VPT.Trigger.Trigger trigger, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <TriggerBehavior>().SetItem(trigger);

            obj.AddComponent <ConvertToEntity>();
            return(ic as TriggerBehavior);
        }
        public static FlipperAuthoring SetupGameObject(this Engine.VPT.Flipper.Flipper flipper, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <FlipperAuthoring>().SetItem(flipper);

            obj.AddComponent <ConvertToEntity>();
            return(ic as FlipperAuthoring);
        }
Exemple #10
0
        public static PlungerBehavior SetupGameObject(this Engine.VPT.Plunger.Plunger plunger, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <PlungerBehavior>().SetData(plunger.Data);

            var rod = obj.transform.Find(PlungerMeshGenerator.RodName);

            if (rod != null)
            {
                rod.gameObject.AddComponent <PlungerRodBehavior>();
            }

            var spring = obj.transform.Find(PlungerMeshGenerator.SpringName);

            if (spring != null)
            {
                spring.gameObject.AddComponent <PlungerSpringBehavior>();
            }

            var flat = obj.transform.Find(PlungerMeshGenerator.FlatName);

            if (flat != null)
            {
                flat.gameObject.AddComponent <PlungerFlatBehavior>();
            }

            obj.AddComponent <ConvertToEntity>();
            return(ic as PlungerBehavior);
        }
Exemple #11
0
        public static RubberAuthoring SetupGameObject(this Engine.VPT.Rubber.Rubber rubber, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <RubberAuthoring>().SetItem(rubber);

            obj.AddComponent <ConvertToEntity>();
            return(ic as RubberAuthoring);
        }
Exemple #12
0
        public static RampBehavior SetupGameObject(this Engine.VPT.Ramp.Ramp ramp, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <RampBehavior>().SetItem(ramp);

            obj.AddComponent <ConvertToEntity>();
            return(ic as RampBehavior);
        }
        public static IEnumerable <Tuple <GameObject, RenderObject> > ConvertRenderObjects(IRenderable item, RenderObjectGroup rog, GameObject parent, TableAuthoring tb, out GameObject obj)
        {
            obj = new GameObject(rog.Name);
            obj.transform.parent = parent.transform;

            var createdObjs = new Tuple <GameObject, RenderObject> [0];

            if (rog.HasOnlyChild && !rog.ForceChild)
            {
                ConvertRenderObject(rog.RenderObjects[0], obj, tb);
                createdObjs = new[] { new Tuple <GameObject, RenderObject>(obj, rog.RenderObjects[0]) };
            }
            else if (rog.HasChildren)
            {
                createdObjs = new Tuple <GameObject, RenderObject> [rog.RenderObjects.Length];
                var i = 0;
                foreach (var ro in rog.RenderObjects)
                {
                    var subObj = new GameObject(ro.Name);
                    subObj.transform.SetParent(obj.transform, false);
                    subObj.layer = ChildObjectsLayer;
                    ConvertRenderObject(ro, subObj, tb);
                    createdObjs[i++] = new Tuple <GameObject, RenderObject>(subObj, ro);
                }
            }

            // apply transformation
            obj.transform.SetFromMatrix(rog.TransformationMatrix.ToUnityMatrix());

            // add unity component
            MonoBehaviour ic = null;

            switch (item)
            {
            case Bumper bumper:                                     ic = bumper.SetupGameObject(obj, rog); break;

            case Flipper flipper:                           ic = flipper.SetupGameObject(obj, rog); break;

            case Gate gate:                                         ic = gate.SetupGameObject(obj, rog); break;

            case HitTarget hitTarget:                       ic = hitTarget.SetupGameObject(obj, rog); break;

            case Kicker kicker:                                     ic = kicker.SetupGameObject(obj, rog); break;

            case Engine.VPT.Light.Light lt:         ic = lt.SetupGameObject(obj, rog); break;

            case Plunger plunger:                           ic = plunger.SetupGameObject(obj, rog); break;

            case Primitive primitive:                       ic = primitive.SetupGameObject(obj, rog); break;

            case Ramp ramp:                                         ic = ramp.SetupGameObject(obj, rog); break;

            case Rubber rubber:                                     ic = rubber.SetupGameObject(obj, rog); break;

            case Spinner spinner:                           ic = spinner.SetupGameObject(obj, rog); break;

            case Surface surface:                           ic = surface.SetupGameObject(obj, rog); break;

            case Table table:                                       ic = table.SetupGameObject(obj, rog); break;

            case Trigger trigger:                           ic = trigger.SetupGameObject(obj, rog); break;
            }
            return(createdObjs);
        }
        public static GateBehavior SetupGameObject(this Engine.VPT.Gate.Gate gate, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <GateBehavior>().SetData(gate.Data);

            obj.AddComponent <ConvertToEntity>();

            var wire = obj.transform.Find("Wire").gameObject;

            wire.AddComponent <GateWireBehavior>().SetData(gate.Data, "Wire");

            return(ic as GateBehavior);
        }
Exemple #15
0
        public static SurfaceAuthoring SetupGameObject(this Engine.VPT.Surface.Surface surface, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <SurfaceAuthoring>().SetItem(surface);

            obj.AddComponent <ConvertToEntity>();
            return(ic as SurfaceAuthoring);
        }
Exemple #16
0
        public static SpinnerBehavior SetupGameObject(this Engine.VPT.Spinner.Spinner spinner, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <SpinnerBehavior>().SetData(spinner.Data);

            obj.AddComponent <ConvertToEntity>();

            var wire = obj.transform.Find("Plate").gameObject;

            wire.AddComponent <SpinnerPlateBehavior>().SetData(spinner.Data, "Plate");

            return(ic as SpinnerBehavior);
        }
Exemple #17
0
        public static TroughAuthoring SetupGameObject(this Engine.VPT.Trough.Trough Trough, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <TroughAuthoring>().SetItem(Trough);

            obj.AddComponent <ConvertToEntity>();
            return(ic as TroughAuthoring);
        }
Exemple #18
0
        public static HitTargetBehavior SetupGameObject(this Engine.VPT.HitTarget.HitTarget hitTarget, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <HitTargetBehavior>().SetData(hitTarget.Data);

            obj.AddComponent <ConvertToEntity>();
            return(ic as HitTargetBehavior);
        }
Exemple #19
0
        public static BumperBehavior SetupGameObject(this Engine.VPT.Bumper.Bumper bumper, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <BumperBehavior>().SetData(bumper.Data);

            obj.AddComponent <ConvertToEntity>();

            var ring  = obj.transform.Find("Ring").gameObject;
            var skirt = obj.transform.Find("Skirt").gameObject;

            ring.AddComponent <BumperRingBehavior>();
            skirt.AddComponent <BumperSkirtBehavior>();

            return(ic as BumperBehavior);
        }
Exemple #20
0
        public static PrimitiveAuthoring SetupGameObject(this Primitive primitive, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <PrimitiveAuthoring>().SetItem(primitive);

            obj.AddComponent <ConvertToEntity>();
            return(ic as PrimitiveAuthoring);
        }
Exemple #21
0
        public static HitTargetAuthoring SetupGameObject(this Engine.VPT.HitTarget.HitTarget hitTarget, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <HitTargetAuthoring>().SetItem(hitTarget);

            obj.AddComponent <ConvertToEntity>();
            return(ic as HitTargetAuthoring);
        }
		public static KickerAuthoring SetupGameObject(this Engine.VPT.Kicker.Kicker kicker, GameObject obj, RenderObjectGroup rog)
		{
			var ic = obj.AddComponent<KickerAuthoring>().SetItem(kicker);
			obj.AddComponent<ConvertToEntity>();
			return ic as KickerAuthoring;
		}
Exemple #23
0
 public static MonoBehaviour SetupGameObject(this Engine.VPT.Table.Table table, GameObject go, RenderObjectGroup rog)
 {
     go.AddComponent <ConvertToEntity>();
     return(null);
 }
        public static BumperAuthoring SetupGameObject(this Engine.VPT.Bumper.Bumper bumper, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <BumperAuthoring>().SetItem(bumper);

            obj.AddComponent <ConvertToEntity>();

            var ring  = obj.transform.Find("Ring").gameObject;
            var skirt = obj.transform.Find("Skirt").gameObject;

            ring.AddComponent <BumperRingAuthoring>();
            skirt.AddComponent <BumperSkirtAuthoring>();

            return(ic as BumperAuthoring);
        }
Exemple #25
0
        public static SpinnerAuthoring SetupGameObject(this Engine.VPT.Spinner.Spinner spinner, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <SpinnerAuthoring>().SetItem(spinner);

            obj.AddComponent <ConvertToEntity>();

            var wire = obj.transform.Find("Plate").gameObject;

            wire.AddComponent <SpinnerPlateAuthoring>().SetItem(spinner, "Plate");

            return(ic as SpinnerAuthoring);
        }
        public static PlungerAuthoring SetupGameObject(this Plunger plunger, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <PlungerAuthoring>().SetItem(plunger);

            var rod = obj.transform.Find(PlungerMeshGenerator.RodName);

            if (rod != null)
            {
                rod.gameObject.AddComponent <PlungerRodAuthoring>();
            }

            var spring = obj.transform.Find(PlungerMeshGenerator.SpringName);

            if (spring != null)
            {
                spring.gameObject.AddComponent <PlungerSpringAuthoring>();
            }

            var flat = obj.transform.Find(PlungerMeshGenerator.FlatName);

            if (flat != null)
            {
                flat.gameObject.AddComponent <PlungerFlatAuthoring>();
            }

            obj.AddComponent <ConvertToEntity>();
            return(ic as PlungerAuthoring);
        }
        private void ImportRenderObjects(IRenderable item, RenderObjectGroup rog, GameObject parent)
        {
            var obj = new GameObject(rog.Name);

            obj.transform.parent = parent.transform;

            if (rog.HasOnlyChild && !rog.ForceChild)
            {
                ImportRenderObject(item, rog.RenderObjects[0], obj, _tb);
            }
            else if (rog.HasChildren)
            {
                foreach (var ro in rog.RenderObjects)
                {
                    var subObj = new GameObject(ro.Name);
                    subObj.transform.SetParent(obj.transform, false);
                    subObj.layer = ChildObjectsLayer;
                    ImportRenderObject(item, ro, subObj, _tb);
                }
            }

            // apply transformation
            obj.transform.SetFromMatrix(rog.TransformationMatrix.ToUnityMatrix());

            // add unity component
            MonoBehaviour ic = null;

            switch (item)
            {
            case Bumper bumper:                                     ic = bumper.SetupGameObject(obj, rog); break;

            case Flipper flipper:                           ic = flipper.SetupGameObject(obj, rog); break;

            case Gate gate:                                         ic = gate.SetupGameObject(obj, rog); break;

            case HitTarget hitTarget:                       ic = hitTarget.SetupGameObject(obj, rog); break;

            case Kicker kicker:                                     ic = obj.AddComponent <KickerBehavior>().SetData(kicker.Data); break;

            case Engine.VPT.Light.Light lt:         ic = lt.SetupGameObject(obj, rog); break;

            case Plunger plunger:                           ic = plunger.SetupGameObject(obj, rog); break;

            case Primitive primitive:                       ic = obj.AddComponent <PrimitiveBehavior>().SetData(primitive.Data); break;

            case Ramp ramp:                                         ic = obj.AddComponent <RampBehavior>().SetData(ramp.Data); break;

            case Rubber rubber:                                     ic = obj.AddComponent <RubberBehavior>().SetData(rubber.Data); break;

            case Spinner spinner:                           ic = spinner.SetupGameObject(obj, rog); break;

            case Surface surface:                           ic = surface.SetupGameObject(obj, rog); break;

            case Table table:                                       ic = table.SetupGameObject(obj, rog); break;

            case Trigger trigger:                           ic = trigger.SetupGameObject(obj, rog); break;
            }
#if UNITY_EDITOR
            // for convenience move item behavior to the top of the list
            if (ic != null)
            {
                int numComp = obj.GetComponents <MonoBehaviour>().Length;
                for (int i = 0; i <= numComp; i++)
                {
                    UnityEditorInternal.ComponentUtility.MoveComponentUp(ic);
                }
            }
#endif
        }
        public static FlipperBehavior SetupGameObject(this Engine.VPT.Flipper.Flipper flipper, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <FlipperBehavior>().SetData(flipper.Data);

            obj.AddComponent <ConvertToEntity>();
            return(ic as FlipperBehavior);
        }
        public static SurfaceBehavior SetupGameObject(this Engine.VPT.Surface.Surface surface, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <SurfaceBehavior>().SetData(surface.Data);

            obj.AddComponent <ConvertToEntity>();
            return(ic as SurfaceBehavior);
        }