예제 #1
0
        public oBallStatic()
        {
            EditorPath = "Collisions";

            ColliderCircle cr = new ColliderCircle(this);

            cr.Position   = Position;
            cr.Radius     = 64;
            cr.Name       = "Main";
            cr.GameObject = this;

            Colliders.Add(cr);

            box1 = new DarkCheckBox()
            {
                Text = "On", AutoSize = true
            };
            box1.CheckStateChanged += box1event;


            box2 = new DarkCheckBox()
            {
                Text = "Off", AutoSize = true
            };
            box2.CheckStateChanged += box2event;

            EditorProperties    = new Control[3];
            EditorProperties[0] = new DarkLabel()
            {
                Text = "Toggle particles", AutoSize = true
            };
            EditorProperties[1] = box1;
            EditorProperties[2] = box2;
        }
예제 #2
0
        public Object3()
        {
            Sprite.TextureSource = "texture";
            EditorPath           = "Colliders";
            Mass = 32;

            for (int i = 0; i < 50; i++)
            {
                //springs.Add(new Spring());
            }

            //   Speed = random_range(0.5, 2);
            //  Friction = 0.05;

            int index = irandom(50);

            //springs[index].Splash(10);
            endPos = new Vector2(irandom_range(-100, 100), irandom_range(-100, 100));

            // This creates a new circle collider
            // setting some properties
            cc            = new ColliderCircle();
            cc.Radius     = 64;
            cc.Name       = "main";
            cc.GameObject = this;

            // Add collider to the list of active colliders
            Colliders.Add(cc);

            EditorOptions = new[] { "I can have", "My own options", "Here" };

            // This will trigger script "MyCollision" when our collider main collides with collider "main" of any "Object3"
            // last arg ensures that the check will be triggered on each frame without explicit ask for it
            RegisterCollider(cc, typeof(Object3), "main", typeof(ColliderRectangle), MyCollision, true);
        }
예제 #3
0
 /// <summary>
 /// Add a collider to the entity.
 /// </summary>
 /// <param name="c"></param>
 public T AddCollider <T>(T c) where T : Collider
 {
     Colliders.Add(c);
     c.Entity = this;
     c.Added();
     Scene?.AddColliderInternal(c);
     return(c);
 }
 void Reset()
 {
     // default shape
     Colliders.Add(new VRM10SpringBoneCollider
     {
         ColliderType = VRM10SpringBoneColliderTypes.Capsule,
         Radius       = 0.1f
     });
 }
예제 #5
0
        /// <summary>
        /// Adds a collider to the world if it doesn't already exist.
        /// </summary>
        /// <param name="_collider"></param>
        public void AddCollider(ABCollider _collider)
        {
            if (Colliders.Contains(_collider))
            {
                Debug.LogWarning("Can't add duplicate collider!");
                return;
            }

            Colliders.Add(_collider);
        }
예제 #6
0
 public oPlayer()
 {
     Sprite.TextureSource = "elves2";
     EditorPath           = "Actors";
     ImageSpeed           = 0.01f;
     bodyCollider         = new ColliderRectangle(this)
     {
         Collision = new RectangleF(16, 48, 32, 16), AttachToRoot = true, Name = "bodyCollider"
     };
     Colliders.Add(bodyCollider);
 }
예제 #7
0
        public oPlayer()
        {
            Sprite.TextureSource = "elves2";
            EditorPath           = "Colliders";
            ImageSpeed           = 0.01;

            Colliders.Add(new ColliderRectangle()
            {
                Collision = new RectangleF(16, 48, 32, 16)
            });
        }
예제 #8
0
파일: Entity.cs 프로젝트: JOCP9733/tank
 /// <summary>
 /// Add a collider to the entity.
 /// </summary>
 /// <param name="c"></param>
 public T AddCollider <T>(T c) where T : Collider
 {
     Colliders.Add(c);
     c.Entity = this;
     c.Added();
     if (Scene != null)
     {
         Scene.AddColliderInternal(c);
     }
     return(c);
 }
예제 #9
0
        public oBrick()
        {
            EditorPath = "Actors";

            ColliderRectangle cr = new ColliderRectangle(this);

            cr.Name       = "MainCollider";
            cr.GameObject = this;
            cr.Collision  = new RectangleF(0, 0, 64, 32);

            Colliders.Add(cr);
        }
예제 #10
0
        /// <summary>
        /// Registers a Collider with the CollisionDetection system.
        /// </summary>
        /// <param name="collider">The Collider to be registered.</param>
        /// <typeparam name="T">The actual derived type of the Collider.</typeparam>
        public void Register(Collider collider)
        {
            if (collider.isStatic)
            {
                m_static.Add(collider);
            }

            else
            {
                m_dynamic.Add(collider);
            }
        }
예제 #11
0
        public oGeorgeNew()
        {
            EditorPath           = "Actors";
            Sprite.TextureSource = "george";


            bodyCollider            = new ColliderRectangle(this);
            bodyCollider.Collision  = new RectangleF(0, 0, 48, 48);
            bodyCollider.GameObject = this;
            bodyCollider.Name       = "main";

            Colliders.Add(bodyCollider);
        }
