Пример #1
0
    public Creature(Vector2 position, int birthDay)
    {
        // За допомогою стягнутого класу ПрімітівХелпер - стягує меш з куба
        this.mesh = PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Cube);
        // Фукнція, що додає до геймОбджекта потрібні нам компоненти і правильно інціалізує їх
        ImplementComponents();

        // Ініціалізація полів
        this.id       = Creature.ID_COUNTER++;
        this.hunger   = 0;
        this.thirst   = 0;
        this.birthDay = birthDay;
        this.deathDay = (int)Random.Range(DEATH_RANGE.x, DEATH_RANGE.y);
        this.speed    = Random.Range(0.7f, 3);
        this.weight   = 0;
        // this.isMoving = false;
        // this.isLookingFor = false;
        // this.targetCell = new Vector2(position.x, position.y);
        this.targetPath    = new Vector2[1];
        this.targetPath[0] = new Vector2(position.x, position.y);
        this.pathIndex     = 0;
        // this.isAlive = true;
        this.state = CreatureState.Standing;

        this.meshHeight = 1;

        this.position = new Vector3(position.x,
                                    Creature.objectMap[(int)position.x, (int)position.y].transform.position.y + this.meshHeight,
                                    position.y);
        // Позначення в глобальному масиві, що дана клітка зайнята
        Creature.digitalMap[(int)position.x, (int)position.y] = 9;
        // Вибір випадкового напрямку, кліток
        RandomizeMove();
    }
Пример #2
0
    GameObject createSky()
    {
        GameObject skyGo = PrimitiveHelper.CreatePrimitive(PrimitiveType.Quad, false, "Sky");

        // Mesh meshCube =  PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Cube);

        skyGo.transform.position   = new Vector3(0, 100, 790);
        skyGo.transform.localScale = new Vector3(1700, 1200, 1);
        skyGo.transform.parent     = gameObject.transform;

        //9) Give it a Material
        // Material material = new Material(PrimitiveHelper.GetMaterialStandard());
        Material skyMa = new Material(Shader.Find("Aviator/LinearGradientColor"));

        skyMa.SetColor("_color1", AviatorColors.Sky);
        skyMa.SetColor("_color2", AviatorColors.Fog);
        MeshRenderer skyMr = skyGo.GetComponent <MeshRenderer>();

        skyMr.material          = skyMa;
        skyMr.shadowCastingMode = ShadowCastingMode.Off;
        skyMr.receiveShadows    = false;

        skyGo.isStatic = true;

        return(skyGo);
    }
Пример #3
0
        public void Map_object_when_null_values_are_typed()
        {
            //Arrange
            //Expression<Func<UserModel, bool>> selection = s => s != null && s.AccountModel != null && s.AccountModel.Bal > 555.20;
            ParameterExpression userParam                  = Expression.Parameter(typeof(UserModel), "s");
            MemberExpression    accountModelProperty       = Expression.MakeMemberAccess(userParam, PrimitiveHelper.GetFieldOrProperty(typeof(UserModel), "AccountModel"));
            Expression <Func <UserModel, bool> > selection = Expression.Lambda <Func <UserModel, bool> >
                                                             (
                Expression.AndAlso
                (
                    Expression.AndAlso
                    (
                        Expression.NotEqual(userParam, Expression.Constant(null, typeof(UserModel))),
                        Expression.NotEqual(accountModelProperty, Expression.Constant(null, typeof(AccountModel)))
                    ),
                    Expression.GreaterThan
                    (
                        Expression.MakeMemberAccess(accountModelProperty, PrimitiveHelper.GetFieldOrProperty(typeof(AccountModel), "Bal")),
                        Expression.Constant(555.20, typeof(double))
                    )
                ),
                userParam
                                                             );

            //Act
            Expression <Func <User, bool> > selectionMapped = mapper.MapExpression <Expression <Func <User, bool> > >(selection);
            List <User> users = Users.Where(selectionMapped).ToList();

            //Assert
            Assert.True(users.Count == 2);
        }
