mirror of
https://github.com/Facepunch/sbox-public.git
synced 2026-01-03 03:48:24 -05:00
This commit imports the C# engine code and game files, excluding C++ source code. [Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
64 lines
1.1 KiB
C#
64 lines
1.1 KiB
C#
|
|
namespace Sandbox;
|
|
|
|
[Hide]
|
|
[Title( "Map Objects" )]
|
|
[Category( "World" )]
|
|
[Tag( "development" )]
|
|
[Icon( "maps_home_work" )]
|
|
public class MapObjectComponent : Component, Component.ExecuteInEditor
|
|
{
|
|
List<SceneObject> objects = new List<SceneObject>();
|
|
|
|
public Action RecreateMapObjects;
|
|
|
|
internal void AddSceneObjects( IEnumerable<SceneObject> sceneObjects )
|
|
{
|
|
Tags.RemoveAll();
|
|
|
|
// Copy tags from each SceneObject to this GameObject.
|
|
foreach ( var obj in sceneObjects )
|
|
{
|
|
Tags.Add( obj.Tags );
|
|
objects.Add( obj );
|
|
}
|
|
}
|
|
|
|
protected override void OnEnabled()
|
|
{
|
|
RecreateMapObjects?.Invoke();
|
|
|
|
if ( !objects.Any() )
|
|
{
|
|
GameObject.Flags |= GameObjectFlags.Error;
|
|
}
|
|
|
|
Transform.OnTransformChanged += OnTransformChanged;
|
|
}
|
|
|
|
protected override void OnDisabled()
|
|
{
|
|
Transform.OnTransformChanged -= OnTransformChanged;
|
|
|
|
foreach ( var obj in objects )
|
|
{
|
|
obj.Delete();
|
|
}
|
|
|
|
objects.Clear();
|
|
}
|
|
|
|
private void OnTransformChanged()
|
|
{
|
|
var origin = WorldTransform;
|
|
|
|
foreach ( var obj in objects )
|
|
{
|
|
if ( !obj.IsValid() )
|
|
continue;
|
|
|
|
obj.Transform = origin.WithScale( obj.Transform.Scale );
|
|
}
|
|
}
|
|
}
|