Ejemplo n.º 1
0
 public void GotoLocation(PositionRotation loc)
 {
     flyingTime = 0;
     BorisStart = new PositionRotation(this.gameObject);
     this.targetLocation = loc;
     moving = true;
 }
Ejemplo n.º 2
0
    PositionRotation[] GetConstPRofTL()
    {
        PositionRotation[] posRotAnim = new PositionRotation[4];
        posRotAnim[0] = new PositionRotation(new Vector3(-0.4f, 0.015f, -0.4f), new Vector3(0, 90, 0));
        posRotAnim[1] = new PositionRotation(new Vector3(-0.4f, 0.015f, 0.4f), new Vector3(0, 0, 0));
        posRotAnim[2] = new PositionRotation(new Vector3(0.4f, 0.015f, 0.4f), new Vector3(0, 90, 0));
        posRotAnim[3] = new PositionRotation(new Vector3(0.4f, 0.015f, -0.4f), new Vector3(0, 0, 0));

        return(posRotAnim);
    }
Ejemplo n.º 3
0
    public void PutInTunnel(Transform transform, TunnelVector3 globalPosition)
    {
        float        localDepth;
        TunnelDetail detail = _detailMap.GetDetail(globalPosition.Depth, out localDepth);

        globalPosition.Depth = localDepth;
        PositionRotation position = _positionRotationCalculator.GetPositionRotation(detail, globalPosition);

        position.SetPosition(transform);
    }
Ejemplo n.º 4
0
    PositionRotation[] ConstSignTransform()
    {
        PositionRotation[] posRotAnim = new PositionRotation[4];

        posRotAnim[0] = new PositionRotation(new Vector3(-0.5f, 0.1f, -0.4f), new Vector3(-90, 180, 0), Position.First);
        posRotAnim[1] = new PositionRotation(new Vector3(-0.5f, 0.1f, 0.4f), new Vector3(-90, -90, 0), Position.Second);
        posRotAnim[2] = new PositionRotation(new Vector3(0.5f, 0.1f, 0.4f), new Vector3(-90, 0, 0), Position.Third);
        posRotAnim[3] = new PositionRotation(new Vector3(0.5f, 0.1f, -0.4f), new Vector3(-90, -90, -180), Position.Fourth);
        return(posRotAnim);
    }
Ejemplo n.º 5
0
    public PositionRotation GetCentralPoint(TunnelDetail detail, float depth)
    {
        Quaternion beginning         = Quaternion.Euler(detail.RotationAtTheBeginning.Value, 0, 0);
        Quaternion beginningReversed = Quaternion.Euler(-detail.RotationAtTheBeginning.Value, 0, 0);

        PositionRotation local = beginning * detail.PositionCurve.GetPositionRotation(depth);

        local.Rotation *= beginningReversed;

        return(detail.GlobalStartPoint + local);
    }
Ejemplo n.º 6
0
    public void Start()
    {
        points          = 0;
        question        = 1;
        selected        = "None";
        _selectedObject = null;
        _modelInfo      = new Dictionary <string, PositionRotation>();

        nameToMaterialLists = new Dictionary <string, Dictionary <string, Material> > {
            { "Brain",
              new Dictionary <string, Material> {
                  { "TemporalLobe", Resources.Load("Blue") as Material },
                  { "ParietalLobe", Resources.Load("Green") as Material },
                  { "OccipitalLobe", Resources.Load("Red") as Material },
                  { "FrontalLobe", Resources.Load("Orange") as Material },
                  { "Cerebellum", Resources.Load("Purple") as Material }
              } },
            { "LeftLung",
              new Dictionary <string, Material> {
                  { "InferiorLobe", Resources.Load("Blue") as Material },
                  { "SuperiorLobe", Resources.Load("Green") as Material },
              } },
            { "RightLung",
              new Dictionary <string, Material> {
                  { "SuperiorLobe", Resources.Load("Red") as Material },
                  { "MiddleLobe", Resources.Load("Orange") as Material },
                  { "InferiorLobe", Resources.Load("Purple") as Material }
              } },
        };

        foreach (string modelName in _modelNames)
        {
            Vector3    pos = new Vector3();
            Quaternion rot = new Quaternion();
            pos = GameObject.Find(modelName).transform.position;
            rot = GameObject.Find(modelName).transform.rotation;
            _modelInfo[modelName] = new PositionRotation(pos, rot);
            Debug.Log(modelName);
        }
        score.text = "Score: 0";

        if (mode == "easy")
        {
            EasyQuestion();
        }
        if (mode == "medium")
        {
            MediumQuestion();
        }
        if (mode == "hard")
        {
            HardQuestion();
        }
    }
