Пример #1
0
        public override void Bind(Entity entity, Main main, bool creating = false)
        {
            Transform     transform = entity.GetOrCreate <Transform>("Transform");
            PlayerTrigger trigger   = entity.GetOrCreate <PlayerTrigger>("PlayerTrigger");

            trigger.Serialize = false;

            VoxelAttachable attachable  = VoxelAttachable.MakeAttachable(entity, main);
            Collectible     collectible = entity.GetOrCreate <Collectible>("Collectible");

            trigger.Radius.Value = 3;
            trigger.Add(new Binding <Vector3>(trigger.Position, transform.Position));
            trigger.Add(new Binding <bool>(trigger.Enabled, x => !x, collectible.PickedUp));

            collectible.Add(new CommandBinding(trigger.PlayerEntered, collectible.PlayerTouched));

            Sound.AttachTracker(entity, trigger.Position);

            PointLight light = entity.Create <PointLight>();

            light.Serialize         = false;
            light.Attenuation.Value = 10.0f;
            light.Color.Value       = new Vector3(1.25f, 1.75f, 2.0f);
            light.Add(new Binding <Vector3>(light.Position, transform.Position));
            light.Add(new Binding <bool>(light.Enabled, x => !x, collectible.PickedUp));

            ParticleEmitter distortionEmitter = entity.GetOrCreate <ParticleEmitter>("DistortionEmitter");

            distortionEmitter.Serialize = false;
            distortionEmitter.Add(new Binding <Vector3>(distortionEmitter.Position, trigger.Position));
            distortionEmitter.ParticleType.Value       = "Distortion";
            distortionEmitter.ParticlesPerSecond.Value = 4;
            distortionEmitter.Jitter.Value             = new Vector3(0.5f);
            distortionEmitter.Add(new Binding <bool>(distortionEmitter.Enabled, x => !x, collectible.PickedUp));

            Model model = entity.GetOrCreate <Model>("Model");

            model.Filename.Value = "Models\\sphere";
            model.Serialize      = false;
            model.Scale.Value    = new Vector3(0.5f);
            model.Add(new Binding <Matrix>(model.Transform, transform.Matrix));
            model.Add(new Binding <bool>(model.Enabled, x => !x, collectible.PickedUp));

            this.SetMain(entity, main);

            attachable.EditorProperties();
            entity.Add("Collected", collectible.PlayerTouched);
        }