Пример #4
0
    private void OnUpdatePinch(float fDistance)
    {
        float fZoomAverage = PrimitiveHelper.GetCalcReverseFloat(_fStartPinchZoomSize, fDistance);

        fZoomAverage = Mathf.Clamp(fZoomAverage, p_iCameraZoomMin, p_iCameraZoomMax);

        if (_bIsCameraOrtho)
        {
            _pCamera.orthographicSize = fZoomAverage;
        }
        else
        {
            // 터치 2개 중앙부터 Plane 까지 쏜 좌표값 구하기
            Vector3 v3CenterRayPos = PrimitiveHelper.GetPlaneRaycastPos(_sPlaneCurrentAxis, _pCamera.ScreenPointToRay(PrimitiveHelper.GetCenterByResolution()));

            _pTransCamera.position = v3CenterRayPos - _pTransCamera.forward * fZoomAverage;
        }

        if (p_fZoomSmoothFactor > 0f)
        {
            _fLerpPinchDistance = Mathf.Lerp(_fLerpPinchDistance, fDistance, Time.deltaTime * p_fZoomSmoothFactor);
        }
        else
        {
            _fLerpPinchDistance = fDistance;
        }
    }
Пример #5
0
        void DrawCollider(Collider col, Color color)
        {
            if (col == null)
            {
                return;
            }
            Mesh mesh = null;

            if (col is SphereCollider)
            {
                mesh = PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Sphere);
            }
            else if (col is BoxCollider)
            {
                mesh = PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Cube);
            }
            else if (col is CapsuleCollider)
            {
                mesh = PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Capsule);
            }
            else if (col is MeshCollider)
            {
                mesh = ((MeshCollider)col).sharedMesh;
            }
            if (mesh == null)
            {
                return;
            }
            Config.Debug.HitboxMaterial.SetColor("_Color", color);
            Config.Debug.HitboxMaterial.SetPass(0);
            Graphics.DrawMeshNow(mesh, Gizmo.GetColliderMatrix(col));
        }
    private Vector3 ProcShake(Vector3 vecFollowPos)
    {
        if (_fRemainShakePow > 0f)
        {
            _fRemainShakePow -= _fShakeMinusDelta;
            if (_fRemainShakePow <= 0f)
            {
                if (_bFollowX == false)
                {
                    vecFollowPos.x = _vecOriginPos.x;
                }

                if (_bFollowY == false)
                {
                    vecFollowPos.y = _vecOriginPos.y;
                }

                if (_bFollowZ == false)
                {
                    vecFollowPos.z = _vecOriginPos.z;
                }
            }
            else
            {
                Vector3 vecShakePos = PrimitiveHelper.RandomRange(vecFollowPos.AddFloat(-_fRemainShakePow), vecFollowPos.AddFloat(_fRemainShakePow));
                //if (_bFollowX) vecFollowPos.x = vecShakePos.x;
                //if (_bFollowY) vecFollowPos.y = vecShakePos.y;
                //if (_bFollowZ) vecFollowPos.z = vecShakePos.z;

                vecFollowPos = vecShakePos;
            }
        }

        return(vecFollowPos);
    }
Пример #7
0
    private void Awake()
    {
        decalRoot                      = transform;
        particleSystem                 = gameObject.AddComponent <ParticleSystem>();
        particleSystem.loop            = false;
        particleSystem.playOnAwake     = false;
        particleSystem.enableEmission  = false;
        particleSystem.simulationSpace = ParticleSystemSimulationSpace.World;
        ParticleSystem.ShapeModule shape = particleSystem.shape;
        shape.enabled = false;
        ParticleSystemRenderer renderer = decalRoot.GetComponent <ParticleSystemRenderer>();

        renderer.renderMode = ParticleSystemRenderMode.Mesh;
        renderer.alignment  = ParticleSystemRenderSpace.World;
        // renderer.sortMode = ParticleSystemSortMode.YoungestInFront;
        renderer.enableGPUInstancing = true;
        renderer.castShadows         = false;
        renderer.receiveShadows      = false;
        renderer.material            = Resources.Load <Material>("Materials/ParticleDecalMaterial");
        renderer.mesh = PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Quad);

        for (int i = 0; i < CAPACITY; i++)
        {
            data[i] = new ParticleDecalData();
        }
    }
Пример #8
0
    GameObject createSea()
    {// parent = new GameObject("Sea");
     // parent.transform.parent = gameObject.transform;

        //1) Create an empty GameObject with the required Components
        // GameObject seaGo = PrimitiveHelper.CreatePrimitive(PrimitiveType.Cylinder, false, "Sea");
        GameObject   seaGo    = new GameObject("Sea");
        DrawCylinder cylinder = seaGo.AddComponent <DrawCylinder>();

        cylinder.segmentsHeight = 10;
        cylinder.segmentsRadial = 40;
        // Mesh meshCube =  PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Cube);

        seaGo.transform.position = Vector3.down * Aviator.seaRadius;
        seaGo.transform.Rotate(Vector3.right * -90);
        // seaGo.transform.localScale = new Vector3(1200, 400, 1200); // for unity built-in PrimitiveType.Cylinder
        // remember to divide y by cylinder.segmentsHeight
        seaGo.transform.localScale = new Vector3(Aviator.seaRadius, Aviator.seaLength / cylinder.segmentsHeight, Aviator.seaRadius); // for self-built DrawCylinder
        seaGo.transform.parent     = gameObject.transform;

        //9) Give it a Material
        MeshRenderer seaMr = seaGo.AddComponent <MeshRenderer>();
        Material     seaMa = seaMr.material;

        seaMa.SetColor("_Color", AviatorColors.Blue);
        PrimitiveHelper.SetMaterialTransparent(seaMa);

        seaGo.AddComponent <Sea>();

        return(seaGo);
    }