Ejemplo n.º 7
0
 public static PositionRotation Interpolate(PositionRotation start, PositionRotation end, float progress)
 {
     if (progress <= 0)
         return start;
     if (progress >= 1)
         return end;
     var res = new PositionRotation();
     res.Position = start.Position + ((end.Position - start.Position) * progress);
     res.Rotation = Quaternion.RotateTowards(start.Rotation, end.Rotation, Quaternion.Angle(start.Rotation, end.Rotation) * progress);
     return res;
 }
Ejemplo n.º 8
0
 public TunnelDetail(ITunnelDetailCut tunnelDetailCut,
                     IPositionCurve positionCurve,
                     PositionRotation startPoint,
                     float length,
                     Angle rotationAtTheBeginning)
 {
     TunnelDetailCut        = tunnelDetailCut;
     PositionCurve          = positionCurve;
     GlobalStartPoint       = startPoint;
     Length                 = length;
     RotationAtTheBeginning = rotationAtTheBeginning;
 }
Ejemplo n.º 9
0
 public static PositionRotation Interpolate(PositionRotation start, PositionRotation end, float progress, AnimationCurve curve)
 {
     var diff = (end.Position - start.Position);
     var curveProgress = curve.Evaluate(progress);
     var pos = new Vector3(
             start.Position.x + diff.x * curveProgress,
             start.Position.y + diff.y * curveProgress,
             start.Position.z + diff.z * curveProgress
             );
     var rot = Quaternion.RotateTowards(start.Rotation, end.Rotation, Quaternion.Angle(start.Rotation, end.Rotation) * curveProgress);
     return new PositionRotation(pos, rot);
 }
    // public bool isFrozen = false;

    // Use this for initialization
    void Start()
    {
        PositionRotation = new List <PositionRotation>();
        if (GetComponent <Rigidbody>())
        {
            rb = GetComponent <Rigidbody>();
        }
        temp = new PositionRotation(transform.position, transform.rotation);
        if (SinglePlayer)
        {
            PlayerObject = GameObject.FindGameObjectWithTag("Player");
        }
    }
Ejemplo n.º 11
0
 void SendPacket(PositionRotation pr)
 {
     if (!serverside)
     {
         if (!isServer || editorServer)
         {
             client.SendPacketToServer(pr);
         }
     }
     else
     {
         server.SendPacketToAll(pr);
     }
 }
 public void Rewind()
 {
     if (PositionRotation.Count > 0)
     {
         PositionRotation pointInTime = PositionRotation[0];
         transform.position = pointInTime.position;
         transform.rotation = pointInTime.rotation;
         PositionRotation.RemoveAt(0);
     }
     else
     {
         StopRewind();
     }
 }
Ejemplo n.º 13
0
    public void Start()
    {
        selected            = "None";
        _selectedObject     = null;
        _modelInfo          = new Dictionary <string, PositionRotation>();
        nameToMaterialLists = new Dictionary <string, Dictionary <string, Material> > {
            { "Brain",
              new Dictionary <string, Material> {
                  { "TemporalLobe", Resources.Load("Blue") as Material },
                  { "ParietalLobe", Resources.Load("Green") as Material },
                  { "OccipitalLobe", Resources.Load("Red") as Material },
                  { "FrontalLobe", Resources.Load("Orange") as Material },
                  { "Cerebellum", Resources.Load("Purple") as Material }
              } },
            { "LeftLung",
              new Dictionary <string, Material> {
                  { "InferiorLobe", Resources.Load("Blue") as Material },
                  { "SuperiorLobe", Resources.Load("Green") as Material },
              } },
            { "RightLung",
              new Dictionary <string, Material> {
                  { "SuperiorLobe", Resources.Load("Red") as Material },
                  { "MiddleLobe", Resources.Load("Orange") as Material },
                  { "InferiorLobe", Resources.Load("Purple") as Material }
              } },
        };
        defaultMaterials = new Dictionary <string, Material> {
            { "Brain",
              Resources.Load("Brain") as Material },
            { "LeftLung",
              Resources.Load("Lungs") as Material },
            { "RightLung",
              Resources.Load("Lungs") as Material }
        };
        foreach (string modelName in _modelNames)
        {
            Vector3    pos = new Vector3();
            Quaternion rot = new Quaternion();
            GameObject b   = GameObject.FindWithTag(modelName);
            pos = GameObject.Find(modelName).transform.position;
            rot = GameObject.Find(modelName).transform.rotation;
            _modelInfo[modelName] = new PositionRotation(pos, rot);
            Debug.Log(modelName);
        }
        //SetSelected(GameObject.Find("Brain"));
        AudioClip clip = Resources.Load <AudioClip>("audio/Learn");

        playingAudio.PlayOneShot(clip);
    }
