Example #1
0
        public override void Bind(Entity entity, Main main, bool creating = false)
        {
            entity.CannotSuspend = true;
            ModelInstance model        = entity.GetOrCreate <ModelInstance>("Model");
            ImplodeBlock  implodeBlock = entity.GetOrCreate <ImplodeBlock>("ImplodeBlock");

            model.Add(new Binding <Matrix>(model.Transform, implodeBlock.Transform));

            implodeBlock.Add(new CommandBinding(implodeBlock.Delete, entity.Delete));

            this.SetMain(entity, main);

            IBinding offsetBinding = null;

            model.Add(new NotifyBinding(delegate()
            {
                if (offsetBinding != null)
                {
                    model.Remove(offsetBinding);
                }
                offsetBinding = new Binding <Vector3>(model.GetVector3Parameter("Offset"), implodeBlock.Offset);
                model.Add(offsetBinding);
            }, model.FullInstanceKey));
            if (implodeBlock.StateId != Voxel.t.Empty)
            {
                Voxel.States.All[implodeBlock.StateId].ApplyToEffectBlock(model);
            }
        }
        public override void Bind(Entity entity, Main main, bool creating = false)
        {
            Transform     transform = entity.GetOrCreate <Transform>("Transform");
            PhysicsBlock  physics   = entity.GetOrCreate <PhysicsBlock>("Physics");
            ModelInstance model     = entity.GetOrCreate <ModelInstance>("Model");

            physics.Add(new TwoWayBinding <Matrix>(transform.Matrix, physics.Transform));

            SceneryBlock sceneryBlock = entity.GetOrCreate <SceneryBlock>("SceneryBlock");

            physics.Add(new Binding <Vector3, float>(physics.Size, x => new Vector3(x), sceneryBlock.Scale));
            model.Add(new Binding <Matrix>(model.Transform, () => Matrix.CreateScale(sceneryBlock.Scale) * transform.Matrix, transform.Matrix, sceneryBlock.Scale));

            this.SetMain(entity, main);

            entity.Add("IsAffectedByGravity", physics.IsAffectedByGravity);
            sceneryBlock.EditorProperties();

            if (!main.EditorEnabled && !physics.IsAffectedByGravity &&
                (sceneryBlock.Type.Value == Voxel.t.WhitePermanent || sceneryBlock.Type.Value == Voxel.t.White))
            {
                Sound.AttachTracker(entity);
                AkSoundEngine.PostEvent(AK.EVENTS.PLAY_WHITE_LIGHT, entity);
                SoundKiller.Add(entity, AK.EVENTS.STOP_WHITE_LIGHT);
                physics.Add(new CommandBinding <Collidable, ContactCollection>(physics.Collided, delegate(Collidable other, ContactCollection contacts)
                {
                    float impulse = contacts.Max(x => x.NormalImpulse);
                    if (impulse > 0.2f)
                    {
                        AkSoundEngine.PostEvent(AK.EVENTS.PLAY_WHITE_LIGHT_HIT, entity);
                    }
                }));
            }
        }
Example #3
0
        public override void Bind(Entity entity, Main main, bool creating = false)
        {
            entity.CannotSuspend = true;

            Transform     transform = entity.GetOrCreate <Transform>("Transform");
            PhysicsBlock  physics   = entity.GetOrCreate <PhysicsBlock>("Physics");
            ModelInstance model     = entity.GetOrCreate <ModelInstance>("Model");

            physics.Add(new TwoWayBinding <Matrix>(transform.Matrix, physics.Transform));

            Property <Vector3> scale = new Property <Vector3> {
                Value = new Vector3(0.5f)
            };

            model.Add(new Binding <Matrix>(model.Transform, () => Matrix.CreateScale(scale) * transform.Matrix, scale, transform.Matrix));

            entity.Add("Fade", new Animation
                       (
                           new Animation.Delay(5.0f),
                           new Animation.Vector3MoveTo(scale, Vector3.Zero, 1.0f),
                           new Animation.Execute(entity.Delete)
                       ));

            this.SetMain(entity, main);
            PhysicsBlock.CancelPlayerCollisions(physics);
        }
Example #4
0
        private void NewModel()
        {
            var m = ModelInstance.GetObject();

            BuildModel(m);
            ModelInstance.Add(m);

            // 保存历史记录
            SaveHistory(new TB_AccountHistory
            {
                ActionId = ActionInstance.Find(f => f.Name.Equals("AddEquipmentModel")).id,
                ObjectA  = "[id=" + m.id + "] " + m.Name + ", " + m.Code
            });

            ShowNotification("./equipment_model.aspx", "You have added a new Equipment model: " + m.Name + "(" + m.Code + ").");
        }
Example #5
0
        public override void Bind(Entity entity, Main main, bool creating = false)
        {
            Transform     transform = entity.GetOrCreate <Transform>("Transform");
            PhysicsBlock  physics   = entity.GetOrCreate <PhysicsBlock>("Physics");
            ModelInstance model     = entity.GetOrCreate <ModelInstance>("Model");

            physics.Add(new TwoWayBinding <Matrix>(transform.Matrix, physics.Transform));

            SceneryBlock sceneryBlock = entity.GetOrCreate <SceneryBlock>("SceneryBlock");

            physics.Add(new Binding <Vector3, float>(physics.Size, x => new Vector3(x), sceneryBlock.Scale));
            model.Add(new Binding <Matrix>(model.Transform, () => Matrix.CreateScale(sceneryBlock.Scale) * transform.Matrix, transform.Matrix, sceneryBlock.Scale));

            this.SetMain(entity, main);

            entity.Add("IsAffectedByGravity", physics.IsAffectedByGravity);
            sceneryBlock.EditorProperties();
        }