Пример #9
0
 void SetType() //Sets the units to a random unit type
 {
     if (type == 0)
     {
         this.ChangeMesh(gameObject, PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Cube));
         this.name       = "Factory";
         this.production = 50;
         this.maxHealth  = 200;
         this.health     = 200;
         MaterialSet();
     }
     else if (type == 1)
     {
         this.name      = "Resouce Building";
         this.resources = 1000;
         this.maxHealth = 100;
         this.health    = 100;
         MaterialSet();
     }
     else
     {
         this.ChangeMesh(gameObject, PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Cube));
         this.name       = "Factory";
         this.production = 50;
         this.maxHealth  = 200;
         this.health     = 200;
         MaterialSet();
     }
 }
Пример #10
0
    // ========================================================================== //

    /* public - [Do] Function
     * 외부 객체가 호출(For External class call)*/

    /* public - [Event] Function
     * 프랜드 객체가 호출(For Friend class call)*/
    #endregion Public
    // ========================================================================== //
    #region Protected
    /* protected - [abstract & virtual]         */

    /* protected - [Event] Function
     * 자식 객체가 호출(For Child class call)		*/

    /* protected - Override & Unity API         */

    protected override void OnPlayEvent()
    {
        base.OnPlayEvent();

        _vecPos = PrimitiveHelper.RandomRange(_vecRandom_Min, _vecRandom_Max);
        transform.localPosition = _vecPos;
    }
Пример #11
0
        public static string GetEnumDescription(Type enumType, object enumValue)
        {
            var value = enumValue.ToString();

            if (enumType == typeof(object))
            {
                enumType = GetEnumType(enumValue.GetType());
            }

            if (enumValue is int)
            {
                value = Enum.GetName(enumType, enumValue);
            }

            if (value == null)
            {
                return(enumValue.ToString());
            }

            var field = (enumType.IsNullableType() ? PrimitiveHelper.GetTypeOfNullable(enumType) : enumType).GetField(value);

            if (field == null)
            {
                return(value);
            }

            var attributes =
                (DescriptionAttribute[])field.GetCustomAttributes(typeof(DescriptionAttribute), false);

            return((attributes.Length > 0) ? attributes[0].Description : value);
        }
Пример #12
0
        public void Shake(out bool bIsFinish)
        {
            if (_fRemainShakePow > 0f)
            {
                Vector3 vecShakePos = PrimitiveHelper.RandomRange(vecOriginPos.AddFloat(-_fRemainShakePow), vecOriginPos.AddFloat(_fRemainShakePow));
                if (eShakePosType != EShakePos.All)
                {
                    if (eShakePosType == EShakePos.Y || eShakePosType == EShakePos.YZ || eShakePosType == EShakePos.Z)
                    {
                        vecShakePos.x = vecOriginPos.x;
                    }

                    if (eShakePosType == EShakePos.X || eShakePosType == EShakePos.XZ || eShakePosType == EShakePos.Z)
                    {
                        vecShakePos.y = vecOriginPos.y;
                    }

                    if (eShakePosType == EShakePos.X || eShakePosType == EShakePos.XY || eShakePosType == EShakePos.Y)
                    {
                        vecShakePos.z = vecOriginPos.z;
                    }
                }

                pTransform.position = vecShakePos;
                _fRemainShakePow   -= _fShakeMinusDelta;
                bIsFinish           = false;
            }
            else
            {
                pTransform.position = vecOriginPos;
                bIsFinish           = true;
            }
        }