Ejemplo n.º 14
0
 public void GotoLastCheckpoint(object sender, string conversation = null)
 {
     TimerManager.RegisterEvent("Dieded");
     var player = Characters.instance.Beorn;
     start = new PositionRotation(player.transform.position, Characters.GetPlayerController().camerasContainer.localRotation);
     target = new PositionRotation(lastCheckpoint.gameObject);
     player.GetComponent<Rigidbody>().useGravity = false;
     teleporting = true;
     SetMovementRelatedComponentsEnabled(false);
     time = 0;
     OnStartLastCheckpointTeleport(sender, conversation);
     if (conversation != null)
     {
         PlayConversation(conversation);
     }
 }
 void Record()
 {
     /*if(temp.position != transform.position)
      * {
      *  return;
      * }*/
     if (PositionRotation.Count > Mathf.Round(RewindSecs * 1f / Time.fixedDeltaTime))
     {
         PositionRotation.RemoveAt(PositionRotation.Count - 1);
     }
     if (!Pause)
     {
         PositionRotation.Insert(0, new PositionRotation(transform.position, transform.rotation));
     }
     temp = new PositionRotation(transform.position, transform.rotation);
 }
Ejemplo n.º 16
0
    void SyncObjectsRotation()
    {
        Vector3 rotationToSend = transform.rotation.eulerAngles;


        PositionRotation pr = new PositionRotation("D_PositionRotation");

        pr.item_net_id = GetComponent <ScapeNet_Network_ID>().object_id;
        pr.isRotation  = true;
        pr.x           = rotationToSend.x;
        pr.y           = rotationToSend.y;
        pr.z           = rotationToSend.z;

        SendPacket(pr);

        previous_rotation = rotationToSend;
    }
Ejemplo n.º 17
0
    PositionRotation[] ShaffleOdd(PositionRotation[] PRTS)
    {
        float rnd = Random.Range(0, 2);

        if (rnd == 0)
        {
            for (int i = 0; i < PRTS.Length; i++)
            {
                if (i % 2 != 0)
                {
                    PositionRotation temp = PRTS[i].Copy();
                    PRTS[i]     = PRTS[i - 1].Copy();
                    PRTS[i - 1] = temp.Copy();
                }
            }
        }
        return(PRTS);
    }
Ejemplo n.º 18
0
    void CmdRecord()
    {
        int i = 0;

        foreach (GameObject item in RewindObjects)
        {
            if (PositionRotationsList[i].Count > Mathf.Round(RewindSecs * 1f / Time.fixedDeltaTime))// 2000
            {
                PositionRotationsList[i].RemoveAt(PositionRotations.Count - 1);
            }
            if (!Pause && PositionRotation.position != item.transform.position)
            {
                PositionRotationsList[i].Insert(0, new PositionRotation(item.transform.position, item.transform.rotation));
            }
            PositionRotation = new PositionRotation(item.transform.position, item.transform.rotation);
            i++;
        }
    }