예제 #12
0
        public oSolidMask()
        {
            EditorPath           = "Solid";
            Sprite.TextureSource = "texture";
            Sprite.Texture       = sprite_get("texture");

            cr.Collision  = new RectangleF(0, 0, 32, 32);
            cr.Name       = "main";
            cr.GameObject = this;

            cr = new ColliderRectangle(this);
            Colliders.Add(cr);
        }
예제 #13
0
        public oGem()
        {
            EditorPath = "Actors";

            ColliderRectangle cr = new ColliderRectangle(this);

            cr.Name       = "MainCollider";
            cr.GameObject = this;
            cr.Collision  = new RectangleF(0, 0, 64, 32);

            //  synth_speak_async("Hello World");
            Sprite.TextureSource = "Gem";
            Colliders.Add(cr);
        }
예제 #14
0
        public override void EvtCreate()
        {
            ColliderCircle cr = new ColliderCircle(this);

            cr.Name       = "MainCollider";
            cr.GameObject = this;
            cr.Position   = Position;
            cr.Radius     = 32;

            Colliders.Add(cr);

            Direction = irandom(360);
            Speed     = 8;
        }
예제 #15
0
        public override void EvtCreate()
        {
            ColliderRectangle cr = new ColliderRectangle(this);

            cr.Name       = "MainCollider";
            cr.GameObject = this;
            cr.Collision  = new RectangleF(0, 0, 128, 16);

            Colliders.Add(cr);

            MySurface = surface_create(640, 480);

            //point_in_rectangle_rotated()
        }
예제 #16
0
        public HRender()
        {
            _colliders = new List <ICollider>();

            ViewportWidth    = 2;
            ViewportHeight   = 1;
            ViewportDistance = 0.5;

            WidthIterations  = 600;
            HeightIterations = 300;

            ICollider face = new HFaceCollider(new HPoint(0, 0, -20), new HPoint(20, 0, -20), new HPoint(0, 20, -20),
                                               HShaders.SimpleRedShader);
            ICollider face2 = new HFaceCollider(new HPoint(0, 0, -19), new HPoint(15, 0, -19), new HPoint(0, 15, -21),
                                                HShaders.SimpleBlackShader);

            Colliders.Add(face);
            Colliders.Add(face2);
        }
예제 #17
0
    public override void CreateModel(CollisionModels customCollisionModels = null)
    {
        if (ActionObjectMetadata.ObjectModel == null || ActionObjectMetadata.ObjectModel.Type == IO.Swagger.Model.ObjectModel.TypeEnum.None)
        {
            Model = Instantiate(CubePrefab, Visual.transform);
            Model.transform.localScale = new Vector3(0.05f, 0.01f, 0.05f);
        }
        else
        {
            switch (ActionObjectMetadata.ObjectModel.Type)
            {
            case IO.Swagger.Model.ObjectModel.TypeEnum.Box:
                Model = Instantiate(CubePrefab, Visual.transform);

                if (customCollisionModels == null)
                {
                    Model.transform.localScale = TransformConvertor.ROSToUnityScale(new Vector3((float)ActionObjectMetadata.ObjectModel.Box.SizeX, (float)ActionObjectMetadata.ObjectModel.Box.SizeY, (float)ActionObjectMetadata.ObjectModel.Box.SizeZ));
                }
                else
                {
                    foreach (IO.Swagger.Model.Box box in customCollisionModels.Boxes)
                    {
                        if (box.Id == ActionObjectMetadata.Type)
                        {
                            Model.transform.localScale = TransformConvertor.ROSToUnityScale(new Vector3((float)box.SizeX, (float)box.SizeY, (float)box.SizeZ));
                            break;
                        }
                    }
                }
                break;

            case IO.Swagger.Model.ObjectModel.TypeEnum.Cylinder:
                Model = Instantiate(CylinderPrefab, Visual.transform);
                if (customCollisionModels == null)
                {
                    Model.transform.localScale = new Vector3((float)ActionObjectMetadata.ObjectModel.Cylinder.Radius, (float)ActionObjectMetadata.ObjectModel.Cylinder.Height / 2, (float)ActionObjectMetadata.ObjectModel.Cylinder.Radius);
                }
                else
                {
                    foreach (IO.Swagger.Model.Cylinder cylinder in customCollisionModels.Cylinders)
                    {
                        if (cylinder.Id == ActionObjectMetadata.Type)
                        {
                            Model.transform.localScale = new Vector3((float)cylinder.Radius, (float)cylinder.Height, (float)cylinder.Radius);
                            break;
                        }
                    }
                }
                break;

            case IO.Swagger.Model.ObjectModel.TypeEnum.Sphere:
                Model = Instantiate(SpherePrefab, Visual.transform);
                if (customCollisionModels == null)
                {
                    Model.transform.localScale = new Vector3((float)ActionObjectMetadata.ObjectModel.Sphere.Radius, (float)ActionObjectMetadata.ObjectModel.Sphere.Radius, (float)ActionObjectMetadata.ObjectModel.Sphere.Radius);
                }
                else
                {
                    foreach (IO.Swagger.Model.Sphere sphere in customCollisionModels.Spheres)
                    {
                        if (sphere.Id == ActionObjectMetadata.Type)
                        {
                            Model.transform.localScale = new Vector3((float)sphere.Radius, (float)sphere.Radius, (float)sphere.Radius);
                            break;
                        }
                    }
                }
                break;

            case ObjectModel.TypeEnum.Mesh:
                MeshImporter.Instance.OnMeshImported += OnModelLoaded;
                MeshImporter.Instance.LoadModel(ActionObjectMetadata.ObjectModel.Mesh, GetId());

                Model = Instantiate(CubePrefab, Visual.transform);
                Model.transform.localScale = new Vector3(0.05f, 0.01f, 0.05f);
                break;

            default:
                Model = Instantiate(CubePrefab, Visual.transform);
                Model.transform.localScale = new Vector3(0.05f, 0.01f, 0.05f);
                break;
            }
        }
        //if (IsRobot()) {
        //    Model.tag = "Robot";
        //}

        gameObject.GetComponent <BindParentToChild>().ChildToBind = Model;
        Collider = Model.GetComponent <Collider>();
        Colliders.Add(Collider);
        Model.GetComponent <OnClickCollider>().Target = gameObject;

        outlineOnClick = gameObject.GetComponent <OutlineOnClick>();

        aoRenderers.Clear();
        aoRenderers.AddRange(Model.GetComponentsInChildren <Renderer>(true));

        outlineOnClick.InitRenderers(aoRenderers);
    }
