Esempio n. 1
0
        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);
        }
Esempio n. 2
0
    //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.");
        }
Esempio n. 4
0
        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();
        }
Esempio n. 5
0
        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();
        }
Esempio n. 6
0
    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);
    }
Esempio n. 7
0
        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;
        }
Esempio n. 8
0
        /// <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
        }
Esempio n. 9
0
        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
            };
        }
Esempio n. 10
0
 public void RemoveObject(ObjectComponent component)
 {
     Damage.Add(new BlueprintDamage(BlueprintDamageType.OBJECT_MOVE, component.TileX, component.TileY, component.Level)
     {
         Component = component
     });
     Objects.Remove(component);
 }
Esempio n. 11
0
        public void UnregisterObject(ObjectComponent obj)
        {
            StaticObjects.Remove(obj);
            DynamicObjects.Remove(obj);
            var ring = obj.RenderInfo.DynamicRemoveCycle;

            Schedule[ring].Remove(obj);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 14
0
 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;
 }
Esempio n. 15
0
    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);
    }
Esempio n. 16
0
        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;
             * }*/
        }
Esempio n. 17
0
 public void RegisterObject(ObjectComponent obj)
 {
     if (obj.RenderInfo.Layer == WorldObjectRenderLayer.STATIC)
     {
         StaticObjects.Add(obj);
     }
     else
     {
         EnsureDynamic(obj);
     }
 }
Esempio n. 18
0
        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);
        }
Esempio n. 19
0
        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();
            }
        }
Esempio n. 20
0
        public override void RemoveComponent(ObjectComponent component)
        {
            if (controls != null)
            {
                if (component != null && component is MenuItem)
                {
                    controls.Remove(component as MenuItem);
                }
            }

            base.RemoveComponent(component);
        }
Esempio n. 21
0
            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);
            }
Esempio n. 22
0
            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);
            }
Esempio n. 23
0
    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);
    }
Esempio n. 24
0
        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);
        }
Esempio n. 25
0
        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;
        }
Esempio n. 26
0
 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);
     }
 }
Esempio n. 27
0
        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();
        }