Ejemplo n.º 19
0
    private void FillDetails()
    {
        _details = new TunnelDetail[_count];
        IPositionRotationCalculator calculator = new SimplePositionRotationCalculator();

        PositionRotation start = PositionRotation.Identity;
        ITunnelDetailCut cut   = new SimpleCut(_radius);

        IPositionCurve[] curves = new IPositionCurve[3];
        curves[0] = new SimpleCurvedCurve(10);
        curves[1] = new SimpleCurvedCurve(30);
        curves[2] = new SimpleCurve();

        for (int i = 0; i < _count; i++)
        {
            _details[i] = new TunnelDetail(cut, curves[i % curves.Length], start, _length, new Angle(Random.Range(0, 360f)));
            start       = calculator.GetCentralPoint(_details[i], _details[i].Length);
        }
    }
Ejemplo n.º 20
0
    protected override float ErrorFunction(Vector3 target, float[] angles)
    {
        PositionRotation result = ForwardKinematics(angles);

        // Minimise torsion (rotation on x axis)
        float torsion = 0;

        for (int i = 0; i < angles.Length; i++)
        {
            torsion += Mathf.Abs(angles[i]) * TorsionPenality.x;
            torsion += Mathf.Abs(angles[i]) * TorsionPenality.y;
            torsion += Mathf.Abs(angles[i]) * TorsionPenality.z;
        }

        float distance            = Vector3.Distance(target, result);
        float effectorOrientation = Mathf.Abs(Quaternion.Angle(result, Target.rotation) / 180f) * OrientationWeight;

        torsion = (torsion / angles.Length) * TorsionWeight;

        return(distance + effectorOrientation + torsion);
    }
Ejemplo n.º 21
0
    public void CmdRewind()
    {
        int i = 0;

        foreach (GameObject item in RewindObjects)
        {
            if (PositionRotationsList[i].Count > 0)
            {
                PositionRotation pointInTime = PositionRotationsList[i][0];
                item.transform.position = pointInTime.position;
                item.transform.rotation = pointInTime.rotation;
                RpcRewind(item, item.transform.position, item.transform.rotation);
                PositionRotationsList[i].RemoveAt(0);
            }
            else
            {
                CmdStopRewind();
            }
            i++;
        }
    }
Ejemplo n.º 22
0
        private void SpawnGameObject(Spawnable spawnable,
                                     GameObject gameObjectInstance,
                                     PositionRotation spawnLocRot,
                                     Vector3 color)
        {
            if (spawnLocRot != null)
            {
                gameObjectInstance.transform.localPosition = spawnLocRot.Position;
                gameObjectInstance.transform.Rotate(spawnLocRot.Rotation);
                gameObjectInstance.SetLayer(0);
                gameObjectInstance.GetComponent <IPrefab>().SetColor(color);

                if (gameObjectInstance.CompareTag("goodGoal"))
                {
                    _goodGoalsMultiSpawned.Add(gameObjectInstance.GetComponent <Goal>());
                }
            }
            else
            {
                GameObject.DestroyImmediate(gameObjectInstance);
            }
        }
Ejemplo n.º 23
0
        private void InstantiateSpawnable(Spawnable spawnable, GameObject spawnedObjectsHolder)
        {
            List <Vector3> positions = spawnable.positions;
            List <float>   rotations = spawnable.rotations;
            List <Vector3> sizes     = spawnable.sizes;
            List <Vector3> colors    = spawnable.colors;

            int numberOfPositions = positions.Count;
            int numberOfRotations = rotations.Count;
            int numberOfSizes     = sizes.Count;
            int numberOfColors    = colors.Count;
            int n = Math.Max(numberOfColors, Math.Max(numberOfPositions,
                                                      Math.Max(numberOfRotations, numberOfSizes)));

            int k = 0;

            do
            {
                GameObject gameObjectInstance = GameObject.Instantiate(spawnable.gameObject,
                                                                       spawnedObjectsHolder.transform,
                                                                       false);
                gameObjectInstance.SetLayer(1);
                Vector3 position = k < numberOfPositions ? positions[k] : -Vector3.one;
                float   rotation = k < numberOfRotations ? rotations[k] : -1;
                Vector3 size     = k < numberOfSizes ? sizes[k] : -Vector3.one;
                Vector3 color    = k < numberOfColors ? colors[k] : -Vector3.one;

                PositionRotation spawnPosRot = SamplePositionRotation(gameObjectInstance,
                                                                      _maxSpawnAttemptsForPrefabs,
                                                                      position,
                                                                      rotation,
                                                                      size);

                SpawnGameObject(spawnable, gameObjectInstance, spawnPosRot, color);
                k++;
            } while (k < n);
        }