Пример #13
0
    // ========================== [ Division ] ========================== //

    private IEnumerator CoStartShake()
    {
        _vecOriginPos = transform.localPosition;
        while (_fRemainShakePow > 0f)
        {
            // Vector3 vecOriginPos = transform.localPosition;
            Vector3 vecShakePos = PrimitiveHelper.RandomRange(_vecOriginPos.AddFloat(-_fRemainShakePow), _vecOriginPos.AddFloat(_fRemainShakePow));
            if(_eShakePosType != EShakePos.All)
            {
                if (_eShakePosType == EShakePos.Y || _eShakePosType == EShakePos.YZ || _eShakePosType == EShakePos.Z)
                    vecShakePos.x = _vecOriginPos.x;

                if (_eShakePosType == EShakePos.X || _eShakePosType == EShakePos.XZ|| _eShakePosType == EShakePos.Z)
                    vecShakePos.y = _vecOriginPos.y;

                if (_eShakePosType == EShakePos.X || _eShakePosType == EShakePos.XY || _eShakePosType == EShakePos.Y)
                    vecShakePos.z = _vecOriginPos.z;
            }

            transform.localPosition = vecShakePos;
            _fRemainShakePow -= _fShakeMinusDelta;

            yield return null;
        }

        if (_bBackToOriginPos)
            transform.localPosition = _vecOriginPos;

        yield break;
    }
Пример #14
0
    private void Update()
    {
        if (_bIsShaking)
        {
            if (_fRemainShakePow > 0f)
            {
                Vector3 vecShakePos = PrimitiveHelper.RandomRange(_vecOriginPos.AddFloat(-_fRemainShakePow), _vecOriginPos.AddFloat(_fRemainShakePow));
                if (_eShakePosType != EShakePos.All)
                {
                    if (_eShakePosType == EShakePos.Y || _eShakePosType == EShakePos.YZ || _eShakePosType == EShakePos.Z)
                    {
                        vecShakePos.x = _vecOriginPos.x;
                    }

                    if (_eShakePosType == EShakePos.X || _eShakePosType == EShakePos.XZ || _eShakePosType == EShakePos.Z)
                    {
                        vecShakePos.y = _vecOriginPos.y;
                    }

                    if (_eShakePosType == EShakePos.X || _eShakePosType == EShakePos.XY || _eShakePosType == EShakePos.Y)
                    {
                        vecShakePos.z = _vecOriginPos.z;
                    }
                }

                transform.localPosition = vecShakePos;
                _fRemainShakePow       -= _fShakeMinusDelta;
            }
            else
            {
                transform.localPosition = _vecOriginPos;
                _bIsShaking             = false;
            }
        }
    }
Пример #15
0
    private void OnUpdateDrag(Vector3 v3StartTouchPos, Vector3 v3CurrentTouchPos)
    {
        // Ray 의 첫번째 지점. (터치한 첫번째 좌표 부분부터)
        Vector3 v3IntersectPosOne = PrimitiveHelper.GetPlaneRaycastPos(_sPlaneCurrentAxis, _pCamera.ScreenPointToRay(v3StartTouchPos));
        // Ray 의 두번째 지점. (움직이는 두번째 좌표 까지)
        Vector3 v3IntersectPosTwo = PrimitiveHelper.GetPlaneRaycastPos(_sPlaneCurrentAxis, _pCamera.ScreenPointToRay(v3CurrentTouchPos));

        // 두개의 좌표를 계산 - 마지막 카메라 좌표까지
        Vector3 v3DragOffset = _v3StartCameraPos - (v3IntersectPosTwo - v3IntersectPosOne);

        if (p_fCameraMoveSmoothFactor > 0f)
        {
            _pTransCamera.position = Vector3.Lerp(_pTransCamera.position, v3DragOffset, Time.deltaTime * p_fCameraMoveSmoothFactor);
        }
        else
        {
            _pTransCamera.position = v3DragOffset;
        }

        _pTransCamera.position = ProcClampCamPosition(_pTransCamera.position);

        // 매 프레임마다 이전좌표 현재좌표 계산후 저장 (드래그 끝난 후 자동 드래그때문)
        ProcAddMoveVelocity((_v3PrevCameraPos - _pTransCamera.position) / Time.deltaTime);

        _v3PrevCameraPos = _pTransCamera.position;
    }
