コード例 #1
0
        /// <summary>Clones this object</summary>
        /// <returns>The new object</returns>
        public AnimatedObject Clone()
        {
            AnimatedObject Result = new AnimatedObject(currentHost)
            {
                States = States.Select(x => (ObjectState)x.Clone()).ToArray()
            };

            Result.TrackFollowerFunction  = TrackFollowerFunction?.Clone();
            Result.FrontAxlePosition      = this.FrontAxlePosition;
            Result.RearAxlePosition       = this.RearAxlePosition;
            Result.StateFunction          = StateFunction?.Clone();
            Result.CurrentState           = this.CurrentState;
            Result.TranslateZDirection    = this.TranslateZDirection;
            Result.TranslateYDirection    = this.TranslateYDirection;
            Result.TranslateXDirection    = this.TranslateXDirection;
            Result.TranslateXFunction     = TranslateXFunction?.Clone();
            Result.TranslateYFunction     = TranslateYFunction?.Clone();
            Result.TranslateZFunction     = TranslateZFunction?.Clone();
            Result.RotateXDirection       = this.RotateXDirection;
            Result.RotateYDirection       = this.RotateYDirection;
            Result.RotateZDirection       = this.RotateZDirection;
            Result.RotateXFunction        = RotateXFunction?.Clone();
            Result.RotateXDamping         = RotateXDamping?.Clone();
            Result.RotateYFunction        = RotateYFunction?.Clone();
            Result.RotateYDamping         = RotateYDamping?.Clone();
            Result.RotateZFunction        = RotateZFunction?.Clone();
            Result.RotateZDamping         = RotateZDamping?.Clone();
            Result.TextureShiftXDirection = this.TextureShiftXDirection;
            Result.TextureShiftYDirection = this.TextureShiftYDirection;
            Result.TextureShiftXFunction  = TextureShiftXFunction?.Clone();
            Result.TextureShiftYFunction  = TextureShiftYFunction?.Clone();
            Result.LEDClockwiseWinding    = this.LEDClockwiseWinding;
            Result.LEDInitialAngle        = this.LEDInitialAngle;
            Result.LEDLastAngle           = this.LEDLastAngle;
            if (this.LEDVectors != null)
            {
                Result.LEDVectors = new Vector3[this.LEDVectors.Length];
                for (int i = 0; i < this.LEDVectors.Length; i++)
                {
                    Result.LEDVectors[i] = this.LEDVectors[i];
                }
            }
            else
            {
                Result.LEDVectors = null;
            }

            Result.LEDFunction            = LEDFunction?.Clone();
            Result.RefreshRate            = this.RefreshRate;
            Result.SecondsSinceLastUpdate = 0.0;
            if (isTimeTableObject)
            {
                Result.isTimeTableObject = true;
                currentHost.AddObjectForCustomTimeTable(this);
            }
            return(Result);
        }
コード例 #2
0
        /// <inheritdoc/>
        public override WorldObject Clone()
        {
            WorldSound ws = (WorldSound)base.Clone();

            ws.Source   = null;
            ws.Follower = Follower?.Clone();
            ws.TrackFollowerFunction = TrackFollowerFunction?.Clone();
            ws.VolumeFunction        = VolumeFunction?.Clone();
            ws.PitchFunction         = PitchFunction?.Clone();
            return(ws);
        }