Ejemplo n.º 24
0
    void SyncObjectsPosition()
    {
        Vector3 positionToSend;

        //If object has a parent, then convert position before sending.
        if (transform.parent != null)
        {
            positionToSend = transform.TransformVector(transform.localPosition);
        }
        else
        {
            positionToSend = transform.position;
        }

        if (previous_position == positionToSend)
        {
            return;
        }

        if (positionToSend.x >= float.MaxValue || positionToSend.y >= float.MaxValue || positionToSend.z >= float.MaxValue)
        {
            return;
        }

        PositionRotation pr = new PositionRotation("D_PositionRotation");

        pr.item_net_id = GetComponent <ScapeNet_Network_ID>().object_id;
        pr.isRotation  = false;
        pr.x           = positionToSend.x;
        pr.y           = positionToSend.y;
        pr.z           = positionToSend.z;


        SendPacket(pr);

        previous_position = positionToSend;
    }
Ejemplo n.º 25
0
        private void AddDefaultPacketReceives()
        {
            Packet_Register.Instance.serverPacketReceivedRegister.Add("D_Connection", packetObj =>
            {
                ConnectionPacket connectionPacket = (ConnectionPacket)packetObj[0];
                NetConnection senderConnection    = (NetConnection)packetObj[2];

                //Register Player
                int newID = GetNextPlayerID();
                playersConnection.Add(senderConnection, newID);
                players.Add(newID, senderConnection);
                connectionPacket.player_id = newID;

                SendPacketToExistingConnection(connectionPacket, senderConnection, -1);

                return(false);
            });

            Packet_Register.Instance.serverPacketReceivedRegister.Add("D_OnConnect", packetObj =>
            {
                OnConnectPacket instantiate = (OnConnectPacket)packetObj[0];
                int playerId       = (int)packetObj[1];
                NetConnection conn = (NetConnection)packetObj[2];


                foreach (PacketWithId <InstantiationPacket> ip in registers)
                {
                    SendPacketToExistingConnection(ip.packet, conn, ip.playerId);
                }

                if (funcOnNewConnection != null)
                {
                    funcOnNewConnection.Invoke(packetObj);
                }

                return(false);
            });


            Packet_Register.Instance.serverPacketReceivedRegister.Add("D_Instantiate", packetObj =>
            {
                InstantiationPacket instantiate = (InstantiationPacket)packetObj[0];
                int playerId = (int)packetObj[1];

                instantiate.item_net_id = GetNextItemID();
                registers.Add(new PacketWithId <InstantiationPacket>(instantiate, playerId));

                SendPacketToAll(instantiate, playerId);

                return(false);
            });

            Packet_Register.Instance.serverPacketReceivedRegister.Add("D_Delete", packetObj =>
            {
                DeletePacket instantiate = (DeletePacket)packetObj[0];
                int playerId             = (int)packetObj[1];
                NetConnection conn       = (NetConnection)packetObj[2];

                int idToRemove = -1;

                for (int i = 0; i < registers.Count; i++)
                {
                    //Found packet we need to delete
                    if (registers[i].packet.item_net_id == instantiate.item_net_id)
                    {
                        idToRemove = i;
                        break;
                    }
                }

                registers.RemoveAt(idToRemove);
                SendPacketToAll(instantiate, playerId);
                return(false);
            });

            Packet_Register.Instance.serverPacketReceivedRegister.Add("D_PositionRotation", packetObj =>
            {
                PositionRotation packet = (PositionRotation)packetObj[0];
                int playerId            = (int)packetObj[1];
                NetConnection conn      = (NetConnection)packetObj[2];

                SendPacketToAll(packet, playerId);
                return(false);
            });
        }
Ejemplo n.º 26
0
 // Use this for initialization
 void Start()
 {
     InitBell();
     var conversationManager = ConversationManager.instance;
     if (conversationManager != null)
     {
         conversationManager.OnConversationStart += conversationManager_OnConversationStart;
         conversationManager.OnConversationEnd += conversationManager_OnConversationEnd;
     }
     targetLocation = new PositionRotation(gameObject);
 }