Пример #16
0
    static public string CalculateHashPassword(int iLength)
    {
        _pStrBuilder.Length = 0;
        for (int i = 0; i < iLength; i++)
        {
            ERandomCharType eRandomType = (ERandomCharType)Random.Range(0, PrimitiveHelper.GetEnumLength <ERandomCharType>());
            int             iRandomChar = 0;
            switch (eRandomType)
            {
            case ERandomCharType.LowerCase:
                iRandomChar = Random.Range(Convert.ToInt32('a'), Convert.ToInt32('z'));
                _pStrBuilder.Append(Convert.ToChar(iRandomChar));
                break;

            case ERandomCharType.UpperCase:
                iRandomChar = Random.Range(Convert.ToInt32('A'), Convert.ToInt32('Z'));
                _pStrBuilder.Append(Convert.ToChar(iRandomChar));
                break;

            case ERandomCharType.Number:
                iRandomChar = Random.Range(0, 10);
                _pStrBuilder.Append(iRandomChar.ToString());
                break;
            }
        }

        return(_pStrBuilder.ToString());
    }
    /// <summary>
    ///
    /// </summary>
    /// <param name="ps"></param>
    /// <param name="resource"></param>
    /// <param name="rotate">是否旋转模型x轴90度</param>
    /// <returns></returns>
    private static Mesh AssembleMesh(ParticleSystem ps, Dictionary <int, object> resource, bool rotate = false)
    {
        Mesh mesh = null;

        if (ps.SurfId != 0)
        {
            //Surface3D surf = resource[(int)ps.SurfId] as Surface3D;
            //obj = new GameObject("ps.Name");
            //obj.AddComponent<MeshFilter>();
            //obj.AddComponent<MeshRenderer>();
            //obj.GetComponent<MeshRenderer>().sharedMaterial = mtl;

            ps.UnityResourceParam.MeshPath = SceneFileCopy.GetRelativeMeshDir(ps.RootFileName) + ps.Name + ".prefab";

            Surface3D surf = resource[(int)ps.SurfId] as Surface3D;
            mesh      = new Mesh();
            mesh.name = ps.Name;
            int       verticesCountInMesh = surf.VertexVector.Count / surf.SizePerVertex;
            Vector3[] xyz = new Vector3[surf.NumTriangles * 3];
            Vector2[] uv1 = new Vector2[surf.NumTriangles * 3];

            for (int i = 0; i < verticesCountInMesh; ++i)
            {
                //旋转方向
                xyz[i] = new Vector3(
                    surf.VertexVector[i * surf.SizePerVertex + surf.Offset[Surface3D.POSITION] + 0],
                    surf.VertexVector[i * surf.SizePerVertex + surf.Offset[Surface3D.POSITION] + 1],
                    surf.VertexVector[i * surf.SizePerVertex + surf.Offset[Surface3D.POSITION] + 2]
                    );
                uv1[i] = new Vector2(
                    surf.VertexVector[i * surf.SizePerVertex + surf.Offset[Surface3D.UV0] + 0],
                    //unity的UV坐标和as3不一样
                    1 - surf.VertexVector[i * surf.SizePerVertex + surf.Offset[Surface3D.UV0] + 1]
                    );
            }

            int[] triangles = new int[surf.IndexVector.Count];
            for (int i = 0; i < triangles.Length; ++i)
            {
                triangles[i] = (int)surf.IndexVector[i];
            }
            mesh.vertices  = xyz;
            mesh.uv        = uv1;
            mesh.triangles = triangles;
            mesh.RecalculateNormals();

            if (rotate)
            {
                PrimitiveHelper.RotateMeshVertices(mesh, new Vector3(0, 0, 0), new Vector3(90, 0, 0));
                mesh.RecalculateBounds();
                mesh.RecalculateNormals();
            }

            UnityEditor.AssetDatabase.CreateAsset(mesh, ps.UnityResourceParam.MeshPath);
            UnityEditor.AssetDatabase.Refresh();
        }

        return(mesh);
    }
Пример #18
0
        public void OnDrawGizmos()
        {
#if UNITY_EDITOR
            if (!SKSGlobalRenderSettings.Gizmos)
            {
                return;
            }


            //Change Portal colors
            Renderer renderer;

            if (renderer = gameObject.GetComponent <Renderer>())
            {
                Material[] materials = renderer.sharedMaterials;
                if (!OriginalMaterial)
                {
                    OriginalMaterial = new Material(Resources.Load <Material>("Materials/Visible effects/PortalControllerMat"));
                }
                Material material = OriginalMaterial;//new Material(OriginalMaterial);
                material.SetColor("_Color", color);
                renderer.sharedMaterial = material;
            }


            GUIStyle style = new GUIStyle();
            style.normal.textColor = Color.red;


            if (!TargetController)
            {
                Handles.Label(transform.position, "No Target Set", style);
                return;
            }

            if (!PortalMaterial)
            {
                Handles.Label(transform.position, "No Portal Material Set", style);
                return;
            }

            if ((!Mask && !SKSGlobalRenderSettings.ShouldOverrideMask) || (SKSGlobalRenderSettings.ShouldOverrideMask && !SKSGlobalRenderSettings.Mask))
            {
                Handles.Label(transform.position, "No Mask Set", style);
                return;
            }

            if (Application.isPlaying)
            {
                Gizmos.color = color;
                if (PortalScript)
                {
                    Gizmos.matrix  = PortalScript.transform.localToWorldMatrix;
                    Gizmos.matrix *= Matrix4x4.TRS(Vector3.zero, Quaternion.identity, new Vector3(1, 1, 0.1f));
                    Gizmos.DrawMesh(PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Cube));
                }
            }
