示例#1
0
        public MyFracturedPiece()
            : base()
        {
            //EntityId = MyEntityIdentifier.AllocateId();

            //TODO: Synchronize through manager to avoid performance hits
            SyncFlag = true;

            base.PositionComp           = new MyFracturePiecePositionComponent();
            base.Render                 = new MyRenderComponentFracturedPiece();
            base.Render.NeedsDraw       = true;
            base.Render.PersistentFlags = MyPersistentEntityFlags2.Enabled;
            AddDebugRenderComponent(new MyFracturedPieceDebugDraw(this));
            UseDamageSystem = false;
            NeedsUpdate     = MyEntityUpdateEnum.EACH_10TH_FRAME | MyEntityUpdateEnum.EACH_100TH_FRAME;
#if !XB1 // !XB1_SYNC_NOREFLECTION
            SyncType = SyncHelpers.Compose(this);
#else // XB1
            SyncType = new SyncType(new List <SyncBase>());
            m_fallSoundShouldPlay = SyncType.CreateAndAddProp <bool>();
            m_fallSoundString     = SyncType.CreateAndAddProp <string>();
#endif // XB1
            m_fallSoundShouldPlay.Value     = false;
            m_fallSoundString.Value         = "";
            m_fallSoundString.ValueChanged += (x) => SetFallSound();
        }
示例#2
0
        public MySmallGatlingGun()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_useConveyorSystem = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();

            m_rotationAngle        = MyUtils.GetRandomRadian();
            m_lastTimeShoot        = MyConstants.FAREST_TIME_IN_PAST;
            m_smokeLastTime        = MyConstants.FAREST_TIME_IN_PAST;
            m_smokesToGenerate     = 0;
            m_cannonMotorEndPlayed = true;
            m_rotationTimeout      = (float)MyGatlingConstants.ROTATION_TIMEOUT + MyUtils.GetRandomFloat(-500, +500);

            m_soundEmitter = new MyEntity3DSoundEmitter(this, true);

#if XB1// XB1_SYNC_NOREFLECTION
            m_gunBase = new MyGunBase(SyncType);
#else // !XB1
            m_gunBase = new MyGunBase();
#endif // !XB1

            NeedsUpdate |= MyEntityUpdateEnum.EACH_FRAME | MyEntityUpdateEnum.EACH_10TH_FRAME;
            Render.NeedsDrawFromParent = true;

            Render = new MyRenderComponentSmallGatlingGun();
            AddDebugRenderComponent(new MyDebugRenderComponentSmallGatlingGun(this));

#if !XB1 // !XB1_SYNC_NOREFLECTION
            SyncType.Append(m_gunBase);
#endif // !XB1
        }
示例#3
0
        public MyDoorBase()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_open = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();
        }
示例#4
0
        public MyShipToolBase()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_useConveyorSystem = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();
        }
示例#5
0
        public MyMotorSuspension()
        {
#if XB1                                                                // XB1_SYNC_NOREFLECTION
            m_dummyDisplacement = SyncType.CreateAndAddProp <float>(); //<== from base class

            m_steerAngle       = SyncType.CreateAndAddProp <float>();
            m_brake            = SyncType.CreateAndAddProp <bool>();
            m_damping          = SyncType.CreateAndAddProp <float>();
            m_strenth          = SyncType.CreateAndAddProp <float>();
            m_friction         = SyncType.CreateAndAddProp <float>();
            m_height           = SyncType.CreateAndAddProp <float>();
            m_suspensionTravel = SyncType.CreateAndAddProp <float>();
            m_speedLimit       = SyncType.CreateAndAddProp <float>();
            m_maxSteerAngle    = SyncType.CreateAndAddProp <float>();
            m_steerSpeed       = SyncType.CreateAndAddProp <float>();
            m_steerReturSpeed  = SyncType.CreateAndAddProp <float>();
            m_invertSteer      = SyncType.CreateAndAddProp <bool>();
            m_invertPropulsion = SyncType.CreateAndAddProp <bool>();
            m_power            = SyncType.CreateAndAddProp <float>();
            m_steering         = SyncType.CreateAndAddProp <bool>();
            m_propulsion       = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();

            m_brake.ValueChanged            += (x) => UpdateBrake();
            m_friction.ValueChanged         += (x) => FrictionChanged();
            m_damping.ValueChanged          += (x) => DampingChanged();
            m_strenth.ValueChanged          += (x) => StrenghtChanged();
            m_height.ValueChanged           += (x) => ReattachConstraint();
            m_suspensionTravel.ValueChanged += (x) => ReattachConstraint();
        }