Ejemplo n.º 27
0
 public PlacedCreature(SimpleSubrecord <String> EditorID, RecordReference Base, RecordReference EncounterZone, SimpleSubrecord <Byte[]> RagdollData, SimpleSubrecord <Byte[]> RagdollBipedData, ReferencePatrolData Patrol, SimpleSubrecord <Int32> LevelModifier, RecordReference Owner, SimpleSubrecord <Int32> FactionRank, RecordReference MerchantContainer, SimpleSubrecord <Int32> Count, SimpleSubrecord <Single> Radius, SimpleSubrecord <Single> Health, List <SimpleSubrecord <Byte[]> > Decals, RecordReference LinkedReference, LinkedReferenceColor LinkedReferenceColor, SimpleSubrecord <NoYesByte> ParentActivateOnly, List <ActivateParent> ActivateParents, SimpleSubrecord <String> ActivationPrompt, EnableParent EnableParent, RecordReference Emittance, RecordReference MultiBound, SubMarker IgnoredBySandbox, SimpleSubrecord <Single> Scale, PositionRotation PositionRotation)
 {
 }
Ejemplo n.º 28
0
        public override void ReadDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("EditorID", false, out subEle))
            {
                if (EditorID == null)
                {
                    EditorID = new SimpleSubrecord <String>();
                }

                EditorID.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Base", false, out subEle))
            {
                if (Base == null)
                {
                    Base = new RecordReference();
                }

                Base.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("EncounterZone", false, out subEle))
            {
                if (EncounterZone == null)
                {
                    EncounterZone = new RecordReference();
                }

                EncounterZone.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("RagdollData", false, out subEle))
            {
                if (RagdollData == null)
                {
                    RagdollData = new SimpleSubrecord <Byte[]>();
                }

                RagdollData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("RagdollBipedData", false, out subEle))
            {
                if (RagdollBipedData == null)
                {
                    RagdollBipedData = new SimpleSubrecord <Byte[]>();
                }

                RagdollBipedData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Patrol", false, out subEle))
            {
                if (Patrol == null)
                {
                    Patrol = new ReferencePatrolData();
                }

                Patrol.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("LevelModifier", false, out subEle))
            {
                if (LevelModifier == null)
                {
                    LevelModifier = new SimpleSubrecord <Int32>();
                }

                LevelModifier.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Owner", false, out subEle))
            {
                if (Owner == null)
                {
                    Owner = new RecordReference();
                }

                Owner.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("FactionRank", false, out subEle))
            {
                if (FactionRank == null)
                {
                    FactionRank = new SimpleSubrecord <Int32>();
                }

                FactionRank.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("MerchantContainer", false, out subEle))
            {
                if (MerchantContainer == null)
                {
                    MerchantContainer = new RecordReference();
                }

                MerchantContainer.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Count", false, out subEle))
            {
                if (Count == null)
                {
                    Count = new SimpleSubrecord <Int32>();
                }

                Count.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Radius", false, out subEle))
            {
                if (Radius == null)
                {
                    Radius = new SimpleSubrecord <Single>();
                }

                Radius.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Health", false, out subEle))
            {
                if (Health == null)
                {
                    Health = new SimpleSubrecord <Single>();
                }

                Health.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Decals", false, out subEle))
            {
                if (Decals == null)
                {
                    Decals = new List <SimpleSubrecord <Byte[]> >();
                }

                foreach (XElement e in subEle.Elements())
                {
                    SimpleSubrecord <Byte[]> tempXDCR = new SimpleSubrecord <Byte[]>();
                    tempXDCR.ReadXML(e, master);
                    Decals.Add(tempXDCR);
                }
            }
            if (ele.TryPathTo("LinkedReference", false, out subEle))
            {
                if (LinkedReference == null)
                {
                    LinkedReference = new RecordReference();
                }

                LinkedReference.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("LinkedReferenceColor", false, out subEle))
            {
                if (LinkedReferenceColor == null)
                {
                    LinkedReferenceColor = new LinkedReferenceColor();
                }

                LinkedReferenceColor.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("ParentActivateOnly", false, out subEle))
            {
                if (ParentActivateOnly == null)
                {
                    ParentActivateOnly = new SimpleSubrecord <NoYesByte>();
                }

                ParentActivateOnly.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("ActivateParents", false, out subEle))
            {
                if (ActivateParents == null)
                {
                    ActivateParents = new List <ActivateParent>();
                }

                foreach (XElement e in subEle.Elements())
                {
                    ActivateParent tempXAPR = new ActivateParent();
                    tempXAPR.ReadXML(e, master);
                    ActivateParents.Add(tempXAPR);
                }
            }
            if (ele.TryPathTo("ActivationPrompt", false, out subEle))
            {
                if (ActivationPrompt == null)
                {
                    ActivationPrompt = new SimpleSubrecord <String>();
                }

                ActivationPrompt.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("EnableParent", false, out subEle))
            {
                if (EnableParent == null)
                {
                    EnableParent = new EnableParent();
                }

                EnableParent.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Emittance", false, out subEle))
            {
                if (Emittance == null)
                {
                    Emittance = new RecordReference();
                }

                Emittance.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("MultiBound", false, out subEle))
            {
                if (MultiBound == null)
                {
                    MultiBound = new RecordReference();
                }

                MultiBound.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("IgnoredBySandbox", false, out subEle))
            {
                if (IgnoredBySandbox == null)
                {
                    IgnoredBySandbox = new SubMarker();
                }

                IgnoredBySandbox.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Scale", false, out subEle))
            {
                if (Scale == null)
                {
                    Scale = new SimpleSubrecord <Single>();
                }

                Scale.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("PositionRotation", false, out subEle))
            {
                if (PositionRotation == null)
                {
                    PositionRotation = new PositionRotation();
                }

                PositionRotation.ReadXML(subEle, master);
            }
        }
Ejemplo n.º 29
0
        public override void ReadData(ESPReader reader, long dataEnd)
        {
            while (reader.BaseStream.Position < dataEnd)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "EDID":
                    if (EditorID == null)
                    {
                        EditorID = new SimpleSubrecord <String>();
                    }

                    EditorID.ReadBinary(reader);
                    break;

                case "NAME":
                    if (Base == null)
                    {
                        Base = new RecordReference();
                    }

                    Base.ReadBinary(reader);
                    break;

                case "XEZN":
                    if (EncounterZone == null)
                    {
                        EncounterZone = new RecordReference();
                    }

                    EncounterZone.ReadBinary(reader);
                    break;

                case "XRGD":
                    if (RagdollData == null)
                    {
                        RagdollData = new SimpleSubrecord <Byte[]>();
                    }

                    RagdollData.ReadBinary(reader);
                    break;

                case "XRGB":
                    if (RagdollBipedData == null)
                    {
                        RagdollBipedData = new SimpleSubrecord <Byte[]>();
                    }

                    RagdollBipedData.ReadBinary(reader);
                    break;

                case "XPRD":
                    if (Patrol == null)
                    {
                        Patrol = new ReferencePatrolData();
                    }

                    Patrol.ReadBinary(reader);
                    break;

                case "XLCM":
                    if (LevelModifier == null)
                    {
                        LevelModifier = new SimpleSubrecord <Int32>();
                    }

                    LevelModifier.ReadBinary(reader);
                    break;

                case "XOWN":
                    if (Owner == null)
                    {
                        Owner = new RecordReference();
                    }

                    Owner.ReadBinary(reader);
                    break;

                case "XRNK":
                    if (FactionRank == null)
                    {
                        FactionRank = new SimpleSubrecord <Int32>();
                    }

                    FactionRank.ReadBinary(reader);
                    break;

                case "XMRC":
                    if (MerchantContainer == null)
                    {
                        MerchantContainer = new RecordReference();
                    }

                    MerchantContainer.ReadBinary(reader);
                    break;

                case "XCNT":
                    if (Count == null)
                    {
                        Count = new SimpleSubrecord <Int32>();
                    }

                    Count.ReadBinary(reader);
                    break;

                case "XRDS":
                    if (Radius == null)
                    {
                        Radius = new SimpleSubrecord <Single>();
                    }

                    Radius.ReadBinary(reader);
                    break;

                case "XHLP":
                    if (Health == null)
                    {
                        Health = new SimpleSubrecord <Single>();
                    }

                    Health.ReadBinary(reader);
                    break;

                case "XDCR":
                    if (Decals == null)
                    {
                        Decals = new List <SimpleSubrecord <Byte[]> >();
                    }

                    SimpleSubrecord <Byte[]> tempXDCR = new SimpleSubrecord <Byte[]>();
                    tempXDCR.ReadBinary(reader);
                    Decals.Add(tempXDCR);
                    break;

                case "XLKR":
                    if (LinkedReference == null)
                    {
                        LinkedReference = new RecordReference();
                    }

                    LinkedReference.ReadBinary(reader);
                    break;

                case "XCLP":
                    if (LinkedReferenceColor == null)
                    {
                        LinkedReferenceColor = new LinkedReferenceColor();
                    }

                    LinkedReferenceColor.ReadBinary(reader);
                    break;

                case "XAPD":
                    if (ParentActivateOnly == null)
                    {
                        ParentActivateOnly = new SimpleSubrecord <NoYesByte>();
                    }

                    ParentActivateOnly.ReadBinary(reader);
                    break;

                case "XAPR":
                    if (ActivateParents == null)
                    {
                        ActivateParents = new List <ActivateParent>();
                    }

                    ActivateParent tempXAPR = new ActivateParent();
                    tempXAPR.ReadBinary(reader);
                    ActivateParents.Add(tempXAPR);
                    break;

                case "XATO":
                    if (ActivationPrompt == null)
                    {
                        ActivationPrompt = new SimpleSubrecord <String>();
                    }

                    ActivationPrompt.ReadBinary(reader);
                    break;

                case "XESP":
                    if (EnableParent == null)
                    {
                        EnableParent = new EnableParent();
                    }

                    EnableParent.ReadBinary(reader);
                    break;

                case "XEMI":
                    if (Emittance == null)
                    {
                        Emittance = new RecordReference();
                    }

                    Emittance.ReadBinary(reader);
                    break;

                case "XMBR":
                    if (MultiBound == null)
                    {
                        MultiBound = new RecordReference();
                    }

                    MultiBound.ReadBinary(reader);
                    break;

                case "XIBS":
                    if (IgnoredBySandbox == null)
                    {
                        IgnoredBySandbox = new SubMarker();
                    }

                    IgnoredBySandbox.ReadBinary(reader);
                    break;

                case "XSCL":
                    if (Scale == null)
                    {
                        Scale = new SimpleSubrecord <Single>();
                    }

                    Scale.ReadBinary(reader);
                    break;

                case "DATA":
                    if (PositionRotation == null)
                    {
                        PositionRotation = new PositionRotation();
                    }

                    PositionRotation.ReadBinary(reader);
                    break;

                default:
                    throw new Exception();
                }
            }
        }
Ejemplo n.º 30
0
            public override void Stop()
            {
                base.Stop();
                foreach (Rigidbody2D body in cachedBodies)
                {
                    if (!body)
                    {
                        continue;
                    }
                    body.velocity        = Vector3.zero;
                    body.angularVelocity = 0;
                    body.Sleep();
                }

                foreach (var body in excludedBodies)
                {
                    if (!body)
                    {
                        continue;
                    }
                    body.velocity        = Vector3.zero;
                    body.angularVelocity = 0;
                    body.Sleep();
                }

                foreach (var body in objectsWithAddedBody)
                {
                    if (!body)
                    {
                        continue;
                    }
                    Object.DestroyImmediate(body.GetComponent <Rigidbody2D>());
                }

                int i = 0;

                foreach (var body in cachedBodies)
                {
                    if (!body)
                    {
                        i++;
                        continue;
                    }
                    PositionRotation newPr = new PositionRotation(body.position, body.rotation);
                    body.gameObject.transform.position = previousPositionRotations[i].Position;
                    body.rotation = previousPositionRotations[i].Rotation;
                    previousPositionRotations[i] = newPr;
                    i++;
                }


                int id = MonkeyEditorUtils.CreateUndoGroup("Physics Simulation");

                i = 0;
                foreach (var body in cachedBodies)
                {
                    if (!body)
                    {
                        i++;
                        continue;
                    }
                    Undo.RecordObject(body.transform, "position rotation");
                    body.gameObject.transform.position = previousPositionRotations[i].Position;
                    body.rotation = previousPositionRotations[i].Rotation;
                }
                Undo.CollapseUndoOperations(id);

                Physics2D.simulationMode = SimulationMode2D.FixedUpdate;
                currentEditorPhysics2D   = null;
            }