#endif
        }
Пример #19
0
    public void DoShakeObject(float fShakePow, float fTime)
    {
        _vecOriginPos = _pTransformCached.localPosition;
        Vector3 vecShakePos = PrimitiveHelper.RandomRange(_vecOriginPos.AddFloat(-fShakePow), _vecOriginPos.AddFloat(fShakePow));

        iTween.ShakePosition(_pGameObjectCached, vecShakePos, fTime);
        //if(_bMachineShaking)
        //	PCManagerFramework.instance.DoShakeMobile();
    }
    private static void FillRenderModule(UnityEngine.ParticleSystem ups, ParticleSystem ps)
    {
        ParticleSystemRenderer psr = ups.GetComponent <ParticleSystemRenderer>();

        psr.sortingOrder = ps.Layer;
        var material = UnityEditor.AssetDatabase.LoadAssetAtPath(ps.UnityResourceParam.MaterialPath, typeof(Material)) as Material;

        psr.renderMode = (ParticleSystemRenderMode)ps.RenderParam.BillboardType;
        if (psr.renderMode == ParticleSystemRenderMode.Mesh)
        {
            if (ps.SurfId != 0)
            {
                psr.mesh = UnityEditor.AssetDatabase.LoadAssetAtPath(ps.UnityResourceParam.MeshPath, typeof(Mesh)) as Mesh;
            }
            else
            {
                if (!File.Exists(SceneFileCopy.GetRelativeMeshDir(ps.RootFileName) + "quad90.prefab"))
                {
                    PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Quad, true, SceneFileCopy.GetRelativeMeshDir(ps.RootFileName) + "quad90.prefab");
                }

                psr.mesh = UnityEditor.AssetDatabase.LoadAssetAtPath(SceneFileCopy.GetRelativeMeshDir(ps.RootFileName) + "quad90.prefab", typeof(Mesh)) as Mesh;
            }
        }
        else if (psr.renderMode == ParticleSystemRenderMode.Stretch)
        {
            psr.lengthScale = 1.0f;
            var texture    = material.mainTexture as Texture2D;
            var newtexture = ImageUtil.rotateTexture(texture, true);
            newtexture.alphaIsTransparency = true;
            newtexture.filterMode          = texture.filterMode;
            newtexture.wrapMode            = texture.wrapMode;
            newtexture.name = texture.name + "_rotNeg90";
            //UnityEditor.AssetDatabase.CreateAsset(newtexture, SceneFileCopy.GetRelativeTextureDir(ps.RootFileName) + newtexture.name);
            //UnityEditor.AssetDatabase.Refresh();
            material.SetTexture("_MainTex", newtexture);
            float baseTilingX = 1f;
            float baseTilingY = 1f;
            float baseOffsetX = 0f;
            float baseOffsetY = 0f;
            material.SetTextureScale("_MainTex", new Vector2(baseTilingX, baseTilingY));
            material.SetTextureOffset("_MainTex", new Vector2(baseOffsetX, baseOffsetY));
            uint color = 0xFFFFFFFF;
            material.SetColor("_Color", new Color(((color >> 16) & 0xFF) / 255.0f,
                                                  ((color >> 8) & 0xFF) / 255.0f,
                                                  (color & 0xFF) / 255.0f,
                                                  ((color >> 24) & 0xFF) / 255.0f));
            UnityEditor.AssetDatabase.Refresh();
        }
        //如果有mesh,强制使用meshbillboard 类型
        if (ps.SurfId != 0)
        {
            psr.renderMode = ParticleSystemRenderMode.Mesh;
            psr.mesh       = UnityEditor.AssetDatabase.LoadAssetAtPath(ps.UnityResourceParam.MeshPath, typeof(Mesh)) as Mesh;
        }
        psr.material = material;
    }
Пример #21
0
        public static bool IsLiteralType(this Type type)
        {
            if (PrimitiveHelper.IsNullableType(type))
            {
                type = Nullable.GetUnderlyingType(type);
            }

            return(LiteralTypes.Contains(type) || typeof(Enum).IsAssignableFrom(type));
        }