示例#6
0
        public MyBatteryBlock()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_isFull          = SyncType.CreateAndAddProp <bool>();
            m_onlyRecharge    = SyncType.CreateAndAddProp <bool>();
            m_onlyDischarge   = SyncType.CreateAndAddProp <bool>();
            m_semiautoEnabled = SyncType.CreateAndAddProp <bool>();
            m_producerEnabled = SyncType.CreateAndAddProp <bool>();
            m_storedPower     = SyncType.CreateAndAddProp <float>();
#endif // XB1
            CreateTerminalControls();

            SourceComp   = new MyResourceSourceComponent();
            ResourceSink = new MyResourceSinkComponent();
            m_semiautoEnabled.ValueChanged += (x) => UpdateMaxOutputAndEmissivity();
            m_onlyRecharge.ValueChanged    += (x) => { if (m_onlyRecharge.Value)
                                                       {
                                                           m_onlyDischarge.Value = false;
                                                       }
                                                       UpdateMaxOutputAndEmissivity(); };
            m_onlyDischarge.ValueChanged += (x) => { if (m_onlyDischarge.Value)
                                                     {
                                                         m_onlyRecharge.Value = false;
                                                     }
                                                     UpdateMaxOutputAndEmissivity(); };

            m_producerEnabled.ValueChanged += (x) => ProducerEnadChanged();
            m_storedPower.ValueChanged     += (x) => CapacityChanged();
        }
        public MyShipWelder()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_helpOthers = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();
        }
示例#8
0
        public MyGravityGeneratorSphere()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_radius = SyncType.CreateAndAddProp <float>();
#endif // XB1
            CreateTerminalControls();
            m_radius.ValueChanged += (x) => UpdateFieldShape();
        }
        public MyGravityGeneratorBase()
            : base()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_gravityAcceleration = SyncType.CreateAndAddProp <float>();
#endif // XB1
            m_gravityAcceleration.ValueChanged += (x) => AccelerationChanged();
        }
示例#10
0
        public MyButtonPanel()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_anyoneCanUse = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();
            m_openedToolbars = new List <MyToolbar>();
        }
示例#11
0
        public MyBeacon()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_radius = SyncType.CreateAndAddProp <float>();
#endif // XB1
            CreateTerminalControls();

            m_radius.ValueChanged += (obj) => ChangeRadius();
        }
        public MyUserControllableGun()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_isShooting = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();

            m_isShooting.ValueChanged += (x) => ShootingChanged();
        }
示例#13
0
        public MyCameraBlock()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_syncFov = SyncType.CreateAndAddProp <float>();
#endif // XB1
            CreateTerminalControls();

            m_syncFov.ValueChanged += (x) => OnSyncFov();
        }
示例#14
0
        public MyFunctionalBlock()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_enabled = SyncType.CreateAndAddProp <bool>();
#endif // BX1
            CreateTerminalControls();

            m_enabled.ValueChanged += (x) => EnabledSyncChanged();
        }
        public MyGravityGenerator()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_fieldSize = SyncType.CreateAndAddProp <Vector3>();
#endif // XB1
            CreateTerminalControls();

            m_fieldSize.ValueChanged += (x) => UpdateFieldShape();
        }
示例#16
0
        public MyCryoChamber()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_attachedPlayerId = SyncType.CreateAndAddProp <MyPlayer.PlayerId?>();
#endif // XB1

            ControllerInfo.ControlAcquired  += OnCryoChamberControlAcquired;
            m_attachedPlayerId.ValueChanged += (x) => AttachedPlayerChanged();
        }
        public MyConveyorSorter()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_drainAll = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();

            m_drainAll.ValueChanged += x => DoChangeDrainAll();
        }
        public MyLargeConveyorTurretBase()
            : base()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_useConveyorSystem = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();
            NeedsUpdate |= MyEntityUpdateEnum.EACH_100TH_FRAME;
        }
示例#19
0
        public MyGasGenerator()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_useConveyorSystem = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();
            SourceComp   = new MyResourceSourceComponent(2);
            ResourceSink = new MyResourceSinkComponent();
        }
示例#20
0
        public MyOreDetector()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_broadcastUsingAntennas = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();

            m_broadcastUsingAntennas.ValueChanged += (entity) => BroadcastChanged();
        }
示例#21
0
        public MyWarhead()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_countdownMs = SyncType.CreateAndAddProp <int>();
            m_isArmed     = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();

            m_isArmed.ValueChanged += (x) => UpdateEmissivity();
        }
        public MyFunctionalBlock()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_enabled = SyncType.CreateAndAddProp <bool>();
#endif // BX1
            CreateTerminalControls();

            NeedsUpdate |= MyEntityUpdateEnum.EACH_100TH_FRAME;

            m_enabled.ValueChanged += (x) => EnabledSyncChanged();
        }