예제 #18
0
        private void InstantiateDoppleganger(Transform currentLevel)
        {
            Transform other = SKSGeneralUtils.FindAnalogousTransform(currentLevel, Doppleganger.transform, root, true);

            if (currentLevel.tag.Equals("MainCamera"))
            {
                currentLevel.tag = "Untagged";
            }
            currentLevel.gameObject.name = currentLevel.gameObject.name;
            foreach (Component component in currentLevel.GetComponents <Component>())
            {
                if (component is Teleportable)
                {
                    component.SafeDestroyComponent();
                }
                //Copies Transforms for later updating
                else if (component is Transform)
                {
                    if (other)
                    {
                        if (!Transforms.ContainsKey(other))
                        {
                            Transforms.Add(other, (Transform)component);
                        }
                    }
                    else
                    {
                        Destroy(currentLevel.gameObject);
                        break;
                    }
                }
                else if (component is Renderer)
                {
                    if (component is SkinnedMeshRenderer)
                    {
                        SkinnedRenderers.Add(component as SkinnedMeshRenderer);
                    }
                    if (component is Renderer)
                    {
                        if (!Renderers.ContainsKey((Renderer)component))
                        {
                            Renderers[other.GetComponent <Renderer>()] = (Renderer)component;
                        }
                        //Adds colliders to list for collision ignoring upon Portal entry
                    }
                }
                else if (component is Collider)
                {
                    if (!component.GetComponent <TeleportablePhysExclude>())
                    {
                        Collider c = other.GetComponent <Collider>();
                        if (!Colliders.ContainsKey(c.GetInstanceID()))
                        {
                            Colliders.Add(c.GetInstanceID(), c);
                        }
                        else
                        {
                            //Fix for VRTK double-genning body colliders for no reason
                            currentLevel.gameObject.transform.SetParent(null);
                            c.enabled = false;
                            Colliders[c.GetInstanceID()].enabled = false;
                            c.isTrigger = true;
                            Colliders[c.GetInstanceID()].isTrigger = true;
                            DestroyImmediate(Colliders[c.GetInstanceID()].gameObject);
                            DestroyImmediate(currentLevel.gameObject);
                            return;
                        }
                    }
                    if (StripColliders && component)
                    {
                        component.SafeDestroyComponent();
                    }
                }
                else if (component is Rigidbody)
                {
                    if (StripRigidbodies)
                    {
                        component.SafeDestroyComponent();
                    }
                }
                else if (component is Joint)
                {
                    if (StripJoints)
                    {
                        component.SafeDestroyComponent();
                    }
                }
                else if (component is MonoBehaviour)
                {
                    //Handling of teleportable scripts
                    if (component is TeleportableScript)
                    {
                        TeleportableScripts.Add(other.GetComponent <TeleportableScript>());
                    }

                    if (!StripScripts)
                    {
                        if (component != null)
                        {
                            ((MonoBehaviour)component).enabled = true;
                        }
                    }
                    else
                    {
                        component.SafeDestroyComponent();
                    }
                    //Nonspecific setup copying
                }
                else if (component is MeshFilter || component is ParticleSystem || component is Light)
                {
                    //nothin to do
                }
                else
                {
                    component.SafeDestroyComponent();
                }
            }

            if (other)
            {
                currentLevel.gameObject.SetActive(other.gameObject.activeSelf);
            }

            foreach (Transform t in currentLevel)
            {
                InstantiateDoppleganger(t);
            }
        }
예제 #19
0
 protected override void OnAdded()
 {
     Colliders.Add(this, Bounds);
     Transform.Changed += Transform_Changed;
 }