Пример #22
0
            public static Mesh GetPrimitiveMesh(PrimitiveType type)
            {
                if (!PrimitiveHelper.primitiveMeshes.ContainsKey(type))
                {
                    PrimitiveHelper.CreatePrimitiveMesh(type);
                }

                return(PrimitiveHelper.primitiveMeshes[type]);
            }
Пример #23
0
    public void DoStartTween(float fFrom, float fTo, float fMax)
    {
        float fCalc_From = PrimitiveHelper.GetPercentage_1(fFrom, fMax);
        float fCalc_To   = PrimitiveHelper.GetPercentage_1(fTo, fMax);

        _pTweenProgress.ResetToBeginning();
        _pTweenProgress.from = fCalc_From;
        _pTweenProgress.to   = fCalc_To;
        _pTweenProgress.PlayForward();
    }
 private void Update()
 {
     if (Input.GetMouseButtonDown(0))
     {
         var go = PrimitiveHelper.CreatePrimitive(PrimitiveType.Cube, true);
         var gP = Camera.main.ScreenPointToRay(Input.mousePosition).GetGridPosition();
         go.transform.position = gP;
         Debug.Log(gP);
     }
 }
Пример #25
0
        private void CreateBall()
        {
            GameObject go = PrimitiveHelper.CreatePrimitiveGameObject(PrimitiveType.Sphere, true);

            ball     = go.AddComponent <Rigidbody>();
            go.layer = LayerMask.NameToLayer(LAYER_NAME);
            ball.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;

            go.transform.SetParent(transform.parent);
        }
Пример #26
0
    public static GameObject CreatePrimitive(PrimitiveType type, Material material)
    {
        GameObject gameObject = new GameObject(type.ToString());
        MeshFilter meshFilter = gameObject.AddComponent <MeshFilter>();

        meshFilter.sharedMesh = PrimitiveHelper.GetPrimitiveMesh(type);
        gameObject.AddComponent <MeshRenderer>().material   = material;
        gameObject.AddComponent <MeshCollider>().sharedMesh = meshFilter.sharedMesh;

        return(gameObject);
    }
Пример #27
0
    /* protected - Variable declaration         */

    /* private - Variable declaration           */

    // ========================================================================== //

    /* public - [Do] Function
     * 외부 객체가 호출(For External class call)*/

    /* public - [Event] Function
     * 프랜드 객체가 호출(For Friend class call)*/

    // ========================================================================== //

    /* protected - [abstract & virtual]         */

    /* protected - [Event] Function
     * 자식 객체가 호출(For Child class call)		*/

    /* protected - Override & Unity API         */

    protected override void OnPlayEvent()
    {
        base.OnPlayEvent();

        _vecRotate = PrimitiveHelper.RandomRange(_vecRandomRotateSpeed_Min, _vecRandomRotateSpeed_Max);
        transform.Rotate(_vecRotate);

        if (_bExcuteUpdate)
        {
            StartCoroutine("CoUpdateRotate");
        }
    }
Пример #28
0
    void Awake()
    {
        def      = FindObjectOfType <MarbleSkinDefinitions>();
        allSkins = FindObjectsOfType <MarbleSkin>();
        mat      = GetComponent <Renderer>().material;
        mod      = GetComponent <MeshFilter>().mesh;
        unlock   = FindObjectOfType <SkinUnlockManager>();

        sphere    = PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Sphere);
        marMirror = (Mesh)Resources.Load("Marbles/MirroredMarble", typeof(Mesh));
        marUnique = (Mesh)Resources.Load("Marbles/UniqueMarble", typeof(Mesh));
    }