示例#23
0
        public MyAirVent()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_isDepressurizing = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();

            ResourceSink = new MyResourceSinkComponent(2);
            SourceComp   = new MyResourceSourceComponent();
            m_isDepressurizing.ValueChanged += (x) => SetDepressurizing();
        }
示例#24
0
        public MyShipDrill()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_useConveyorSystem = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();

            NeedsUpdate |= MyEntityUpdateEnum.EACH_FRAME | MyEntityUpdateEnum.EACH_100TH_FRAME;
            Debug.Assert((NeedsUpdate & MyEntityUpdateEnum.EACH_10TH_FRAME) == 0, "Base class of ship drill uses Update10, and ship drill turns it on and off. Things might break!");
            SetupDrillFrameCountdown();
        }
示例#25
0
        public MyAirtightDoorGeneric()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_open = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();

            m_open.Value         = false;
            m_currOpening        = 0f;
            m_currSpeed          = 0f;
            m_open.ValueChanged += (x) => DoChangeOpenClose();
        }
示例#26
0
        public MyPistonBase()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_currentPos = SyncType.CreateAndAddProp <float>();
            Velocity     = SyncType.CreateAndAddProp <float>();
            MinLimit     = SyncType.CreateAndAddProp <float>();
            MaxLimit     = SyncType.CreateAndAddProp <float>();
#endif // XB1
            CreateTerminalControls();

            m_currentPos.ValueChanged += (o) => UpdatePosition(true);
        }
示例#27
0
        public MyReactor()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_remainingPowerCapacity = SyncType.CreateAndAddProp <float>();
            m_useConveyorSystem      = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();

            SourceComp = new MyResourceSourceComponent();
            m_remainingPowerCapacity.ValueChanged += (x) => RemainingCapacityChanged();
            m_remainingPowerCapacity.ValidateNever();
        }
示例#28
0
        public MyRadioAntenna()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_radius             = SyncType.CreateAndAddProp <float>();
            m_enableBroadcasting = SyncType.CreateAndAddProp <bool>();
            m_showShipName       = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            CreateTerminalControls();

            m_radius.ValueChanged             += (obj) => ChangeRadius();
            m_enableBroadcasting.ValueChanged += (obj) => ChangeEnableBroadcast();
        }
示例#29
0
        public MyGyro()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_gyroPower            = SyncType.CreateAndAddProp <float>();
            m_gyroOverride         = SyncType.CreateAndAddProp <bool>();
            m_gyroOverrideVelocity = SyncType.CreateAndAddProp <Vector3>();
#endif // XB1
            CreateTerminalControls();

            m_gyroPower.ValueChanged    += x => GyroPowerChanged();
            m_gyroOverride.ValueChanged += x => GyroOverrideChanged();
        }
示例#30
0
        public MyDoor() : base()
        {
#if XB1 // XB1_SYNC_NOREFLECTION
            m_open = SyncType.CreateAndAddProp <bool>();
#endif // XB1
            //GR: added to base class do not use here
            //CreateTerminalControls();

            m_currOpening = 0f;
            m_currSpeed   = 0f;
            m_open.ValidateNever();
            m_open.ValueChanged += x => OnStateChange();
        }
示例#31
0
        public MyInventory(MyFixedPoint maxVolume, MyFixedPoint maxMass, Vector3 size, MyInventoryFlags flags)
            : base("Inventory")
        {
            m_maxVolume = maxVolume;
            m_maxMass = maxMass;
            m_flags = flags;

#if !XB1 // !XB1_SYNC_NOREFLECTION
            SyncType = SyncHelpers.Compose(this);
#else // XB1
            SyncType = new SyncType(new List<SyncBase>());
            m_currentVolume = SyncType.CreateAndAddProp<MyFixedPoint>();
            m_currentMass = SyncType.CreateAndAddProp<MyFixedPoint>();
#endif // XB1
            m_currentVolume.ValueChanged += (x) => PropertiesChanged();
            m_currentVolume.ValidateNever();

            m_currentMass.ValueChanged += (x) => PropertiesChanged();
            m_currentMass.ValidateNever();

            m_inventoryNotEmptyNotification = new MyHudNotification(font: MyFontEnum.Red, priority: 2, text: MyCommonTexts.NotificationInventoryNotEmpty);

            Clear();
        }
