示例#1
0
 public void Update()
 {
     if (WestdriveSettings.isPlaying)
     {
         int currentFrame = TimeGaurd.getCurrentFrame();
         if (currentFrame > lastFrame)
         {
             Destroy(this.gameObject);
             if (this.CompareTag("Event Object"))
             {
                 Destroy(this.transform.parent.gameObject);
             }
         }
         else if (dataPoints.ContainsKey(currentFrame))
         {
             if (WestdriveSettings.useInterpolate == true)
             {
                 positionToBe = dataPoints[currentFrame].position;
                 Vector3    direction      = positionToBe - engine.position;
                 Vector3    localDirection = transform.InverseTransformPoint(positionToBe);
                 float      angle          = Mathf.Atan2(localDirection.x, localDirection.z) * Mathf.Rad2Deg;
                 Quaternion deltaRotation  = Quaternion.Euler(new Vector3(0, angle, 0));
                 engine.MovePosition(engine.position + (direction * Time.deltaTime));
                 engine.MoveRotation(engine.rotation * deltaRotation);
             }
             else
             {
                 engine.position = dataPoints[currentFrame].position;
                 engine.rotation = dataPoints[currentFrame].rotaion;
             }
         }
     }
 }
    // creates a green or yellow spehere
    void Update()
    {
        if (WestdriveSettings.isPlaying)
        {
            if (currentFrame <= lastFrame)
            {
                transform.position = recordedData.Data[currentFrame][0].cameraPosition;
                transform.rotation = recordedData.Data[currentFrame][0].cameraRotation;
                foreach (HitPositionType hitPoint in recordedData.Data[currentFrame])
                {
                    if (hitPoint.centerHitPostion != Vector3.zero)
                    {
                        GameObject centerHit = GameObject.CreatePrimitive(PrimitiveType.Sphere);
                        centerHit.transform.position = hitPoint.centerHitPostion;
                        centerHit.transform.lossyScale.Set(0.5f, 0.5f, 0.5f);
                        centerHit.transform.parent = visualisationDotsParent;
                        Renderer renderer = centerHit.GetComponent <Renderer>();
                        renderer.material = new Material(baseMaterial);
                        renderer.material.SetColor("_Color", Color.green);
                    }

                    if (hitPoint.boxHitPostion != Vector3.zero)
                    {
                        GameObject boxHit = GameObject.CreatePrimitive(PrimitiveType.Sphere);
                        boxHit.transform.position = hitPoint.boxHitPostion;
                        boxHit.transform.lossyScale.Set(0.5f, 0.5f, 0.5f);
                        boxHit.transform.parent = visualisationDotsParent;
                        Renderer renderer = boxHit.GetComponent <Renderer>();
                        renderer.material = new Material(baseMaterial);
                        renderer.material.SetColor("_Color", Color.yellow);
                    }
                }

                TimeGaurd.setCurrentFrame(currentFrame);
                currentFrame++;
            }
        }
    }
    //tracks the headposition, rotation and movement

    private void Update()
    {
        if (isTracking)
        {
            PositionRotationType dataPoint = new PositionRotationType();
            dataPoint.position = gameObject.transform.position;
            dataPoint.rotaion  = gameObject.transform.rotation;
            if (!recordedData.Data.ContainsKey(Time.frameCount - WestdriveSettings.frameCorrection))
            {
                recordedData.Data.Add(Time.frameCount - WestdriveSettings.frameCorrection, dataPoint);
            }
            else
            {
                recordedData.Data[Time.frameCount - WestdriveSettings.frameCorrection] = dataPoint;
            }
        }

        else if (isRayCasting && WestdriveSettings.isPlaying)
        {
            if (currentFrame <= lastFrame)
            {
                AnalyzableData  frameData    = new AnalyzableData();
                HitPositionType hitPositions = new HitPositionType();
                frameData.frameNumber       = currentFrame;
                transform.position          = recordedData.Data[currentFrame].position;
                transform.rotation          = recordedData.Data[currentFrame].rotaion;
                frameData.trackerPosition   = transform.position;
                frameData.trackerRotation   = transform.rotation;
                hitPositions.cameraPosition = transform.position;
                hitPositions.cameraRotation = transform.rotation;
                Ray imaginaryMiddleEye =
                    GetComponent <Camera>().ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f));
                RaycastHit centerHit;
                Debug.DrawRay(imaginaryMiddleEye.origin, imaginaryMiddleEye.direction * 1000, Color.red);

                if (Physics.Raycast(imaginaryMiddleEye, out centerHit, Mathf.Infinity, 1 << WestdriveSettings.trackableLayerMask))
                {
                    frameData.centerHit           = centerHit.transform.name;
                    hitPositions.centerHitPostion = centerHit.point;
                    frameData.centerHitPosition   = centerHit.point;
                    frameData.centerHitGroup      = centerHit.transform.root.name;
                }
                else
                {
                    frameData.centerHit           = "null";
                    hitPositions.centerHitPostion = Vector3.zero;
                    frameData.centerHitPosition   = Vector3.zero;
                    frameData.centerHitGroup      = "null";
                }
                RaycastHit boxHit;
                if (Physics.BoxCast(transform.position, new Vector3(5, 5, 5), transform.forward, out boxHit,
                                    transform.rotation, Mathf.Infinity, 1 << WestdriveSettings.trackableLayerMask))
                {
                    frameData.boxHit           = boxHit.transform.name;
                    hitPositions.boxHitPostion = boxHit.point;
                    frameData.boxHitPosition   = boxHit.point;
                    frameData.boxHitGroup      = boxHit.transform.root.name;
                }
                else
                {
                    frameData.boxHit           = "null";
                    hitPositions.boxHitPostion = Vector3.zero;
                    frameData.boxHitPosition   = Vector3.zero;
                    frameData.boxHitGroup      = "null";
                }
                Collider[] environment = Physics.OverlapBox(transform.position, new Vector3(5, 5, Mathf.Infinity),
                                                            transform.rotation, 1 << WestdriveSettings.trackableLayerMask);
                frameData.presentObjectName  = "";
                frameData.presentObjectGroup = "";
                if (environment.Length == 0)
                {
                    frameData.presentObjectName  += "null";
                    frameData.presentObjectGroup += "null";
                }
                else
                {
                    foreach (Collider presentObject in environment)
                    {
                        frameData.presentObjectName  += (presentObject.transform.name + "*");
                        frameData.presentObjectGroup += (presentObject.transform.root.name + "*");
                    }
                }
                WestdriveSettings.processedData.Add(frameData);
                WestdriveSettings.hitData.Data.Add(currentFrame, hitPositions);
                TimeGaurd.setCurrentFrame(currentFrame);
                currentFrame++;
            }
        }
    }
示例#4
0
 public void setCurretFrame(int frameNumber)
 {
     this.currentFrame = frameNumber;
     TimeGaurd.setCurrentFrame(currentFrame);
 }