Пример #29
0
    // Start is called before the first frame update
    void Start()
    {
        // my inital motives/goals
        mGoals    = new Goal[3];
        mGoals[0] = new Goal("Eat", 4);
        mGoals[1] = new Goal("Sleep", 3);
        mGoals[2] = new Goal("Bathroom", 3);

        //// the actions I know how to do
        mActions = new Action[6];

        mActions[0] = new Action("eat a snack", PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Capsule));
        mActions[0].targetGoals.Add(new Goal("Eat", -2f));
        mActions[0].targetGoals.Add(new Goal("Sleep", -1f));
        mActions[0].targetGoals.Add(new Goal("Bathroom", +1f));

        mActions[1] = new Action("sleep in the bed", PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Cube));
        mActions[1].targetGoals.Add(new Goal("Eat", +2f));
        mActions[1].targetGoals.Add(new Goal("Sleep", -4f));
        mActions[1].targetGoals.Add(new Goal("Bathroom", +2f));

        mActions[2] = new Action("visit the bathroom", PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Cylinder));
        mActions[2].targetGoals.Add(new Goal("Eat", 0f));
        mActions[2].targetGoals.Add(new Goal("Sleep", 0f));
        mActions[2].targetGoals.Add(new Goal("Bathroom", -4f));

        mActions[3] = new Action("eat dinner", PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Plane));
        mActions[3].targetGoals.Add(new Goal("Eat", -2f));
        mActions[3].targetGoals.Add(new Goal("Sleep", -1f));
        mActions[3].targetGoals.Add(new Goal("Bathroom", +1f));

        mActions[4] = new Action("Nap on the couch", PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Quad));
        mActions[4].targetGoals.Add(new Goal("Eat", +2f));
        mActions[4].targetGoals.Add(new Goal("Sleep", -4f));
        mActions[4].targetGoals.Add(new Goal("Bathroom", +2f));

        mActions[5] = new Action("Take A Shower", PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Sphere));
        mActions[5].targetGoals.Add(new Goal("Eat", 0f));
        mActions[5].targetGoals.Add(new Goal("Sleep", 0f));
        mActions[5].targetGoals.Add(new Goal("Bathroom", -4f));

        // the rate my goals change just as a result of time passing
        mChangeOverTime = new Action("tick");
        mChangeOverTime.targetGoals.Add(new Goal("Eat", +4f));
        mChangeOverTime.targetGoals.Add(new Goal("Sleep", +1f));
        mChangeOverTime.targetGoals.Add(new Goal("Bathroom", +2f));

        Debug.Log("Starting clock. One hour will pass every " + TICK_LENGTH + " seconds.");
        InvokeRepeating("Tick", 0f, TICK_LENGTH);

        Debug.Log("Hit E to do something.");
    }
Пример #30
0
    void OnDrawGizmosSelected()
    {
        Gizmos.color = navigable ? new Color(1.0f, 1.0f, 0, 0.5f) : new Color(1.0f, 0, 0, 0.5f);
        Gizmos.DrawCube(new Vector3(xP, 0, zP), new Vector3(xS, 0.1f, zS));
        Gizmos.color = Color.black;
        Gizmos.DrawWireCube(new Vector3(xP, 0, zP), new Vector3(xS, 0.1f, zS));
        Gizmos.color = new Color(0.0f, 1.0f, 1.0f);
        Vector3 a = new Vector3(xP, 0.055f, zP);

        foreach (NavigationPlane connection in connections)
        {
            if (connection != null)
            {
                Vector3 b     = new Vector3(connection.xP, 0.055f, connection.zP);
                Vector3 arrow = 0.4f * (Quaternion.Euler(0, -45, 0) * (a - b).normalized);
                Gizmos.DrawLine(a, b);
                Gizmos.DrawLine(b, b + arrow);
                Gizmos.DrawLine(b, b + (Quaternion.Euler(0, 90, 0) * arrow));
            }
        }
        foreach (Exception exception in exceptions)
        {
            if (exception.shape == ExceptionShape.CIRCLE)
            {
                Gizmos.color = exception.navigable ? Color.green : Color.red;
                Gizmos.DrawMesh(PrimitiveHelper.GetPrimitiveMesh(PrimitiveType.Cylinder),
                                new Vector3(exception.xP, 0, exception.zP), Quaternion.identity,
                                new Vector3(exception.xS * 2, 0.0525f, exception.xS * 2));
            }
            else if (exception.shape == ExceptionShape.RECT)
            {
                Gizmos.color = exception.navigable ? Color.green : Color.red;
                Gizmos.DrawCube(new Vector3(exception.xP, 0, exception.zP),
                                new Vector3(exception.xS, 0.105f, exception.zS));
            }
            else if (exception.shape == ExceptionShape.ROT_RECT)
            {
                Matrix4x4 push = Gizmos.matrix;
                Gizmos.matrix = Matrix4x4.TRS(new Vector3(exception.xP, 0, exception.zP),
                                              Quaternion.EulerRotation(0, exception.rot, 0), Vector3.one) *
                                Matrix4x4.Translate(new Vector3(-exception.xP, 0, -exception.zP)) * Gizmos.matrix;

                Gizmos.color = exception.navigable ? Color.green : Color.red;
                Gizmos.DrawCube(new Vector3(exception.xP, 0, exception.zP),
                                new Vector3(exception.xS, 0.105f, exception.zS));
                Gizmos.matrix = push;
            }
        }
        UnityEditor.Handles.Label(new Vector3(xP, 0.5f, zP), name, GUI.skin.button);
    }