示例#32
0
        public MyFracturedPiece()
            : base()
        {
            //EntityId = MyEntityIdentifier.AllocateId();

            //TODO: Synchronize through manager to avoid performance hits
            SyncFlag = true;

            base.PositionComp = new MyFracturePiecePositionComponent();
            base.Render = new MyRenderComponentFracturedPiece();
            base.Render.NeedsDraw = true;
            base.Render.PersistentFlags = MyPersistentEntityFlags2.Enabled;
            AddDebugRenderComponent(new MyFracturedPieceDebugDraw(this));
            UseDamageSystem = false;
            NeedsUpdate = MyEntityUpdateEnum.EACH_10TH_FRAME | MyEntityUpdateEnum.EACH_100TH_FRAME;
#if !XB1 // !XB1_SYNC_NOREFLECTION
            SyncType = SyncHelpers.Compose(this);
#else // XB1
            SyncType = new SyncType(new List<SyncBase>());
            m_fallSoundShouldPlay = SyncType.CreateAndAddProp<bool>();
            m_fallSoundString = SyncType.CreateAndAddProp<string>();
#endif // XB1
            m_fallSoundShouldPlay.Value = false;
            m_fallSoundString.Value = "";
            m_fallSoundString.ValueChanged += (x) => SetFallSound();
        }
        public MyFloatingObject()
        {
            WasRemovedFromWorld = false;
            m_soundEmitter = new MyEntity3DSoundEmitter(this);
            m_lastTimePlayedSound = MySandboxGame.TotalGamePlayTimeInMilliseconds;
            Render = new Components.MyRenderComponentFloatingObject();

#if !XB1 // !XB1_SYNC_NOREFLECTION
            SyncType = SyncHelpers.Compose(this);
#else // XB1
            SyncType = new SyncType(new List<SyncBase>());
            Amount = SyncType.CreateAndAddProp<MyFixedPoint>();
#endif // XB1

            Amount.ValueChanged += (x) => { Item.Amount = Amount.Value; UpdateInternalState(); };
        }
        public MyCharacter()
        {
            ControllerInfo.ControlAcquired += OnControlAcquired;
            ControllerInfo.ControlReleased += OnControlReleased;

            RadioReceiver = new MyRadioReceiver();
            Components.Add<MyDataBroadcaster>(new MyRadioBroadcaster());
            RadioBroadcaster.BroadcastRadius = 200;
            CustomNameWithFaction = new StringBuilder();
            PositionComp = new MyCharacterPosition();
            (PositionComp as MyPositionComponent).WorldPositionChanged = WorldPositionChanged;

            Render = new MyRenderComponentCharacter();
            Render.EnableColorMaskHsv = true;
            Render.NeedsDraw = true;
            Render.CastShadows = true;
            Render.NeedsResolveCastShadow = false;
            Render.SkipIfTooSmall = false;

            SinkComp = new MyResourceSinkComponent();
#if !XB1 // !XB1_SYNC_NOREFLECTION
            SyncType = SyncHelpers.Compose(this);
#else // XB1
            SyncType = new SyncType(new List<SyncBase>());
            m_currentAmmoCount = SyncType.CreateAndAddProp<int>();
            m_currentMagazineAmmoCount = SyncType.CreateAndAddProp<int>();
            m_controlInfo = SyncType.CreateAndAddProp<Sandbox.Game.World.MyPlayer.PlayerId>();
            m_localHeadPosition = SyncType.CreateAndAddProp<Vector3>();
            m_animLeaning = SyncType.CreateAndAddProp<float>();
            m_animTurningSpeed = SyncType.CreateAndAddProp<float>();
            m_localHeadTransform = SyncType.CreateAndAddProp<MyTransform>();
            m_localHeadTransformTool = SyncType.CreateAndAddProp<MyTransform>();
            m_isPromoted = SyncType.CreateAndAddProp<bool>();
            //m_weaponPosition = SyncType.CreateAndAddProp<Vector3>();
#endif // XB1


            AddDebugRenderComponent(new MyDebugRenderComponentCharacter(this));

            if (MyPerGameSettings.CharacterDetectionComponent != null)
                Components.Add<MyCharacterDetectorComponent>((MyCharacterDetectorComponent)Activator.CreateInstance(MyPerGameSettings.CharacterDetectionComponent));
            else
                Components.Add<MyCharacterDetectorComponent>(new MyCharacterRaycastDetectorComponent());

            m_currentAmmoCount.ValidateNever();
            m_currentMagazineAmmoCount.ValidateNever();

            m_controlInfo.ValueChanged += (x) => ControlChanged();
            m_controlInfo.ValidateNever();
            m_isPromoted.ValidateNever();

            m_isShooting = new bool[(int)MyEnum<MyShootActionEnum>.Range.Max + 1];

            //m_weaponPosition.Value = Vector3D.Zero;

            m_localHeadTransformTool.ValueChanged += (x) => ToolHeadTransformChanged();
            //Components.Add<MyCharacterDetectorComponent>(new MyCharacterShapecastDetectorComponent());
        }