public static bool AddComponent <C>(GameObject ths, params object[] args) where C : ObjectComponent { Type cType = typeof(C); bool staticAllowed = true;// Simulator.GetProxy(ths.ObjectId) == null; if (!ths.AddComponentInternal(cType, staticAllowed, args)) { return(false); } if (ths.mObjComponents != null) { Type type = typeof(C); for (int i = 0x0; i < ths.mObjComponents.Count; i++) { ObjectComponent component = ths.mObjComponents[i]; if (component is C) { component.OnStartup(); break; } } } return(true); }
//Get the next object in the list, back to start if ended public ObjectComponent GetNextObject(ObjectComponent o) { int index = ObjectList.IndexOf(o); var result = GetVoxelObject(index + 1 >= ObjectList.Count ? 0 : index + 1); return(result); }
public void InitializeGameServer() { var daytimeComponent = new DaytimeComponent(this); Components.Add(daytimeComponent); var messageComponent = new MessageComponent(this); Components.Add(messageComponent); var pingComponent = new PingComponent(this); Components.Add(pingComponent); var MilethSpawner = new MonolithComponent(this); Components.Add(MilethSpawner); var objectComponent = new ObjectComponent(this); Components.Add(objectComponent); var mundaneComponent = new MundaneComponent(this); Components.Add(mundaneComponent); Console.WriteLine(Components.Count + " Server Components loaded."); }
public override void Execute() { GameObject obj = GameObjectManager.FindGameObject(gameObjectID); if (obj != null && componentID != "None") { ObjectComponent comp = obj.FindComponent(componentID); if (comp != null) { Type t = comp.GetType(); MethodInfo info = t.GetMethod(methodName); if (info != null) { info.Invoke(comp, parameters); } } } else if (obj != null) { Type t = obj.GetType(); MethodInfo info = t.GetMethod(methodName); if (info != null) { info.Invoke(obj, parameters); } } FinishExecution(); }
public override void Execute() { GameObject obj = GameObjectManager.FindGameObject(gameObjectID); if (obj != null && componentID != "None") { ObjectComponent comp = obj.FindComponent(componentID); if (comp != null) { Type t = comp.GetType(); PropertyInfo prop = t.GetProperty(propertyName); if (prop != null && prop.PropertyType == value.GetType()) { prop.SetValue(comp, value, null); } } } else if (obj != null) { Type t = obj.GetType(); PropertyInfo prop = t.GetProperty(propertyName); if (prop != null && prop.PropertyType == value.GetType()) { prop.SetValue(obj, value, null); } } FinishExecution(); }
public ObjectComponent PackComponent(object component) { //This will go through all the fields of a component, check each one if it is serializable, and it it should be stored, //and puts it into the fields dictionary of a new instance of ObjectComponent, //with the field's name as key and the field's value as (object)value //for example, if a script has the field "float myFloat = 12.5f", then the key would be "myFloat" and the value "12.5f", tha latter stored as an object. ObjectComponent newObjectComponent = new ObjectComponent(); newObjectComponent.fields = new Dictionary <string, object>(); const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance; var componentType = component.GetType(); FieldInfo[] fields = componentType.GetFields(flags); newObjectComponent.componentName = componentType.ToString(); foreach (FieldInfo field in fields) { if (field != null) { if (field.FieldType.IsSerializable == false) { //Debug.Log(field.Name + " (Type: " + field.FieldType + ") is not marked as serializable. Continue loop."); continue; } if (TypeSystem.IsEnumerableType(field.FieldType) == true || TypeSystem.IsCollectionType(field.FieldType) == true) { Type elementType = TypeSystem.GetElementType(field.FieldType); //Debug.Log(field.Name + " -> " + elementType); if (elementType.IsSerializable == false) { continue; } } object[] attributes = field.GetCustomAttributes(typeof(DontSaveField), true); bool stop = false; foreach (Attribute attribute in attributes) { if (attribute.GetType() == typeof(DontSaveField)) { //Debug.Log(attribute.GetType().Name.ToString()); stop = true; break; } } if (stop == true) { continue; } newObjectComponent.fields.Add(field.Name, field.GetValue(component)); //Debug.Log(field.Name + " (Type: " + field.FieldType + "): " + field.GetValue(component)); } } return(newObjectComponent); }
private void CheckCollision(Entity entity1, Entity entity2) { ObjectComponent objectComponent1 = entity1.GetComponent <ObjectComponent>(), objectComponent2 = entity2.GetComponent <ObjectComponent>(); if (objectComponent1.IsHeld || objectComponent2.IsHeld || !objectComponent1.IsSolid || !objectComponent2.IsSolid) { return; } PositionComponent positionComponent1 = entity1.GetComponent <PositionComponent>(), positionComponent2 = entity2.GetComponent <PositionComponent>(); ForceComponent forceComponent1 = entity1.GetComponent <ForceComponent>(), forceComponent2 = entity2.GetComponent <ForceComponent>(); Vector2 difference = positionComponent1.Position - positionComponent2.Position; float touchingDistance = objectComponent1.Radius + objectComponent2.Radius; float distance = difference.LengthSquared(); if (distance == 0f || distance > touchingDistance * touchingDistance) { return; } distance = (float)Math.Sqrt(distance); float strength = 1000f / distance; Vector2 force = (difference / distance) * strength; forceComponent1.Force += force; forceComponent2.Force -= force; }
/// <summary> /// Creates an instance of this (multitile) object in the target VM, out of world. /// </summary> /// <param name="vm"></param> public VMMultitileGroup CreateInstance(VM vm) { int i = 0; foreach (var ent in Entities) { VMEntity realEnt; var objDefinition = FSO.Content.Content.Get().WorldObjects.Get(ent.GUID); var worldObject = new ObjectComponent(objDefinition); var obj = new VMGameObject(objDefinition, worldObject); obj.Load((VMGameObjectMarshal)ent); obj.Contained = new VMEntity[ent.Contained.Length]; //we aren't loading slot data, but we need to initialize this. obj.Position = LotTilePos.OUT_OF_WORLD; if (VM.UseWorld) { vm.Context.Blueprint.AddObject((ObjectComponent)obj.WorldUI); vm.Context.Blueprint.ChangeObjectLocation((ObjectComponent)obj.WorldUI, obj.Position); } realEnt = obj; obj.FetchTreeByName(vm.Context); obj.Thread = new VMThread(vm.Context, obj, obj.Object.OBJ.StackSize); vm.AddEntity(obj); MultitileGroup.Objects[i++] = obj.ObjectID; //update saved group, in multitile group order (as saved) if (VM.UseWorld) { obj.WorldUI.ObjectID = obj.ObjectID; } vm.Scheduler.ScheduleTickIn(obj, 1); } return(new VMMultitileGroup(MultitileGroup, vm.Context)); //should self register }
public ObjectDefinitionView(Game game, ObjectDefinition objectDefinition) { var scene = new Scene(); var objectEntity = Entity.FromObjectDefinition(objectDefinition); _objectComponent = objectEntity.GetComponent <ObjectComponent>(); scene.Entities.Add(objectEntity); scene.CameraController = new ArcballCameraController( Vector3.Zero, 200); game.Scene = scene; _listBox = new ListBox(); _listBox.Width = 200; _listBox.ItemTextBinding = Binding.Property((BitArray <ModelConditionFlag> x) => x.DisplayName); _listBox.SelectedValueChanged += (sender, e) => { var modelConditionState = (BitArray <ModelConditionFlag>)_listBox.SelectedValue; _objectComponent.SetModelConditionFlags(modelConditionState); }; _listBox.DataStore = _objectComponent.ModelConditionStates.ToList(); _listBox.SelectedIndex = 0; Panel1 = _listBox; Panel2 = new GameControl { Game = game }; }
public void RemoveObject(ObjectComponent component) { Damage.Add(new BlueprintDamage(BlueprintDamageType.OBJECT_MOVE, component.TileX, component.TileY, component.Level) { Component = component }); Objects.Remove(component); }
public void UnregisterObject(ObjectComponent obj) { StaticObjects.Remove(obj); DynamicObjects.Remove(obj); var ring = obj.RenderInfo.DynamicRemoveCycle; Schedule[ring].Remove(obj); }
public VMGameObject(GameObject def, ObjectComponent worldUI) : base(def) { this.WorldUI = worldUI; var state = VM.GlobTS1?(VMAbstractEntityState) new VMTS1ObjectState():new VMTSOObjectState(); PlatformState = state; ObjectState = (VMIObjectState)state; }
private static void Pulse(TimeSpan elapsedTime, IGameClient client) { if (client?.Aisling != null) { ObjectComponent.UpdateClientObjects(client.Aisling); } client?.Update(elapsedTime); }
public void MoveToStatic(ObjectComponent obj) { if (obj.RenderInfo.Layer == WorldObjectRenderLayer.STATIC) { return; } obj.RenderInfo.Layer = WorldObjectRenderLayer.STATIC; DynamicObjects.Remove(obj); StaticObjects.Add(obj); Dirty = true; }
public void DeleteObject(ObjectComponent o) { var selectedList = ToolManager.Instance.objectManipulator.objectSelector.selectedObjects; if (selectedList.Contains(o)) { selectedList.Remove(o); } GameObject.Destroy(o.gameObject); ObjectList.Remove(o); }
public VMGameObject(GameObject def, ObjectComponent worldUI) : base(def) { this.WorldUI = worldUI; /*var mainFunction = def.Master.MainFuncID; * if (mainFunction > 0) * { * var bhav = def.Iff.BHAVs.First(x => x.ID == mainFunction); * int y = 22; * }*/ }
public void RegisterObject(ObjectComponent obj) { if (obj.RenderInfo.Layer == WorldObjectRenderLayer.STATIC) { StaticObjects.Add(obj); } else { EnsureDynamic(obj); } }
public static Texture2D GenerateThumb(VMMultitileGroup obj, VM vm) { var gd = GameFacade.GraphicsDevice; var objects = obj.Objects; ObjectComponent[] objComps = new ObjectComponent[objects.Count]; for (int i = 0; i < objects.Count; i++) { objComps[i] = (ObjectComponent)objects[i].WorldUI; } var thumb = vm.Context.World.GetObjectThumb(objComps, obj.GetBasePositions(), GameFacade.GraphicsDevice); var data = new Color[thumb.Width * thumb.Height]; thumb.GetData(data); thumb.Dispose(); var newAgain = new Texture2D(GameFacade.GraphicsDevice, thumb.Width, thumb.Height, true, SurfaceFormat.Color); TextureUtils.UploadWithMips(newAgain, GameFacade.GraphicsDevice, data); var sb = new SpriteBatch(GameFacade.GraphicsDevice); var result = new RenderTarget2D(GameFacade.GraphicsDevice, 74, 37); var oldRts = gd.GetRenderTargets(); gd.SetRenderTarget(result); gd.Clear(Color.Black); sb.Begin(blendState: BlendState.AlphaBlend); var minScale = Math.Min(37f / newAgain.Width, 37f / newAgain.Height); if (minScale > 1) { minScale = 1; } var rect = new Rectangle( (int)(newAgain.Width * minScale / -2 + 18), (int)(newAgain.Height * minScale / -2 + 19), (int)(minScale * newAgain.Width), (int)(minScale * newAgain.Height)); var px = TextureGenerator.GetPxWhite(GameFacade.GraphicsDevice); sb.Draw(px, new Rectangle(0, 0, 37, 37), new Color(56, 88, 120)); sb.Draw(px, new Rectangle(37, 0, 37, 37), new Color(184, 212, 240)); sb.Draw(newAgain, rect, Color.White); rect.Offset(37, 0); sb.Draw(newAgain, rect, Color.White); sb.End(); gd.SetRenderTargets(oldRts); newAgain.Dispose(); return(result); }
private void SettingsBtn_MouseUp(object sender, MouseButtonEventArgs e) { if (MessageBox.Show("Are you sure you want to delete this component?", "Warning!", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes) { ObjectComponent oc = this.PropertyGrid.SelectedObject as ObjectComponent; oc.Transform.GameObject.RemoveComponent(oc); this.Visibility = System.Windows.Visibility.Collapsed; EditorCommands.CheckPropertyGridConsistency(); } }
public override void RemoveComponent(ObjectComponent component) { if (controls != null) { if (component != null && component is MenuItem) { controls.Remove(component as MenuItem); } } base.RemoveComponent(component); }
public void Instantiate(Vector3 requestedPosition, Quaternion requestedRotation) { GameObject primitiveSphere = GameObject.CreatePrimitive(PrimitiveType.Sphere); primitiveSphere.transform.position = requestedPosition; primitiveSphere.transform.rotation = requestedRotation; primitiveSphere.name = "Dynamic Sphere Primitive"; primitiveSphere.AddComponent <Rigidbody>(); ObjectComponent sphereInfiniObject = primitiveSphere.AddComponent <ObjectComponent>(); sphereInfiniObject.InitializeObject(25, 600); }
public void Instantiate(Vector3 requestedPosition, Quaternion requestedRotation) { GameObject primitiveCube = GameObject.CreatePrimitive(PrimitiveType.Cube); primitiveCube.transform.position = requestedPosition; primitiveCube.transform.rotation = requestedRotation; primitiveCube.name = "Textured Cube Primitive"; ObjectComponent cubeInfiniObject = primitiveCube.AddComponent <ObjectComponent>(); cubeInfiniObject.InitializeObject(25, 600); cubeInfiniObject.infiniObject.texture = TextureImporter.LoadFromBytes(Properties.Resources.Portal); }
public ObjectComponent CopyObject(ObjectComponent o) { var newObject = CreateNewObject(o.gridBasePoint); foreach (var pair in o.voxelObjectData.VoxelDataDict) { newObject.voxelObjectData.VoxelDataDict.Add(pair.Key, pair.Value); } newObject.UpdateObjectMesh(); return(newObject); }
public ComponentBase ReadComponent(Stream s, ComponentDescriptor descriptor, AttributeComponent template = null) { var objComponent = new ObjectComponent { Descriptor = descriptor }; if (descriptor.DoesObjectHaveName) { objComponent.Name = _obnameReader.ReadOBNAME(s); } return(objComponent); }
public void ChangeObjectLocation(ObjectComponent component, LotTilePos pos) { short tileX = (pos.x < 0) ? (short)0 : pos.TileX; short tileY = (pos.y < 0) ? (short)0 : pos.TileY; sbyte level = pos.Level; Changes.RegisterObjectChange(component); component.blueprint = this; component.TileX = tileX; component.TileY = tileY; component.Level = level; }
public void RemoveObject(ObjectComponent component) { Changes.UnregisterObject(component); Objects.Remove(component); HeadlineObjects.Remove(component); component.Dead = true; //remove all of this object's particles, and make sure we dispose their vertex buffers. foreach (var part in component.Particles) { part.Dispose(); ObjectParticles.Remove(part); } }
private void InitComponentCache() { Components = new Dictionary <Type, GameServerComponent>(); Components[typeof(MonolithComponent)] = new MonolithComponent(this); Components[typeof(DaytimeComponent)] = new DaytimeComponent(this); Components[typeof(MundaneComponent)] = new MundaneComponent(this); Components[typeof(MessageComponent)] = new MessageComponent(this); Components[typeof(ObjectComponent)] = new ObjectComponent(this); Components[typeof(PingComponent)] = new PingComponent(this); Components[typeof(ServerCacheComponent)] = new ServerCacheComponent(this); }
void IGameViewModel.LoadScene(Game game) { var scene = new Scene(); var objectEntity = Entity.FromObjectDefinition(_definition); _objectComponent = objectEntity.GetComponent <ObjectComponent>(); scene.Entities.Add(objectEntity); game.Scene = scene; ModelConditionStates = _objectComponent.ModelConditionStates.ToList(); NotifyOfPropertyChange(nameof(ModelConditionStates)); SelectedModelConditionState = ModelConditionStates.FirstOrDefault(); }